View | Details | Raw Unified | Return to ticket 8540
Collapse All | Expand All

(-)a/src/slurmctld/step_mgr.c (-5 / +17 lines)
Lines 1862-1868 static int _count_cpus(struct job_record *job_ptr, bitstr_t *bitmap, Link Here
1862
 *	and step's allocation */
1862
 *	and step's allocation */
1863
static void _pick_step_cores(struct step_record *step_ptr,
1863
static void _pick_step_cores(struct step_record *step_ptr,
1864
			     job_resources_t *job_resrcs_ptr,
1864
			     job_resources_t *job_resrcs_ptr,
1865
			     int job_node_inx, uint16_t task_cnt)
1865
			     int job_node_inx, uint16_t task_cnt,
1866
			     uint16_t tasks_per_core)
1866
{
1867
{
1867
	int bit_offset, core_inx, i, sock_inx;
1868
	int bit_offset, core_inx, i, sock_inx;
1868
	uint16_t sockets, cores;
1869
	uint16_t sockets, cores;
Lines 1878-1889 static void _pick_step_cores(struct step_record *step_ptr, Link Here
1878
				  &sockets, &cores))
1879
				  &sockets, &cores))
1879
		fatal("get_job_resources_cnt");
1880
		fatal("get_job_resources_cnt");
1880
1881
1881
	if (task_cnt == (cores * sockets))
1882
	if (task_cnt == (cores * sockets * tasks_per_core))
1882
		use_all_cores = true;
1883
		use_all_cores = true;
1883
	else
1884
	else
1884
		use_all_cores = false;
1885
		use_all_cores = false;
1886
1885
	if (step_ptr->cpus_per_task > 0)
1887
	if (step_ptr->cpus_per_task > 0)
1886
		cpu_cnt *= step_ptr->cpus_per_task;
1888
		cpu_cnt *= step_ptr->cpus_per_task / tasks_per_core;
1887
1889
1888
	/* select idle cores first */
1890
	/* select idle cores first */
1889
	for (sock_inx=0; sock_inx<sockets; sock_inx++) {
1891
	for (sock_inx=0; sock_inx<sockets; sock_inx++) {
Lines 2029-2038 extern void step_alloc_lps(struct step_record *step_ptr) Link Here
2029
			}
2031
			}
2030
		}
2032
		}
2031
		if (pick_step_cores) {
2033
		if (pick_step_cores) {
2034
			uint16_t tasks_per_core = 1;
2035
			if ((job_resrcs_ptr->whole_node == 1)
2036
			    || !(slurmctld_conf.select_type_param
2037
				& (CR_CORE | CR_SOCKET))
2038
			    || !(job_ptr->details &&
2039
				(job_ptr->details->cpu_bind_type != NO_VAL16)
2040
				&& (job_ptr->details->cpu_bind_type
2041
				    & CPU_BIND_ONE_THREAD_PER_CORE)))
2042
				tasks_per_core =
2043
					node_record_table_ptr[i_node].threads;
2032
			_pick_step_cores(step_ptr, job_resrcs_ptr,
2044
			_pick_step_cores(step_ptr, job_resrcs_ptr,
2033
					 job_node_inx,
2045
					 job_node_inx,
2034
					 step_ptr->step_layout->
2046
					 step_ptr->step_layout->
2035
					 tasks[step_node_inx]);
2047
					 tasks[step_node_inx],
2048
					 tasks_per_core);
2036
		}
2049
		}
2037
		if (slurmctld_conf.debug_flags & DEBUG_FLAG_CPU_BIND)
2050
		if (slurmctld_conf.debug_flags & DEBUG_FLAG_CPU_BIND)
2038
			_dump_step_layout(step_ptr);
2051
			_dump_step_layout(step_ptr);
2039
- 

Return to ticket 8540