Bläddra i källkod

use enum for drs error reporting

Olivier Aumage 7 år sedan
förälder
incheckning
331daef2fc
2 ändrade filer med 57 tillägg och 79 borttagningar
  1. 8 3
      starpurm/include/starpurm.h
  2. 49 76
      starpurm/src/starpurm.c

+ 8 - 3
starpurm/include/starpurm.h

@@ -27,11 +27,16 @@ extern "C"
 /* type mapping */
 enum e_starpurm_drs_ret
 {
-	starpurm_DRS_SUCCESS,
-	starpurm_DRS_DISABLD,
-	starpurm_DRS_PERM,
+	starpurm_DRS_SUCCESS = 0,
+
+	starpurm_DRS_DISABLD = -1,
+	starpurm_DRS_PERM    = -2,
+	starpurm_DRS_EINVAL  = -3
+#if 0
+	/* Unused for now */
 	starpurm_DRS_NOTED,
 	starpurm_DRS_REQST
+#endif
 };
 typedef int starpurm_drs_ret_t;
 typedef void *starpurm_drs_desc_t;

+ 49 - 76
starpurm/src/starpurm.c

@@ -359,7 +359,7 @@ static starpurm_drs_ret_t _starpurm_update_cpuset(hwloc_cpuset_t cpuset)
 	struct s_starpurm *rm = _starpurm;
 	if (hwloc_bitmap_isequal(cpuset, rm->selected_cpuset))
 	{
-		return 0;
+		return starpurm_DRS_SUCCESS;
 	}
 	pthread_mutex_lock(&rm->temporary_ctxs_mutex);
 	if (rm->starpu_in_pause)
@@ -448,7 +448,7 @@ static starpurm_drs_ret_t _starpurm_update_cpuset(hwloc_cpuset_t cpuset)
 		starpu_pause();
 	}
 	pthread_mutex_unlock(&rm->temporary_ctxs_mutex);
-	return 0;
+	return starpurm_DRS_SUCCESS;
 }
 
 static unsigned _starpurm_temporary_context_alloc(hwloc_cpuset_t cpuset)
@@ -535,7 +535,7 @@ static starpurm_drs_ret_t _starpurm_set_ncpus(unsigned int ncpus)
 	}
 	if (ncpus == rm->selected_ncpus)
 	{
-		return 0;
+		return starpurm_DRS_SUCCESS;
 	}
 	pthread_mutex_lock(&rm->temporary_ctxs_mutex);
 	if (rm->starpu_in_pause)
@@ -584,7 +584,7 @@ static starpurm_drs_ret_t _starpurm_set_ncpus(unsigned int ncpus)
 		starpu_pause();
 	}
 	pthread_mutex_unlock(&rm->temporary_ctxs_mutex);
-	return 0;
+	return starpurm_DRS_SUCCESS;
 }
 
 /* Initialize rm state for StarPU */
@@ -967,7 +967,7 @@ starpurm_drs_ret_t starpurm_set_drs_enable(starpurm_drs_desc_t *spd)
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	rm->dynamic_resource_sharing = 1;
-	return 0;
+	return starpurm_DRS_SUCCESS;
 }
 
 starpurm_drs_ret_t starpurm_set_drs_disable(starpurm_drs_desc_t *spd)
@@ -978,7 +978,7 @@ starpurm_drs_ret_t starpurm_set_drs_disable(starpurm_drs_desc_t *spd)
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	rm->dynamic_resource_sharing = 0;
-	return 0;
+	return starpurm_DRS_SUCCESS;
 }
 
 int starpurm_drs_enabled_p(void)
