Skip to content

Commit ddfb338

Browse files
authored
Merge pull request #564 from lplewa/export
add to header and export umfMemspaceCreateFromNumaArray
2 parents e72c779 + 7faca89 commit ddfb338

16 files changed

+53
-81
lines changed

include/umf/memspace.h

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ extern "C" {
2020
#endif
2121

2222
typedef struct umf_memspace_t *umf_memspace_handle_t;
23+
typedef const struct umf_memspace_t *umf_const_memspace_handle_t;
2324

2425
///
2526
/// \brief Creates new memory pool from memspace and policy.
@@ -28,7 +29,7 @@ typedef struct umf_memspace_t *umf_memspace_handle_t;
2829
/// \param hPool [out] handle to the newly created memory pool
2930
/// \return UMF_RESULT_SUCCESS on success or appropriate error code on failure.
3031
///
31-
umf_result_t umfPoolCreateFromMemspace(umf_memspace_handle_t hMemspace,
32+
umf_result_t umfPoolCreateFromMemspace(umf_const_memspace_handle_t hMemspace,
3233
umf_const_mempolicy_handle_t hPolicy,
3334
umf_memory_pool_handle_t *hPool);
3435

@@ -40,33 +41,48 @@ umf_result_t umfPoolCreateFromMemspace(umf_memspace_handle_t hMemspace,
4041
/// \return UMF_RESULT_SUCCESS on success or appropriate error code on failure.
4142
///
4243
umf_result_t
43-
umfMemoryProviderCreateFromMemspace(umf_memspace_handle_t hMemspace,
44+
umfMemoryProviderCreateFromMemspace(umf_const_memspace_handle_t hMemspace,
4445
umf_const_mempolicy_handle_t hPolicy,
4546
umf_memory_provider_handle_t *hProvider);
47+
///
48+
/// \brief Creates new memspace from array of NUMA node ids.
49+
/// \param nodeIds array of NUMA node ids
50+
/// \param numIds size of the array
51+
/// \param hMemspace [out] handle to the newly created memspace
52+
/// \return UMF_RESULT_SUCCESS on success or appropriate error code on failure.
53+
///
54+
umf_result_t umfMemspaceCreateFromNumaArray(unsigned *nodeIds, size_t numIds,
55+
umf_memspace_handle_t *hMemspace);
56+
57+
///
58+
/// \brief Destroys memspace
59+
/// \param hMemspace handle to memspace
60+
///
61+
void umfMemspaceDestroy(umf_memspace_handle_t hMemspace);
4662

4763
///
4864
/// \brief Retrieves predefined host all memspace.
4965
/// \return host all memspace handle on success or NULL on failure.
5066
///
51-
umf_memspace_handle_t umfMemspaceHostAllGet(void);
67+
umf_const_memspace_handle_t umfMemspaceHostAllGet(void);
5268

5369
///
5470
/// \brief Retrieves predefined highest capacity memspace.
5571
/// \return highest capacity memspace handle on success or NULL on failure.
5672
///
57-
umf_memspace_handle_t umfMemspaceHighestCapacityGet(void);
73+
umf_const_memspace_handle_t umfMemspaceHighestCapacityGet(void);
5874

5975
/// \brief Retrieves predefined highest bandwidth memspace.
6076
/// \return highest bandwidth memspace handle on success or NULL on
6177
/// failure (no HMAT support).
6278
///
63-
umf_memspace_handle_t umfMemspaceHighestBandwidthGet(void);
79+
umf_const_memspace_handle_t umfMemspaceHighestBandwidthGet(void);
6480

6581
/// \brief Retrieves predefined lowest latency memspace.
6682
/// \return lowest latency memspace handle on success or NULL on
6783
/// failure (no HMAT support).
6884
///
69-
umf_memspace_handle_t umfMemspaceLowestLatencyGet(void);
85+
umf_const_memspace_handle_t umfMemspaceLowestLatencyGet(void);
7086

7187
#ifdef __cplusplus
7288
}

src/memory_target_ops.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,13 @@ typedef struct umf_memory_target_ops_t {
3030
umf_result_t (*clone)(void *memoryTarget, void **outMemoryTarget);
3131

3232
umf_result_t (*pool_create_from_memspace)(
33-
umf_memspace_handle_t memspace, void **memoryTargets, size_t numTargets,
34-
umf_const_mempolicy_handle_t policy, umf_memory_pool_handle_t *pool);
33+
umf_const_memspace_handle_t memspace, void **memoryTargets,
34+
size_t numTargets, umf_const_mempolicy_handle_t policy,
35+
umf_memory_pool_handle_t *pool);
3536

3637
umf_result_t (*memory_provider_create_from_memspace)(
37-
umf_memspace_handle_t memspace, void **memoryTargets, size_t numTargets,
38-
umf_const_mempolicy_handle_t policy,
38+
umf_const_memspace_handle_t memspace, void **memoryTargets,
39+
size_t numTargets, umf_const_mempolicy_handle_t policy,
3940
umf_memory_provider_handle_t *provider);
4041

4142
umf_result_t (*get_capacity)(void *memoryTarget, size_t *capacity);

src/memory_targets/memory_target_numa.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ static umf_result_t numa_initialize(void *params, void **memTarget) {
4949
static void numa_finalize(void *memTarget) { umf_ba_global_free(memTarget); }
5050

5151
static umf_result_t numa_memory_provider_create_from_memspace(
52-
umf_memspace_handle_t memspace, void **memTargets, size_t numTargets,
52+
umf_const_memspace_handle_t memspace, void **memTargets, size_t numTargets,
5353
umf_const_mempolicy_handle_t policy,
5454
umf_memory_provider_handle_t *provider) {
5555

@@ -151,7 +151,7 @@ static umf_result_t numa_memory_provider_create_from_memspace(
151151
}
152152

153153
static umf_result_t numa_pool_create_from_memspace(
154-
umf_memspace_handle_t memspace, void **memTargets, size_t numTargets,
154+
umf_const_memspace_handle_t memspace, void **memTargets, size_t numTargets,
155155
umf_const_mempolicy_handle_t policy, umf_memory_pool_handle_t *pool) {
156156
(void)memspace;
157157
(void)memTargets;

src/memspace.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
#include "memspace_internal.h"
1919

2020
#ifndef NDEBUG
21-
static umf_result_t verifyMemTargetsTypes(umf_memspace_handle_t memspace) {
21+
static umf_result_t
22+
verifyMemTargetsTypes(umf_const_memspace_handle_t memspace) {
2223
assert(memspace);
2324
if (memspace->size == 0) {
2425
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
@@ -35,8 +36,9 @@ static umf_result_t verifyMemTargetsTypes(umf_memspace_handle_t memspace) {
3536
}
3637
#endif
3738

38-
static umf_result_t memoryTargetHandlesToPriv(umf_memspace_handle_t memspace,
39-
void ***pPrivs) {
39+
static umf_result_t
40+
memoryTargetHandlesToPriv(umf_const_memspace_handle_t memspace,
41+
void ***pPrivs) {
4042
assert(memspace);
4143
void **privs = umf_ba_global_alloc(sizeof(void *) * memspace->size);
4244
if (privs == NULL) {
@@ -51,7 +53,7 @@ static umf_result_t memoryTargetHandlesToPriv(umf_memspace_handle_t memspace,
5153
return UMF_RESULT_SUCCESS;
5254
}
5355

54-
umf_result_t umfPoolCreateFromMemspace(umf_memspace_handle_t memspace,
56+
umf_result_t umfPoolCreateFromMemspace(umf_const_memspace_handle_t memspace,
5557
umf_const_mempolicy_handle_t policy,
5658
umf_memory_pool_handle_t *pool) {
5759
if (!memspace || !pool) {
@@ -76,7 +78,7 @@ umf_result_t umfPoolCreateFromMemspace(umf_memspace_handle_t memspace,
7678
}
7779

7880
umf_result_t
79-
umfMemoryProviderCreateFromMemspace(umf_memspace_handle_t memspace,
81+
umfMemoryProviderCreateFromMemspace(umf_const_memspace_handle_t memspace,
8082
umf_const_mempolicy_handle_t policy,
8183
umf_memory_provider_handle_t *provider) {
8284
if (!memspace || !provider) {
@@ -110,7 +112,7 @@ void umfMemspaceDestroy(umf_memspace_handle_t memspace) {
110112
umf_ba_global_free(memspace);
111113
}
112114

113-
umf_result_t umfMemspaceClone(umf_memspace_handle_t hMemspace,
115+
umf_result_t umfMemspaceClone(umf_const_memspace_handle_t hMemspace,
114116
umf_memspace_handle_t *outHandle) {
115117
if (!hMemspace || !outHandle) {
116118
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
@@ -209,7 +211,7 @@ umfMemspaceSortDesc(umf_memspace_handle_t hMemspace,
209211
return UMF_RESULT_SUCCESS;
210212
}
211213

212-
umf_result_t umfMemspaceFilter(umf_memspace_handle_t hMemspace,
214+
umf_result_t umfMemspaceFilter(umf_const_memspace_handle_t hMemspace,
213215
umfGetTargetFn getTarget,
214216
umf_memspace_handle_t *filteredMemspace) {
215217
if (!hMemspace || !getTarget) {

src/memspace_internal.h

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ struct umf_memspace_t {
2727
///
2828
/// \brief Clones memspace
2929
///
30-
umf_result_t umfMemspaceClone(umf_memspace_handle_t hMemspace,
30+
umf_result_t umfMemspaceClone(umf_const_memspace_handle_t hMemspace,
3131
umf_memspace_handle_t *outHandle);
3232

3333
typedef umf_result_t (*umfGetPropertyFn)(umf_memory_target_handle_t,
@@ -47,16 +47,10 @@ typedef umf_result_t (*umfGetTargetFn)(umf_memory_target_handle_t initiator,
4747
///
4848
/// \brief Filters the targets using getTarget() to create a new memspace
4949
///
50-
umf_result_t umfMemspaceFilter(umf_memspace_handle_t hMemspace,
50+
umf_result_t umfMemspaceFilter(umf_const_memspace_handle_t hMemspace,
5151
umfGetTargetFn getTarget,
5252
umf_memspace_handle_t *filteredMemspace);
5353

54-
///
55-
/// \brief Destroys memspace
56-
/// \param hMemspace handle to memspace
57-
///
58-
void umfMemspaceDestroy(umf_memspace_handle_t hMemspace);
59-
6054
void umfMemspaceHostAllDestroy(void);
6155
void umfMemspaceHighestCapacityDestroy(void);
6256
void umfMemspaceHighestBandwidthDestroy(void);

src/memspaces/memspace_highest_bandwidth.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
#include "base_alloc_global.h"
1616
#include "memory_target_numa.h"
1717
#include "memspace_internal.h"
18-
#include "memspace_numa.h"
1918
#include "topology.h"
2019
#include "utils_common.h"
2120
#include "utils_concurrency.h"
@@ -52,7 +51,7 @@ umfMemspaceHighestBandwidthCreate(umf_memspace_handle_t *hMemspace) {
5251
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
5352
}
5453

55-
umf_memspace_handle_t hostAllMemspace = umfMemspaceHostAllGet();
54+
umf_const_memspace_handle_t hostAllMemspace = umfMemspaceHostAllGet();
5655
if (!hostAllMemspace) {
5756
return UMF_RESULT_ERROR_UNKNOWN;
5857
}
@@ -97,7 +96,7 @@ static void umfMemspaceHighestBandwidthInit(void) {
9796
}
9897
}
9998

100-
umf_memspace_handle_t umfMemspaceHighestBandwidthGet(void) {
99+
umf_const_memspace_handle_t umfMemspaceHighestBandwidthGet(void) {
101100
util_init_once(&UMF_MEMSPACE_HBW_INITIALIZED,
102101
umfMemspaceHighestBandwidthInit);
103102
return UMF_MEMSPACE_HIGHEST_BANDWIDTH;

src/memspaces/memspace_highest_capacity.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include "base_alloc_global.h"
1515
#include "memory_target_numa.h"
1616
#include "memspace_internal.h"
17-
#include "memspace_numa.h"
1817
#include "topology.h"
1918
#include "utils_concurrency.h"
2019

@@ -24,7 +23,7 @@ umfMemspaceHighestCapacityCreate(umf_memspace_handle_t *hMemspace) {
2423
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
2524
}
2625

27-
umf_memspace_handle_t hostAllMemspace = umfMemspaceHostAllGet();
26+
umf_const_memspace_handle_t hostAllMemspace = umfMemspaceHostAllGet();
2827
if (!hostAllMemspace) {
2928
return UMF_RESULT_ERROR_UNKNOWN;
3029
}
@@ -69,7 +68,7 @@ static void umfMemspaceHighestCapacityInit(void) {
6968
(void)ret;
7069
}
7170

72-
umf_memspace_handle_t umfMemspaceHighestCapacityGet(void) {
71+
umf_const_memspace_handle_t umfMemspaceHighestCapacityGet(void) {
7372
util_init_once(&UMF_MEMSPACE_HIGHEST_CAPACITY_INITIALIZED,
7473
umfMemspaceHighestCapacityInit);
7574
return UMF_MEMSPACE_HIGHEST_CAPACITY;

src/memspaces/memspace_host_all.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include "base_alloc_global.h"
1515
#include "memory_target_numa.h"
1616
#include "memspace_internal.h"
17-
#include "memspace_numa.h"
1817
#include "topology.h"
1918
#include "utils_concurrency.h"
2019

@@ -91,7 +90,7 @@ static void umfMemspaceHostAllInit(void) {
9190
// doesn't support Windows.
9291
}
9392

94-
umf_memspace_handle_t umfMemspaceHostAllGet(void) {
93+
umf_const_memspace_handle_t umfMemspaceHostAllGet(void) {
9594
util_init_once(&UMF_MEMSPACE_HOST_ALL_INITIALIZED, umfMemspaceHostAllInit);
9695
return UMF_MEMSPACE_HOST_ALL;
9796
}

src/memspaces/memspace_lowest_latency.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
#include "base_alloc_global.h"
1616
#include "memory_target_numa.h"
1717
#include "memspace_internal.h"
18-
#include "memspace_numa.h"
1918
#include "topology.h"
2019
#include "utils_common.h"
2120
#include "utils_concurrency.h"
@@ -52,7 +51,7 @@ umfMemspaceLowestLatencyCreate(umf_memspace_handle_t *hMemspace) {
5251
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
5352
}
5453

55-
umf_memspace_handle_t hostAllMemspace = umfMemspaceHostAllGet();
54+
umf_const_memspace_handle_t hostAllMemspace = umfMemspaceHostAllGet();
5655
if (!hostAllMemspace) {
5756
return UMF_RESULT_ERROR_UNKNOWN;
5857
}
@@ -97,7 +96,7 @@ static void umfMemspaceLowestLatencyInit(void) {
9796
#endif
9897
}
9998

100-
umf_memspace_handle_t umfMemspaceLowestLatencyGet(void) {
99+
umf_const_memspace_handle_t umfMemspaceLowestLatencyGet(void) {
101100
util_init_once(&UMF_MEMSPACE_LOWEST_LATENCY_INITIALIZED,
102101
umfMemspaceLowestLatencyInit);
103102
return UMF_MEMSPACE_LOWEST_LATENCY;

src/memspaces/memspace_numa.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
#include "../memory_targets/memory_target_numa.h"
1313
#include "../memspace_internal.h"
1414
#include "base_alloc_global.h"
15-
#include "memspace_numa.h"
1615

1716
umf_result_t umfMemspaceCreateFromNumaArray(unsigned *nodeIds, size_t numIds,
1817
umf_memspace_handle_t *hMemspace) {

src/memspaces/memspace_numa.h

Lines changed: 0 additions & 34 deletions
This file was deleted.

test/memspaces/memspace_fixtures.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ struct numaNodesTest : ::umf_test::test {
5050
};
5151

5252
using isQuerySupportedFunc = bool (*)(size_t);
53-
using memspaceGetFunc = umf_memspace_handle_t (*)();
53+
using memspaceGetFunc = umf_const_memspace_handle_t (*)();
5454
using memspaceGetParams = std::tuple<isQuerySupportedFunc, memspaceGetFunc>;
5555

5656
struct memspaceGetTest : ::numaNodesTest,
@@ -68,7 +68,7 @@ struct memspaceGetTest : ::numaNodesTest,
6868
ASSERT_NE(hMemspace, nullptr);
6969
}
7070

71-
umf_memspace_handle_t hMemspace = nullptr;
71+
umf_const_memspace_handle_t hMemspace = nullptr;
7272
};
7373

7474
struct memspaceProviderTest : ::memspaceGetTest {

test/memspaces/memspace_helpers.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
#include "base.hpp"
99
#include "memspace_internal.h"
10-
#include "memspaces/memspace_numa.h"
1110
#include "test_helpers.h"
1211

1312
#include <numa.h>

test/memspaces/memspace_highest_capacity.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ struct memspaceHighestCapacityProviderTest : ::numaNodesTest {
2020
void SetUp() override {
2121
::numaNodesTest::SetUp();
2222

23-
umf_memspace_handle_t hMemspace = umfMemspaceHighestCapacityGet();
23+
umf_const_memspace_handle_t hMemspace = umfMemspaceHighestCapacityGet();
2424
UT_ASSERTne(hMemspace, nullptr);
2525

2626
umf_result_t ret =

test/memspaces/memspace_host_all.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ struct memspaceHostAllTest : ::numaNodesTest {
2727
ASSERT_NE(hMemspace, nullptr);
2828
}
2929

30-
umf_memspace_handle_t hMemspace = nullptr;
30+
umf_const_memspace_handle_t hMemspace = nullptr;
3131
};
3232

3333
struct memspaceHostAllProviderTest : ::memspaceHostAllTest {
@@ -50,7 +50,7 @@ struct memspaceHostAllProviderTest : ::memspaceHostAllTest {
5050
};
5151

5252
TEST_F(numaNodesTest, memspaceGet) {
53-
umf_memspace_handle_t hMemspace = umfMemspaceHostAllGet();
53+
umf_const_memspace_handle_t hMemspace = umfMemspaceHostAllGet();
5454
UT_ASSERTne(hMemspace, nullptr);
5555

5656
// Confirm that the HOST ALL memspace is composed of all available NUMA nodes.
@@ -95,7 +95,7 @@ TEST_F(memspaceHostAllProviderTest, hostAllDefaults) {
9595
// default parameters based on default memspace (HostAll) uses the fast,
9696
// default kernel path (no mbind).
9797

98-
umf_memspace_handle_t hMemspace = umfMemspaceHostAllGet();
98+
umf_const_memspace_handle_t hMemspace = umfMemspaceHostAllGet();
9999
UT_ASSERTne(hMemspace, nullptr);
100100

101101
umf_memory_provider_handle_t hProvider = nullptr;

test/memspaces/memspace_numa.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT.
33
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
44

5-
#include "memspaces/memspace_numa.h"
65
#include "base.hpp"
76
#include "memspace_fixtures.hpp"
87
#include "memspace_helpers.hpp"

0 commit comments

Comments
 (0)