Skip to content

Commit 78f1ddb

Browse files
committed
Remove umf_numa_flags_t
There was only one possible value (UMF_NUMA_FLAG_STRICT) but it seems to mostly apply to page migration (i.e. when MPOL_MF_MOVE is specified). Since UMF does not support this for now, there's no point in keeping this flag. During allocation time, we still have UMF_NUMA_MODE_PREFFERED that can be used to request a 'preffered' binding. For any other mode, we require mbind to succeed.
1 parent 6665ae5 commit 78f1ddb

File tree

6 files changed

+5
-56
lines changed

6 files changed

+5
-56
lines changed

benchmark/ubench.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ static umf_os_memory_provider_params_t UMF_OS_MEMORY_PROVIDER_PARAMS = {
104104
/* .nodemask = */ NULL,
105105
/* .maxnode = */ 0,
106106
/* .numa_mode = */ UMF_NUMA_MODE_DEFAULT,
107-
/* .numa_flags = */ 0,
108107

109108
// others
110109
/* .traces = */ OS_MEMORY_PROVIDER_TRACE,

include/umf/providers/provider_os_memory.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,12 @@ typedef enum umf_numa_mode_t {
3434
UMF_NUMA_MODE_DEFAULT,
3535
UMF_NUMA_MODE_BIND,
3636
UMF_NUMA_MODE_INTERLEAVE,
37-
/* TODO: consider removing UMF_NUMA_MODE_PREFERRED and rely only on combination of BIND mode and STRICT flag like hwloc */
3837
UMF_NUMA_MODE_PREFERRED,
3938
UMF_NUMA_MODE_LOCAL,
4039
UMF_NUMA_MODE_STATIC_NODES,
4140
UMF_NUMA_MODE_RELATIVE_NODES,
4241
} umf_numa_mode_t;
4342

44-
typedef enum umf_numa_flags_t {
45-
UMF_NUMA_FLAGS_STRICT = (1 << 0),
46-
47-
UMF_NUMA_FLAGS_MAX // must be the last one
48-
} umf_numa_flags_t;
49-
5043
typedef enum umf_purge_advise_t {
5144
UMF_PURGE_LAZY,
5245
UMF_PURGE_FORCE,
@@ -67,8 +60,6 @@ typedef struct umf_os_memory_provider_params_t {
6760
unsigned long maxnode;
6861
/// flag that relates to one of the MPOL_* flags used in internal mbind() calls
6962
umf_numa_mode_t numa_mode;
70-
/// combination of 'umf_numa_flags_t' flags
71-
unsigned numa_flags;
7263

7364
// others
7465
/// log level of debug traces
@@ -96,7 +87,6 @@ umfOsMemoryProviderParamsDefault(void) {
9687
NULL, /* nodemask */
9788
0, /* maxnode */
9889
UMF_NUMA_MODE_DEFAULT, /* numa_mode */
99-
0, /* numa_flags */
10090
0 /* traces */
10191
};
10292

src/memory_targets/memory_target_numa.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,6 @@ static enum umf_result_t numa_memory_provider_create_from_memspace(
144144
params.nodemask = nodemask;
145145
params.maxnode = maxnode;
146146
params.numa_mode = UMF_NUMA_MODE_BIND;
147-
params.numa_flags = UMF_NUMA_FLAGS_STRICT;
148147

149148
umf_memory_provider_handle_t numaProvider = NULL;
150149
ret = umfMemoryProviderCreate(umfOsMemoryProviderOps(), &params,

src/provider/provider_os_memory.c

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ typedef struct umf_os_memory_provider_config_t {
2727
unsigned long *nodemask;
2828
unsigned long maxnode;
2929
unsigned numa_mode;
30-
unsigned numa_flags; // combination of OS-specific NUMA flags
3130

3231
// others
3332
int traces; // log level of debug traces
@@ -168,26 +167,14 @@ static hwloc_membind_policy_t translate_numa_mode(umf_numa_mode_t mode,
168167
return -1;
169168
}
170169

171-
static int translate_one_numa_flag(unsigned numa_flag) {
172-
switch (numa_flag) {
173-
case UMF_NUMA_FLAGS_STRICT:
174-
return HWLOC_MEMBIND_STRICT;
175-
default:
176-
return -1; /* unsupported */
177-
}
178-
return -1;
179-
}
180-
181-
static int translate_numa_flags(unsigned numa_flags, umf_numa_mode_t mode) {
182-
// translate numa_flags - combination of 'umf_numa_flags_t' flags
183-
int flags = os_translate_flags(numa_flags, UMF_NUMA_FLAGS_MAX,
184-
translate_one_numa_flag);
170+
static int getHwlocMembindFlags(umf_numa_mode_t mode) {
171+
/* UMF always operates on NUMA nodes */
172+
int flags = HWLOC_MEMBIND_BYNODESET;
185173
if (mode == UMF_NUMA_MODE_BIND) {
186174
/* HWLOC uses MPOL_PREFERRED[_MANY] unless HWLOC_MEMBIND_STRICT is specified */
187175
flags |= HWLOC_MEMBIND_STRICT;
188176
}
189-
/* UMF always operates on NUMA nodes */
190-
return flags | HWLOC_MEMBIND_BYNODESET;
177+
return flags;
191178
}
192179

193180
static umf_result_t translate_params(umf_os_memory_provider_params_t *in_params,
@@ -228,16 +215,7 @@ static umf_result_t translate_params(umf_os_memory_provider_params_t *in_params,
228215
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
229216
}
230217
provider->numa_policy = ret;
231-
232-
ret = translate_numa_flags(in_params->numa_flags, in_params->numa_mode);
233-
if (ret < 0) {
234-
if (in_params->traces) {
235-
fprintf(stderr, "error: incorrect NUMA flags: %u\n",
236-
in_params->numa_flags);
237-
}
238-
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
239-
}
240-
provider->numa_flags = ret;
218+
provider->numa_flags = getHwlocMembindFlags(in_params->numa_mode);
241219

242220
return nodemask_to_hwloc_nodeset(in_params->nodemask, in_params->maxnode,
243221
&provider->nodeset);

test/provider_os_memory.cpp

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -143,22 +143,6 @@ TEST_F(test, create_WRONG_NUMA_MODE) {
143143
ASSERT_EQ(os_memory_provider, nullptr);
144144
}
145145

146-
TEST_F(test, create_WRONG_NUMA_FLAGS) {
147-
umf_result_t umf_result;
148-
umf_memory_provider_handle_t os_memory_provider = nullptr;
149-
umf_os_memory_provider_params_t os_memory_provider_params =
150-
umfOsMemoryProviderParamsDefault();
151-
152-
// wrong NUMA flags
153-
os_memory_provider_params.numa_flags = (unsigned int)-1;
154-
155-
umf_result = umfMemoryProviderCreate(umfOsMemoryProviderOps(),
156-
&os_memory_provider_params,
157-
&os_memory_provider);
158-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_INVALID_ARGUMENT);
159-
ASSERT_EQ(os_memory_provider, nullptr);
160-
}
161-
162146
// positive tests using test_alloc_free_success
163147

164148
auto defaultParams = umfOsMemoryProviderParamsDefault();

test/provider_os_memory_config.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ INSTANTIATE_TEST_SUITE_P(numa_modes, providerConfigTestNumaMode,
142142
testing::Values(UMF_NUMA_MODE_DEFAULT,
143143
UMF_NUMA_MODE_BIND,
144144
UMF_NUMA_MODE_INTERLEAVE,
145-
UMF_NUMA_MODE_PREFERRED,
146145
UMF_NUMA_MODE_LOCAL));
147146
#ifndef MPOL_LOCAL
148147
#define MPOL_LOCAL 4

0 commit comments

Comments
 (0)