Skip to content

Commit a506752

Browse files
committed
added tests checking memory granularity for virtual memory extension
1 parent 242f16b commit a506752

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// REQUIRES: aspect-ext_oneapi_virtual_mem,
2+
3+
// RUN: %{build} -o %t.out
4+
// RUN: %{run} %t.out
5+
6+
#include <string_view>
7+
8+
#include <sycl/detail/core.hpp>
9+
10+
#include <sycl/ext/oneapi/virtual_mem/physical_mem.hpp>
11+
#include <sycl/ext/oneapi/virtual_mem/virtual_mem.hpp>
12+
13+
namespace syclext = sycl::ext::oneapi::experimental;
14+
15+
template<typename... ArgsT>
16+
int CheckReturnedGranularitySize(std::string_view TestName, ArgsT... Args) {
17+
if (syclext::get_mem_granularity(Args...) == 0){
18+
std::cout << "Failed check: " << TestName << std::endl;
19+
return 1;
20+
}
21+
return 0;
22+
}
23+
24+
int main() {
25+
int Failed = 0;
26+
sycl::queue Q;
27+
sycl::context Context = Q.get_context();
28+
sycl::device Device = Q.get_device();
29+
30+
Failed += CheckReturnedGranularitySize("returned granularity size must be greater then 0 for device and granularity_mode::recommended", Device, Context, syclext::granularity_mode::recommended);
31+
Failed += CheckReturnedGranularitySize("returned granularity size must be greater then 0 for device and granularity_mode::minimum", Device, Context, syclext::granularity_mode::minimum);
32+
Failed += CheckReturnedGranularitySize("returned granularity size must be greater then 0 for context and granularity_mode::recommended", Context, syclext::granularity_mode::recommended);
33+
Failed += CheckReturnedGranularitySize("returned granularity size must be greater then 0 for context and granularity_mode::minimum", Context, syclext::granularity_mode::minimum);
34+
35+
constexpr size_t NumberOfElements = 2;
36+
std::array<size_t, NumberOfElements> RecommendedGranularities = {syclext::get_mem_granularity(Device, Context, syclext::granularity_mode::recommended),
37+
syclext::get_mem_granularity(Context, syclext::granularity_mode::recommended)};
38+
39+
std::array<size_t, NumberOfElements> MinimumGranularities = {syclext::get_mem_granularity(Device, Context, syclext::granularity_mode::minimum),
40+
syclext::get_mem_granularity(Context, syclext::granularity_mode::minimum)};
41+
42+
std::array<std::string_view, NumberOfElements> TestNames = {
43+
"Failed check: granularity_mode::recommended size must be at least granularity_mode::minimum for device",
44+
"Failed check: granularity_mode::recommended size must be at least granularity_mode::minimum for context"
45+
};
46+
47+
for (size_t Index=0; Index<NumberOfElements;++Index) {
48+
if(RecommendedGranularities[Index]<MinimumGranularities[Index]){
49+
std::cout << TestNames[Index]<<std::endl;
50+
++Failed;
51+
}
52+
}
53+
return Failed;
54+
}

0 commit comments

Comments
 (0)