Skip to content

Commit e4eb753

Browse files
L0 extension for cache reservation
Signed-off-by: Milczarek, Slawomir <slawomir.milczarek@intel.com>
1 parent 9e18416 commit e4eb753

20 files changed

+571
-2
lines changed

level_zero/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,18 +382,21 @@ if(BUILD_WITH_L0)
382382
L0_API
383383
L0_SOURCES_LINUX
384384
L0_SOURCES_WINDOWS
385+
L0_SRCS_CACHE_RESERVATION
385386
L0_SRCS_COMPILER_INTERFACE
386387
L0_SRCS_DEBUGGER
387388
L0_SRCS_DRIVER
388389
L0_SRCS_OCLOC_SHARED
389390
)
390391
if(WIN32)
391392
append_sources_from_properties(L0_RUNTIME_SOURCES
393+
L0_SRCS_CACHE_RESERVATION_WINDOWS
392394
L0_SRCS_DEBUGGER_WINDOWS
393395
L0_SRCS_DRIVER_WINDOWS
394396
)
395397
else()
396398
append_sources_from_properties(L0_RUNTIME_SOURCES
399+
L0_SRCS_CACHE_RESERVATION_LINUX
397400
L0_SRCS_DEBUGGER_LINUX
398401
L0_SRCS_DRIVER_LINUX
399402
)

