Skip to content

Commit b2b90c3

Browse files
level-zero v1.0 (3/N)
Implement residency functions Change-Id: I69179899f2a5fd627d10b976477a6736c600b430 Signed-off-by: Maciej Dziuban <[email protected]>
1 parent 418db08 commit b2b90c3

File tree

11 files changed

+89
-108
lines changed

11 files changed

+89
-108
lines changed

level_zero/api/core/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ set(L0_SRCS_API
1919
${CMAKE_CURRENT_SOURCE_DIR}/ze_image.cpp
2020
${CMAKE_CURRENT_SOURCE_DIR}/ze_memory.cpp
2121
${CMAKE_CURRENT_SOURCE_DIR}/ze_module.cpp
22-
${CMAKE_CURRENT_SOURCE_DIR}/ze_residency.cpp
2322
${CMAKE_CURRENT_SOURCE_DIR}/ze_sampler.cpp
2423
)
2524
set_property(GLOBAL PROPERTY L0_SRCS_API ${L0_SRCS_API})

level_zero/api/core/ze_context.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ zeContextMakeMemoryResident(
120120
ze_device_handle_t hDevice,
121121
void *ptr,
122122
size_t size) {
123-
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
123+
return L0::Context::fromHandle(hContext)->makeMemoryResident(hDevice, ptr, size);
124124
}
125125

126126
ZE_APIEXPORT ze_result_t ZE_APICALL
@@ -129,21 +129,21 @@ zeContextEvictMemory(
129129
ze_device_handle_t hDevice,
130130
void *ptr,
131131
size_t size) {
132-
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
132+
return L0::Context::fromHandle(hContext)->evictMemory(hDevice, ptr, size);
133133
}
134134

135135
ZE_APIEXPORT ze_result_t ZE_APICALL
136136
zeContextMakeImageResident(
137137
ze_context_handle_t hContext,
138138
ze_device_handle_t hDevice,
139139
ze_image_handle_t hImage) {
140-
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
140+
return L0::Context::fromHandle(hContext)->makeImageResident(hDevice, hImage);
141141
}
142142

143143
ZE_APIEXPORT ze_result_t ZE_APICALL
144144
zeContextEvictImage(
145145
ze_context_handle_t hContext,
146146
ze_device_handle_t hDevice,
147147
ze_image_handle_t hImage) {
148-
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
149-
}
148+
return L0::Context::fromHandle(hContext)->evictImage(hDevice, hImage);
149+
}

level_zero/api/core/ze_residency.cpp

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

level_zero/core/source/context/context.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ struct Context : _ze_context_handle_t {
3838
size_t alignment,
3939
void **ptr) = 0;
4040
virtual ze_result_t freeMem(const void *ptr) = 0;
41+
virtual ze_result_t makeMemoryResident(ze_device_handle_t hDevice,
42+
void *ptr,
43+
size_t size) = 0;
44+
virtual ze_result_t evictMemory(ze_device_handle_t hDevice,
45+
void *ptr,
46+
size_t size) = 0;
47+
virtual ze_result_t makeImageResident(ze_device_handle_t hDevice, ze_image_handle_t hImage) = 0;
48+
virtual ze_result_t evictImage(ze_device_handle_t hDevice, ze_image_handle_t hImage) = 0;
4149
virtual ze_result_t getMemAddressRange(const void *ptr,
4250
void **pBase,
4351
size_t *pSize) = 0;

level_zero/core/source/context/context_imp.cpp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@
77

88
#include "level_zero/core/source/context/context_imp.h"
99

10+
#include "shared/source/memory_manager/memory_operations_handler.h"
11+
1012
#include "level_zero/core/source/device/device.h"
13+
#include "level_zero/core/source/image/image.h"
14+
#include "level_zero/core/source/memory/memory_operations_helper.h"
1115