@@ -998,7 +998,7 @@ starpurm_drs_ret_t starpurm_set_max_parallelism(starpurm_drs_desc_t *spd, int nc
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	if (ncpus > rm->nunits_by_type[starpurm_unit_cpu])
 	{
 		ncpus = rm->nunits_by_type[starpurm_unit_cpu];
@@ -1008,7 +1008,7 @@ starpurm_drs_ret_t starpurm_set_max_parallelism(starpurm_drs_desc_t *spd, int nc
 	{
 		return _starpurm_set_ncpus(ncpus);
 	}
-	return 0;
+	return starpurm_DRS_SUCCESS;
 }
 
 
@@ -1017,13 +1017,9 @@ starpurm_drs_ret_t starpurm_callback_set(starpurm_drs_desc_t *spd, starpurm_drs_
 	(void)spd;
 	(void)which;
 	(void)callback;
-	assert(_starpurm != NULL);
-	assert(_starpurm->state != state_uninitialized);
-	struct s_starpurm *rm = _starpurm;
-	if (!rm->dynamic_resource_sharing)
-		return -1;
-	/* TODO */
-	return 0;
+	/* unimplemented */
+	assert(0);
+	return starpurm_DRS_PERM;
 }
 
 starpurm_drs_ret_t starpurm_callback_get(starpurm_drs_desc_t *spd, starpurm_drs_cbs_t which, starpurm_drs_cb_t *callback)
@@ -1031,13 +1027,9 @@ starpurm_drs_ret_t starpurm_callback_get(starpurm_drs_desc_t *spd, starpurm_drs_
 	(void)spd;
 	(void)which;
 	(void)callback;
-	assert(_starpurm != NULL);
-	assert(_starpurm->state != state_uninitialized);
-	struct s_starpurm *rm = _starpurm;
-	if (!rm->dynamic_resource_sharing)
-		return -1;
-	/* TODO */
-	return 0;
+	/* unimplemented */
+	assert(0);
+	return starpurm_DRS_PERM;
 }
 
 starpurm_drs_ret_t starpurm_assign_cpu_to_starpu(starpurm_drs_desc_t *spd, int cpuid)
@@ -1046,7 +1038,7 @@ starpurm_drs_ret_t starpurm_assign_cpu_to_starpu(starpurm_drs_desc_t *spd, int c
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	starpurm_drs_ret_t ret = 0;
 	assert(hwloc_bitmap_isset(rm->global_cpuset, cpuid));
 	if (!hwloc_bitmap_isset(rm->selected_cpuset, cpuid))
@@ -1066,7 +1058,7 @@ starpurm_drs_ret_t starpurm_assign_cpus_to_starpu(starpurm_drs_desc_t *spd, int
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	/* add ncpus more CPUs to the CPUs pool */
 	return _starpurm_set_ncpus(rm->selected_ncpus+ncpus);
 }
@@ -1078,7 +1070,7 @@ starpurm_drs_ret_t starpurm_assign_cpu_mask_to_starpu(starpurm_drs_desc_t *spd,
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	hwloc_cpuset_t temp_cpuset = hwloc_bitmap_dup(rm->selected_cpuset);
 	hwloc_bitmap_or(temp_cpuset, temp_cpuset, mask);
 	starpurm_drs_ret_t ret = _starpurm_update_cpuset(temp_cpuset);
@@ -1092,7 +1084,7 @@ starpurm_drs_ret_t starpurm_assign_all_cpus_to_starpu(starpurm_drs_desc_t *spd)
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	return starpurm_assign_cpus_to_starpu(spd, rm->nunits_by_type[starpurm_unit_cpu]);
 }
 
@@ -1102,7 +1094,7 @@ starpurm_drs_ret_t starpurm_withdraw_cpu_from_starpu(starpurm_drs_desc_t *spd, i
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	starpurm_drs_ret_t ret = 0;
 	assert(hwloc_bitmap_isset(rm->global_cpuset, cpuid));
 	if (hwloc_bitmap_isset(rm->selected_cpuset, cpuid))
@@ -1122,7 +1114,7 @@ starpurm_drs_ret_t starpurm_withdraw_cpus_from_starpu(starpurm_drs_desc_t *spd,
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	/* add ncpus more CPUs to the CPUs pool */
 	starpurm_drs_ret_t ret = 0;
 	if (ncpus <= rm->nunits_by_type[starpurm_unit_cpu])
@@ -1143,7 +1135,7 @@ starpurm_drs_ret_t starpurm_withdraw_cpu_mask_from_starpu(starpurm_drs_desc_t *s
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	hwloc_cpuset_t temp_cpuset = hwloc_bitmap_dup(rm->selected_cpuset);
 	hwloc_bitmap_andnot(temp_cpuset, temp_cpuset, mask);
 	starpurm_drs_ret_t ret = _starpurm_update_cpuset(temp_cpuset);
@@ -1157,7 +1149,7 @@ starpurm_drs_ret_t starpurm_withdraw_all_cpus_from_starpu(starpurm_drs_desc_t *s
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	return starpurm_withdraw_cpus_from_starpu(spd, rm->nunits_by_type[starpurm_unit_cpu]);
 }
 
@@ -1239,53 +1231,34 @@ starpurm_drs_ret_t starpurm_return_cpu(starpurm_drs_desc_t *spd, int cpuid)
 /* Pause/resume */
 starpurm_drs_ret_t starpurm_create_block_condition(starpurm_block_cond_t *cond)
 {
-	assert(_starpurm != NULL);
-	assert(_starpurm->state != state_uninitialized);
-	struct s_starpurm *rm = _starpurm;
-	if (!rm->dynamic_resource_sharing)
-		return -1;
-	return 0;
+	/* unimplemented */
+	assert(0);
+	return starpurm_DRS_PERM;
 }
 
 void starpurm_block_current_task(starpurm_block_cond_t *cond)
 {
-	assert(_starpurm != NULL);
-	assert(_starpurm->state != state_uninitialized);
-	struct s_starpurm *rm = _starpurm;
-	if (!rm->dynamic_resource_sharing)
-		return;
-	/* TODO */
+	/* unimplemented */
+	assert(0);
 }
 
 void starpurm_signal_block_condition(starpurm_block_cond_t *cond)
 {
-	assert(_starpurm != NULL);
-	assert(_starpurm->state != state_uninitialized);
-	struct s_starpurm *rm = _starpurm;
-	if (!rm->dynamic_resource_sharing)
-		return;
-	/* TODO */
+	/* unimplemented */
+	assert(0);
 }
 
  
 void starpurm_register_polling_service(const char *service_name, starpurm_polling_t function, void *data)
 {
-	assert(_starpurm != NULL);
-	assert(_starpurm->state != state_uninitialized);
-	struct s_starpurm *rm = _starpurm;
-	if (!rm->dynamic_resource_sharing)
-		return;
-	/* TODO */
+	/* unimplemented */
+	assert(0);
 }
 
 void starpurm_unregister_polling_service(const char *service_name, starpurm_polling_t function, void *data)
 {
-	assert(_starpurm != NULL);
-	assert(_starpurm->state != state_uninitialized);
-	struct s_starpurm *rm = _starpurm;
-	if (!rm->dynamic_resource_sharing)
-		return;
-	/* TODO */
+	/* unimplemented */
+	assert(0);
 }
 
 /* devices */
@@ -1346,11 +1319,11 @@ starpurm_drs_ret_t starpurm_assign_device_to_starpu(starpurm_drs_desc_t *spd, in
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	if (type_id < 0 || type_id >= starpurm_unit_ntypes)
-		return -1;
+		return starpurm_DRS_EINVAL;
 	if (unit_rank < 0 || unit_rank >= rm->nunits_by_type[type_id])
-		return -1;
+		return starpurm_DRS_EINVAL;
 	hwloc_cpuset_t temp_cpuset = hwloc_bitmap_dup(rm->selected_cpuset);
 	hwloc_bitmap_or(temp_cpuset, temp_cpuset, rm->units[rm->unit_offsets_by_type[type_id] + unit_rank].worker_cpuset);
 	starpurm_drs_ret_t ret = _starpurm_update_cpuset(temp_cpuset);
@@ -1365,9 +1338,9 @@ starpurm_drs_ret_t starpurm_assign_devices_to_starpu(starpurm_drs_desc_t *spd, i
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	if (type_id < 0 || type_id >= starpurm_unit_ntypes)
-		return -1;
+		return starpurm_DRS_EINVAL;
 	hwloc_cpuset_t temp_cpuset = hwloc_bitmap_dup(rm->selected_cpuset);
 	if (ndevices > rm->nunits_by_type[type_id])
 	{
@@ -1390,7 +1363,7 @@ starpurm_drs_ret_t starpurm_assign_device_mask_to_starpu(starpurm_drs_desc_t *sp
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	hwloc_cpuset_t temp_cpuset = hwloc_bitmap_dup(rm->selected_cpuset);
 	hwloc_bitmap_or(temp_cpuset, temp_cpuset, mask);
 	starpurm_drs_ret_t ret = _starpurm_update_cpuset(temp_cpuset);
@@ -1404,9 +1377,9 @@ starpurm_drs_ret_t starpurm_assign_all_devices_to_starpu(starpurm_drs_desc_t *sp
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	if (type_id < 0 || type_id >= starpurm_unit_ntypes)
-		return -1;
+		return starpurm_DRS_EINVAL;
 	return starpurm_assign_devices_to_starpu(spd, type_id, rm->nunits_by_type[type_id]);
 }
 
@@ -1416,11 +1389,11 @@ starpurm_drs_ret_t starpurm_withdraw_device_from_starpu(starpurm_drs_desc_t *spd
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	if (type_id < 0 || type_id >= starpurm_unit_ntypes)
-		return -1;
+		return starpurm_DRS_EINVAL;
 	if (unit_rank < 0 || unit_rank >= rm->nunits_by_type[type_id])
-		return -1;
+		return starpurm_DRS_EINVAL;
 	hwloc_cpuset_t temp_cpuset = hwloc_bitmap_dup(rm->selected_cpuset);
 	hwloc_bitmap_andnot(temp_cpuset, temp_cpuset, rm->units[rm->unit_offsets_by_type[type_id] + unit_rank].worker_cpuset);
 	starpurm_drs_ret_t ret = _starpurm_update_cpuset(temp_cpuset);
@@ -1435,9 +1408,9 @@ starpurm_drs_ret_t starpurm_withdraw_devices_from_starpu(starpurm_drs_desc_t *sp
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	if (type_id < 0 || type_id >= starpurm_unit_ntypes)
-		return -1;
+		return starpurm_DRS_EINVAL;
 	hwloc_cpuset_t temp_cpuset = hwloc_bitmap_dup(rm->selected_cpuset);
 	if (ndevices > rm->nunits_by_type[type_id])
 	{
@@ -1460,7 +1433,7 @@ starpurm_drs_ret_t starpurm_withdraw_device_mask_from_starpu(starpurm_drs_desc_t
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	hwloc_cpuset_t temp_cpuset = hwloc_bitmap_dup(rm->selected_cpuset);
 	hwloc_bitmap_andnot(temp_cpuset, temp_cpuset, mask);
 	starpurm_drs_ret_t ret = _starpurm_update_cpuset(temp_cpuset);
@@ -1474,9 +1447,9 @@ starpurm_drs_ret_t starpurm_withdraw_all_devices_from_starpu(starpurm_drs_desc_t
 	assert(_starpurm->state != state_uninitialized);
 	struct s_starpurm *rm = _starpurm;
 	if (!rm->dynamic_resource_sharing)
-		return -1;
+		return starpurm_DRS_DISABLD;
 	if (type_id < 0 || type_id >= starpurm_unit_ntypes)
-		return -1;
+		return starpurm_DRS_EINVAL;
 	return starpurm_withdraw_devices_from_starpu(spd, type_id, rm->nunits_by_type[type_id]);
 }