level_zero/api/core/ze_device.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,4 +121,21 @@ zeDeviceGetGlobalTimestamps(
121121
uint64_t *hostTimestamp,
122122
uint64_t *deviceTimestamp) {
123123
return L0::Device::fromHandle(hDevice)->getGlobalTimestamps(hostTimestamp, deviceTimestamp);
124-
}
124+
}
125+
126+
ZE_APIEXPORT ze_result_t ZE_APICALL
127+
zeDeviceReserveCacheExt(
128+
ze_device_handle_t hDevice,
129+
size_t cacheLevel,
130+
size_t cacheReservationSize) {
131+
return L0::Device::fromHandle(hDevice)->reserveCache(cacheLevel, cacheReservationSize);
132+
}
133+
134+
ZE_APIEXPORT ze_result_t ZE_APICALL
135+
zeDeviceSetCacheAdviceExt(
136+
ze_device_handle_t hDevice,
137+
void *ptr,
138+
size_t regionSize,
139+
ze_cache_ext_region_t cacheRegion) {
140+
return L0::Device::fromHandle(hDevice)->setCacheAdvice(ptr, regionSize, cacheRegion);
141+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#
2+
# Copyright (C) 2021 Intel Corporation
3+
#
4+
# SPDX-License-Identifier: MIT
5+
#
6+
7+
set(L0_SRCS_CACHE_RESERVATION
8+
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
9+
${CMAKE_CURRENT_SOURCE_DIR}/cache_reservation.h
10+
)
11+
12+
add_subdirectories()
13+
set_property(GLOBAL PROPERTY L0_SRCS_CACHE_RESERVATION ${L0_SRCS_CACHE_RESERVATION})
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright (C) 2021 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
#pragma once
9+
#include <level_zero/zet_api.h>
10+
11+
#include <memory>
12+
#include <stdint.h>
13+
14+
namespace L0 {
15+
16+
struct Device;
17+
18+
class CacheReservation {
19+
public:
20+
virtual ~CacheReservation() = default;
21+
22+
static std::unique_ptr<CacheReservation> create(Device &device);
23+
24+
virtual bool reserveCache(size_t cacheLevel, size_t cacheReservationSize) = 0;
25+
virtual bool setCacheAdvice(void *ptr, size_t regionSize, ze_cache_ext_region_t cacheRegion) = 0;
26+
virtual size_t getMaxCacheReservationSize() = 0;
27+
};
28+
29+
} // namespace L0
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#
2+
# Copyright (C) 2021 Intel Corporation
3+
#
4+
# SPDX-License-Identifier: MIT
5+
#
6+
7+
set(L0_SRCS_CACHE_RESERVATION_LINUX
8+
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
9+
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/cache_reservation_impl.cpp
10+
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/cache_reservation_impl.h
11+
)
12+
13+
if(UNIX)
14+
set_property(GLOBAL PROPERTY L0_SRCS_CACHE_RESERVATION_LINUX ${L0_SRCS_CACHE_RESERVATION_LINUX})
15+
endif()
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* Copyright (C) 2021 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
#include "level_zero/core/source/cache/linux/cache_reservation_impl.h"
9+
10+
namespace L0 {
11+
12+
std::unique_ptr<CacheReservation> CacheReservation::create(Device &device) {
13+
return std::make_unique<CacheReservationImpl>(device);
14+
}
15+
16+
bool CacheReservationImpl::reserveCache(size_t cacheLevel, size_t cacheReservationSize) {
17+
return false;
18+
}
19+
20+
bool CacheReservationImpl::setCacheAdvice(void *ptr, size_t regionSize, ze_cache_ext_region_t cacheRegion) {
21+
return false;
22+
}
23+
24+
size_t CacheReservationImpl::getMaxCacheReservationSize() {
25+
return 0;
26+
}
27+
28+
} // namespace L0
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* Copyright (C) 2021 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
#pragma once
9+
#include "level_zero/core/source/cache/cache_reservation.h"
10+
11+
namespace L0 {
12+
13+
class CacheReservationImpl : public CacheReservation {
14+
public:
15+
~CacheReservationImpl() override = default;
16+
CacheReservationImpl(Device &device){};
17+
18+
bool reserveCache(size_t cacheLevel, size_t cacheReservationSize) override;
19+
bool setCacheAdvice(void *ptr, size_t regionSize, ze_cache_ext_region_t cacheRegion) override;
20+
size_t getMaxCacheReservationSize() override;
21+
};
22+
23+
} // namespace L0
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#
2+
# Copyright (C) 2021 Intel Corporation
3+
#
4+
# SPDX-License-Identifier: MIT
5+
#
6+
7+
set(L0_SRCS_CACHE_RESERVATION_WINDOWS
8+
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
9+
${CMAKE_CURRENT_SOURCE_DIR}/cache_reservation_impl.cpp
10+
${CMAKE_CURRENT_SOURCE_DIR}/cache_reservation_impl.h
11+
)
12+
13+
if(WIN32)
14+
set_property(GLOBAL PROPERTY L0_SRCS_CACHE_RESERVATION_WINDOWS ${L0_SRCS_CACHE_RESERVATION_WINDOWS})
15+
endif()
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* Copyright (C) 2021 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
#include "level_zero/core/source/cache/windows/cache_reservation_impl.h"
9+
10+
namespace L0 {
11+
12+
std::unique_ptr<CacheReservation> CacheReservation::create(Device &device) {
13+
return std::make_unique<CacheReservationImpl>(device);
14+
}
15+
16+
bool CacheReservationImpl::reserveCache(size_t cacheLevel, size_t cacheReservationSize) {
17+
return false;
18+
}
19+
20+
bool CacheReservationImpl::setCacheAdvice(void *ptr, size_t regionSize, ze_cache_ext_region_t cacheRegion) {
21+
return false;
22+
}
23+
24+
size_t CacheReservationImpl::getMaxCacheReservationSize() {
25+
return 0;
26+
}
27+
28+
} // namespace L0
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* Copyright (C) 2021 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
#pragma once
9+
#include "level_zero/core/source/cache/cache_reservation.h"
10+
11+
namespace L0 {
12+
13+
class CacheReservationImpl : public CacheReservation {
14+
public:
15+
~CacheReservationImpl() override = default;
16+
CacheReservationImpl(Device &device){};
17+
18+
bool reserveCache(size_t cacheLevel, size_t cacheReservationSize) override;
19+
bool setCacheAdvice(void *ptr, size_t regionSize, ze_cache_ext_region_t cacheRegion) override;
20+
size_t getMaxCacheReservationSize() override;
21+
};
22+
23+
} // namespace L0

0 commit comments

Comments
 (0)