Skip to content

Commit 900e5aa

Browse files
authored
Merge pull request #209 from igchor/os_provider
Cleanup OS provider config API
2 parents 085e4ba + 8a63b43 commit 900e5aa

File tree

6 files changed

+5
-68
lines changed

6 files changed

+5
-68
lines changed

benchmark/ubench.c

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

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

include/umf/providers/provider_os_memory.h

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,10 @@ 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,
40-
UMF_NUMA_MODE_STATIC_NODES,
41-
UMF_NUMA_MODE_RELATIVE_NODES,
4239
} umf_numa_mode_t;
4340

44-
typedef enum umf_numa_flags_t {
45-
UMF_NUMA_FLAGS_STRICT = (1 << 0),
46-
UMF_NUMA_FLAGS_MOVE = (1 << 1),
47-
UMF_NUMA_FLAGS_MOVE_ALL = (1 << 2),
48-
49-
UMF_NUMA_FLAGS_MAX // must be the last one
50-
} umf_numa_flags_t;
51-
5241
typedef enum umf_purge_advise_t {
5342
UMF_PURGE_LAZY,
5443
UMF_PURGE_FORCE,
@@ -69,8 +58,6 @@ typedef struct umf_os_memory_provider_params_t {
6958
unsigned long maxnode;
7059
/// flag that relates to one of the MPOL_* flags used in internal mbind() calls
7160
umf_numa_mode_t numa_mode;
72-
/// combination of 'umf_numa_flags_t' flags
73-
unsigned numa_flags;
7461

7562
// others
7663
/// log level of debug traces
@@ -99,7 +86,6 @@ umfOsMemoryProviderParamsDefault(void) {
9986
NULL, /* nodemask */
10087
0, /* maxnode */
10188
UMF_NUMA_MODE_DEFAULT, /* numa_mode */
102-
0, /* numa_flags */
10389
0 /* traces */
10490
};
10591

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 & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -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

203182
static 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);

test/provider_os_memory.cpp

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

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

165149
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)