1
1
// RUN: %clangxx -fsycl %s -o %t.out
2
- // RUN: env ONEAPI_DEVICE_SELECTOR= level_zero:gpu %t.out
3
- // RUN: env ONEAPI_DEVICE_SELECTOR=opencl:gpu %t.out
2
+ // REQUIRES: level_zero || opencl
3
+ // RUN: %GPU_RUN_PLACEHOLDER %t.out
4
4
//
5
- // REQUIRES: gpu
6
- // UNSUPPORTED: hip
7
- // Temporarily disable on L0 due to fails in CI
8
-
9
5
// ==--------- intel-ext-device.cpp - SYCL device test ------------==//
10
6
//
11
7
// Returns the low-level device details. These are Intel-specific extensions
12
- // that are only supported on Level Zero.
8
+ // that are only supported on Level Zero or OpenCL .
13
9
//
14
10
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
15
11
// See https://llvm.org/LICENSE.txt for license information.
@@ -51,6 +47,8 @@ int main(int argc, char **argv) {
51
47
std::cout << " Backend: " ;
52
48
if (plt.get_backend () == backend::ext_oneapi_level_zero) {
53
49
std::cout << " Level Zero" << std::endl;
50
+ // It's required to set the env variable to query free-memory.
51
+ setenv (" ZES_ENABLE_SYSMAN" , " 1" , 0 );
54
52
} else if (plt.get_backend () == backend::opencl) {
55
53
std::cout << " OpenCL" << std::endl;
56
54
} else if (plt.get_backend () == backend::ext_oneapi_cuda) {
@@ -110,6 +108,13 @@ int main(int argc, char **argv) {
110
108
std::cout << " Failed!" << std::endl;
111
109
return 1 ;
112
110
}
111
+ if (dev.has (aspect::ext_intel_free_memory)) {
112
+ auto TotalMemory = dev.get_info <info::device::global_mem_size>();
113
+ auto FreeMemory =
114
+ dev.get_info <ext::intel::info::device::free_memory>();
115
+ assert ((TotalMemory >= FreeMemory) &&
116
+ " Expect total_memory >= free_memory" );
117
+ }
113
118
if (SYCL_EXT_INTEL_DEVICE_INFO >= 2 &&
114
119
dev.has (aspect::ext_intel_device_info_uuid)) {
115
120
auto UUID = dev.get_info <ext::intel::info::device::uuid>();
@@ -126,37 +131,6 @@ int main(int argc, char **argv) {
126
131
}
127
132
} // SYCL_EXT_INTEL_DEVICE_INFO
128
133
}
129
-
130
- // Check if this experimental feature is supported
131
- #ifdef SYCL_EXT_ONEAPI_MAX_WORK_GROUP_QUERY
132
- sycl::id<1 > groupD = dev.get_info <
133
- sycl::ext::oneapi::experimental::info::device::max_work_groups<1 >>();
134
- std::cout << " Max work group size in 1D \n " ;
135
- std::cout << " Dimension 1:" << groupD[0 ] << std::endl;
136
-
137
- sycl::id<2 > group2D = dev.get_info <
138
- sycl::ext::oneapi::experimental::info::device::max_work_groups<2 >>();
139
- std::cout << " Max work group size in 2D \n " ;
140
- std::cout << " Dimension 1:" << group2D[0 ] << " \n "
141
- << " Dimension 2:" << group2D[1 ] << std::endl;
142
-
143
- sycl::id<3 > group3D = dev.get_info <
144
- sycl::ext::oneapi::experimental::info::device::max_work_groups<3 >>();
145
- std::cout << " Max work group size in 3D \n " ;
146
- std::cout << " Dimension 1:" << group3D[0 ] << " \n "
147
- << " Dimension 2:" << group3D[1 ] << " \n "
148
- << " Dimension 3:" << group3D[2 ] << std::endl;
149
-
150
- size_t group_max = dev.get_info <sycl::ext::oneapi::experimental::info::
151
- device::max_global_work_groups>();
152
- std::cout << " Max global work group size:" << group_max << " \n " ;
153
-
154
- assert ((group3D[0 ] <= group_max && group3D[1 ] <= group_max &&
155
- group3D[2 ] <= group_max) &&
156
- " Max work-group size of each dimension must be smaller than "
157
- " global work-group size" );
158
- #endif
159
-
160
134
std::cout << std::endl;
161
135
}
162
136
}
0 commit comments