1216
namespace L0 {
1317

@@ -72,6 +76,48 @@ ze_result_t ContextImp::freeMem(const void *ptr) {
7276
return this->driverHandle->freeMem(ptr);
7377
}
7478

79+
ze_result_t ContextImp::makeMemoryResident(ze_device_handle_t hDevice, void *ptr, size_t size) {
80+
auto alloc = getDriverHandle()->getSvmAllocsManager()->getSVMAlloc(ptr);
81+
if (alloc == nullptr) {
82+
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
83+
}
84+
85+
NEO::Device *neoDevice = L0::Device::fromHandle(hDevice)->getNEODevice();
86+
NEO::MemoryOperationsHandler *memoryOperationsIface = neoDevice->getRootDeviceEnvironment().memoryOperationsInterface.get();
87+
auto gpuAllocation = alloc->gpuAllocations.getGraphicsAllocation(neoDevice->getRootDeviceIndex());
88+
auto success = memoryOperationsIface->makeResident(neoDevice, ArrayRef<NEO::GraphicsAllocation *>(&gpuAllocation, 1));
89+
return changeMemoryOperationStatusToL0ResultType(success);
90+
}
91+
92+
ze_result_t ContextImp::evictMemory(ze_device_handle_t hDevice, void *ptr, size_t size) {
93+
auto alloc = getDriverHandle()->getSvmAllocsManager()->getSVMAlloc(ptr);
94+
if (alloc == nullptr) {
95+
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
96+
}
97+
98+
NEO::Device *neoDevice = L0::Device::fromHandle(hDevice)->getNEODevice();
99+
NEO::MemoryOperationsHandler *memoryOperationsIface = neoDevice->getRootDeviceEnvironment().memoryOperationsInterface.get();
100+
auto success = memoryOperationsIface->evict(neoDevice, *alloc->gpuAllocations.getGraphicsAllocation(neoDevice->getRootDeviceIndex()));
101+
return changeMemoryOperationStatusToL0ResultType(success);
102+
}
103+
104+
ze_result_t ContextImp::makeImageResident(ze_device_handle_t hDevice, ze_image_handle_t hImage) {
105+
auto alloc = Image::fromHandle(hImage)->getAllocation();
106+
107+
NEO::Device *neoDevice = L0::Device::fromHandle(hDevice)->getNEODevice();
108+
NEO::MemoryOperationsHandler *memoryOperationsIface = neoDevice->getRootDeviceEnvironment().memoryOperationsInterface.get();
109+
auto success = memoryOperationsIface->makeResident(neoDevice, ArrayRef<NEO::GraphicsAllocation *>(&alloc, 1));
110+
return changeMemoryOperationStatusToL0ResultType(success);
111+
}
112+
ze_result_t ContextImp::evictImage(ze_device_handle_t hDevice, ze_image_handle_t hImage) {
113+
auto alloc = Image::fromHandle(hImage)->getAllocation();
114+
115+
NEO::Device *neoDevice = L0::Device::fromHandle(hDevice)->getNEODevice();
116+
NEO::MemoryOperationsHandler *memoryOperationsIface = neoDevice->getRootDeviceEnvironment().memoryOperationsInterface.get();
117+
auto success = memoryOperationsIface->evict(neoDevice, *alloc);
118+
return changeMemoryOperationStatusToL0ResultType(success);
119+
}
120+
75121
ze_result_t ContextImp::getMemAddressRange(const void *ptr,
76122
void **pBase,
77123
size_t *pSize) {

level_zero/core/source/context/context_imp.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@ struct ContextImp : Context {
3333
size_t alignment,
3434
void **ptr) override;
3535
ze_result_t freeMem(const void *ptr) override;
36+
ze_result_t makeMemoryResident(ze_device_handle_t hDevice,
37+
void *ptr,
38+
size_t size) override;
39+
ze_result_t evictMemory(ze_device_handle_t hDevice,
40+
void *ptr,
41+
size_t size) override;
42+
ze_result_t makeImageResident(ze_device_handle_t hDevice, ze_image_handle_t hImage) override;
43+
ze_result_t evictImage(ze_device_handle_t hDevice, ze_image_handle_t hImage) override;
3644
ze_result_t getMemAddressRange(const void *ptr,
3745
void **pBase,
3846
size_t *pSize) override;

level_zero/core/source/device/device.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ struct Device : _ze_device_handle_t {
5252
ze_module_build_log_handle_t *buildLog) = 0;
5353
virtual ze_result_t createSampler(const ze_sampler_desc_t *pDesc,
5454
ze_sampler_handle_t *phSampler) = 0;
55-
virtual ze_result_t evictImage(ze_image_handle_t hImage) = 0;
56-
virtual ze_result_t evictMemory(void *ptr, size_t size) = 0;
5755
virtual ze_result_t getComputeProperties(ze_device_compute_properties_t *pComputeProperties) = 0;
5856
virtual ze_result_t getP2PProperties(ze_device_handle_t hPeerDevice,
5957
ze_device_p2p_properties_t *pP2PProperties) = 0;
@@ -62,8 +60,6 @@ struct Device : _ze_device_handle_t {
6260
virtual ze_result_t getMemoryAccessProperties(ze_device_memory_access_properties_t *pMemAccessProperties) = 0;
6361
virtual ze_result_t getProperties(ze_device_properties_t *pDeviceProperties) = 0;
6462
virtual ze_result_t getSubDevices(uint32_t *pCount, ze_device_handle_t *phSubdevices) = 0;
65-
virtual ze_result_t makeImageResident(ze_image_handle_t hImage) = 0;
66-
virtual ze_result_t makeMemoryResident(void *ptr, size_t size) = 0;
6763
virtual ze_result_t setIntermediateCacheConfig(ze_cache_config_flags_t cacheConfig) = 0;
6864
virtual ze_result_t setLastLevelCacheConfig(ze_cache_config_flags_t cacheConfig) = 0;
6965
virtual ze_result_t getCacheProperties(uint32_t *pCount, ze_device_cache_properties_t *pCacheProperties) = 0;

level_zero/core/source/device/device_imp.cpp

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
#include "shared/source/helpers/string.h"
2121
#include "shared/source/kernel/grf_config.h"
2222
#include "shared/source/memory_manager/memory_manager.h"
23-
#include "shared/source/memory_manager/memory_operations_handler.h"
2423
#include "shared/source/os_interface/os_interface.h"
2524
#include "shared/source/os_interface/os_time.h"
2625
#include "shared/source/source_level_debugger/source_level_debugger.h"
@@ -36,7 +35,6 @@
3635
#include "level_zero/core/source/driver/driver_handle_imp.h"
3736
#include "level_zero/core/source/event/event.h"
3837
#include "level_zero/core/source/image/image.h"
39-
#include "level_zero/core/source/memory/memory_operations_helper.h"
4038
#include "level_zero/core/source/module/module.h"
4139
#include "level_zero/core/source/printf_handler/printf_handler.h"
4240
#include "level_zero/core/source/sampler/sampler.h"
@@ -214,23 +212,6 @@ ze_result_t DeviceImp::createModule(const ze_module_desc_t *desc, ze_module_hand
214212
return ZE_RESULT_SUCCESS;
215213
}
216214

217-
ze_result_t DeviceImp::evictImage(ze_image_handle_t hImage) {
218-
auto alloc = Image::fromHandle(hImage)->getAllocation();
219-
NEO::MemoryOperationsHandler *memoryOperationsIface = neoDevice->getRootDeviceEnvironment().memoryOperationsInterface.get();
220-
auto success = memoryOperationsIface->evict(neoDevice, *alloc);
221-
return changeMemoryOperationStatusToL0ResultType(success);
222-
}
223-
224-
ze_result_t DeviceImp::evictMemory(void *ptr, size_t size) {
225-
auto alloc = getDriverHandle()->getSvmAllocsManager()->getSVMAlloc(ptr);
226-
if (alloc == nullptr) {
227-
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
228-
}
229-
NEO::MemoryOperationsHandler *memoryOperationsIface = neoDevice->getRootDeviceEnvironment().memoryOperationsInterface.get();
230-
auto success = memoryOperationsIface->evict(neoDevice, *alloc->gpuAllocations.getGraphicsAllocation(getRootDeviceIndex()));
231-
return changeMemoryOperationStatusToL0ResultType(success);
232-
}
233-
234215
ze_result_t DeviceImp::getComputeProperties(ze_device_compute_properties_t *pComputeProperties) {
235216
const auto &deviceInfo = this->neoDevice->getDeviceInfo();
236217

@@ -425,24 +406,6 @@ ze_result_t DeviceImp::getSubDevices(uint32_t *pCount, ze_device_handle_t *phSub
425406
return ZE_RESULT_SUCCESS;
426407
}
427408

428-
ze_result_t DeviceImp::makeImageResident(ze_image_handle_t hImage) {
429-
auto alloc = Image::fromHandle(hImage)->getAllocation();
430-
NEO::MemoryOperationsHandler *memoryOperationsIface = neoDevice->getRootDeviceEnvironment().memoryOperationsInterface.get();
431-
auto success = memoryOperationsIface->makeResident(neoDevice, ArrayRef<NEO::GraphicsAllocation *>(&alloc, 1));
432-
return changeMemoryOperationStatusToL0ResultType(success);
433-
}
434-
435-
ze_result_t DeviceImp::makeMemoryResident(void *ptr, size_t size) {
436-
auto alloc = getDriverHandle()->getSvmAllocsManager()->getSVMAlloc(ptr);
437-
if (alloc == nullptr) {
438-
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
439-
}
440-
NEO::MemoryOperationsHandler *memoryOperationsIface = neoDevice->getRootDeviceEnvironment().memoryOperationsInterface.get();
441-
auto gpuAllocation = alloc->gpuAllocations.getGraphicsAllocation(getRootDeviceIndex());
442-
auto success = memoryOperationsIface->makeResident(neoDevice, ArrayRef<NEO::GraphicsAllocation *>(&gpuAllocation, 1));
443-
return changeMemoryOperationStatusToL0ResultType(success);
444-
}
445-
446409
ze_result_t DeviceImp::setIntermediateCacheConfig(ze_cache_config_flags_t cacheConfig) {
447410
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
448411
}

level_zero/core/source/device/device_imp.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ struct DeviceImp : public Device {
2929
ze_module_build_log_handle_t *buildLog) override;
3030
ze_result_t createSampler(const ze_sampler_desc_t *pDesc,
3131
ze_sampler_handle_t *phSampler) override;
32-
ze_result_t evictImage(ze_image_handle_t hImage) override;
33-
ze_result_t evictMemory(void *ptr, size_t size) override;
3432
ze_result_t getComputeProperties(ze_device_compute_properties_t *pComputeProperties) override;
3533
ze_result_t getP2PProperties(ze_device_handle_t hPeerDevice,
3634
ze_device_p2p_properties_t *pP2PProperties) override;
@@ -39,8 +37,6 @@ struct DeviceImp : public Device {
3937
ze_result_t getMemoryAccessProperties(ze_device_memory_access_properties_t *pMemAccessProperties) override;
4038
ze_result_t getProperties(ze_device_properties_t *pDeviceProperties) override;
4139
ze_result_t getSubDevices(uint32_t *pCount, ze_device_handle_t *phSubdevices) override;
42-
ze_result_t makeImageResident(ze_image_handle_t hImage) override;
43-
ze_result_t makeMemoryResident(void *ptr, size_t size) override;
4440
ze_result_t setIntermediateCacheConfig(ze_cache_config_flags_t cacheConfig) override;
4541
ze_result_t setLastLevelCacheConfig(ze_cache_config_flags_t cacheConfig) override;
4642
ze_result_t getCacheProperties(uint32_t *pCount, ze_device_cache_properties_t *pCacheProperties) override;

level_zero/core/test/unit_tests/mocks/mock_context.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,28 @@ struct Mock<Context> : public Context {
6363
size_t alignment,
6464
void **ptr),
6565
(override));
66+
MOCK_METHOD(ze_result_t,
67+
makeMemoryResident,
68+
(ze_device_handle_t hDevice,
69+
void *ptr,
70+
size_t size),
71+
(override));
72+
MOCK_METHOD(ze_result_t,
73+
evictMemory,
74+
(ze_device_handle_t hDevice,
75+
void *ptr,
76+
size_t size),
77+
(override));
78+
MOCK_METHOD(ze_result_t,
79+
makeImageResident,
80+
(ze_device_handle_t hDevice,
81+
ze_image_handle_t hImage),
82+
(override));
83+
MOCK_METHOD(ze_result_t,
84+
evictImage,
85+
(ze_device_handle_t hDevice,
86+
ze_image_handle_t hImage),
87+
(override));
6688
MOCK_METHOD(ze_result_t,
6789
freeMem,
6890
(const void *ptr),

0 commit comments

Comments
 (0)