@@ -28,7 +28,6 @@ typedef struct umf_os_memory_provider_config_t {
2828 unsigned long * nodemask ;
2929 unsigned long maxnode ;
3030 unsigned numa_mode ;
31- unsigned numa_flags ; // combination of OS-specific NUMA flags
3231
3332 // others
3433 int traces ; // log level of debug traces
@@ -166,38 +165,18 @@ static hwloc_membind_policy_t translate_numa_mode(umf_numa_mode_t mode,
166165 return -1 ;
167166 }
168167 return HWLOC_MEMBIND_BIND ;
169- case UMF_NUMA_MODE_STATIC_NODES : // unsupported
170- // MPOL_F_STATIC_NODES is undefined
171- return -1 ;
172- case UMF_NUMA_MODE_RELATIVE_NODES : // unsupported
173- // MPOL_F_RELATIVE_NODES is undefined
174- return -1 ;
175168 }
176169 return -1 ;
177170}
178171
179- static int translate_one_numa_flag (unsigned numa_flag ) {
180- switch (numa_flag ) {
181- case UMF_NUMA_FLAGS_STRICT :
182- return HWLOC_MEMBIND_STRICT ;
183- case UMF_NUMA_FLAGS_MOVE :
184- return HWLOC_MEMBIND_MIGRATE ;
185- case UMF_NUMA_FLAGS_MOVE_ALL :
186- return -1 ; /* unsupported */
187- }
188- return -1 ;
189- }
190-
191- static int translate_numa_flags (unsigned numa_flags , umf_numa_mode_t mode ) {
192- // translate numa_flags - combination of 'umf_numa_flags_t' flags
193- int flags = os_translate_flags (numa_flags , UMF_NUMA_FLAGS_MAX ,
194- translate_one_numa_flag );
172+ static int getHwlocMembindFlags (umf_numa_mode_t mode ) {
173+ /* UMF always operates on NUMA nodes */
174+ int flags = HWLOC_MEMBIND_BYNODESET ;
195175 if (mode == UMF_NUMA_MODE_BIND ) {
196176 /* HWLOC uses MPOL_PREFERRED[_MANY] unless HWLOC_MEMBIND_STRICT is specified */
197177 flags |= HWLOC_MEMBIND_STRICT ;
198178 }
199- /* UMF always operates on NUMA nodes */
200- return flags | HWLOC_MEMBIND_BYNODESET ;
179+ return flags ;
201180}
202181
203182static umf_result_t translate_params (umf_os_memory_provider_params_t * in_params ,
@@ -238,16 +217,7 @@ static umf_result_t translate_params(umf_os_memory_provider_params_t *in_params,
238217 return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
239218 }
240219 provider -> numa_policy = ret ;
241-
242- ret = translate_numa_flags (in_params -> numa_flags , in_params -> numa_mode );
243- if (ret < 0 ) {
244- if (in_params -> traces ) {
245- fprintf (stderr , "error: incorrect NUMA flags: %u\n" ,
246- in_params -> numa_flags );
247- }
248- return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
249- }
250- provider -> numa_flags = ret ;
220+ provider -> numa_flags = getHwlocMembindFlags (in_params -> numa_mode );
251221
252222 return nodemask_to_hwloc_nodeset (in_params -> nodemask , in_params -> maxnode ,
253223 & provider -> nodeset );
0 commit comments