20
20
#include " helpers.h"
21
21
#include " ur_api.h"
22
22
23
+ constexpr unsigned PAGE_SIZE = 4096 ;
24
+
23
25
void ur_check (const ur_result_t r) {
24
26
if (r != UR_RESULT_SUCCESS) {
25
27
urTearDown (nullptr );
@@ -40,6 +42,23 @@ std::vector<ur_adapter_handle_t> get_adapters() {
40
42
return adapters;
41
43
}
42
44
45
+ std::vector<ur_adapter_handle_t >
46
+ get_supported_adapters (std::vector<ur_adapter_handle_t > &adapters) {
47
+ std::vector<ur_adapter_handle_t > supported_adapters;
48
+ for (auto adapter : adapters) {
49
+ ur_adapter_backend_t backend;
50
+ ur_check (urAdapterGetInfo (adapter, UR_ADAPTER_INFO_BACKEND,
51
+ sizeof (ur_adapter_backend_t ), &backend,
52
+ nullptr ));
53
+
54
+ if (backend == UR_ADAPTER_BACKEND_LEVEL_ZERO) {
55
+ supported_adapters.push_back (adapter);
56
+ }
57
+ }
58
+
59
+ return supported_adapters;
60
+ }
61
+
43
62
std::vector<ur_platform_handle_t >
44
63
get_platforms (std::vector<ur_adapter_handle_t > &adapters) {
45
64
uint32_t platformCount = 0 ;
@@ -70,7 +89,7 @@ std::vector<ur_device_handle_t> get_gpus(ur_platform_handle_t p) {
70
89
return devices;
71
90
}
72
91
73
- template <typename T, size_t N> struct alignas (4096 ) AlignedArray {
92
+ template <typename T, size_t N> struct alignas (PAGE_SIZE ) AlignedArray {
74
93
T data[N];
75
94
};
76
95
@@ -79,7 +98,8 @@ int main() {
79
98
ur_check (urInit (UR_DEVICE_INIT_FLAG_GPU, loader_config));
80
99
81
100
auto adapters = get_adapters ();
82
- auto platforms = get_platforms (adapters);
101
+ auto supported_adapters = get_supported_adapters (adapters);
102
+ auto platforms = get_platforms (supported_adapters);
83
103
auto gpus = get_gpus (platforms.front ());
84
104
auto spv = generate_plus_one_spv ();
85
105
@@ -131,10 +151,26 @@ int main() {
131
151
132
152
ur_check (urQueueFinish (queue));
133
153
154
+ std::cout << " Input Array: " ;
155
+ for (int i = 0 ; i < a_size; ++i) {
156
+ std::cout << a.data [i] << " " ;
157
+ }
158
+ std::cout << std::endl;
159
+
160
+ bool expectedResult = false ;
161
+
162
+ std::cout << " Output Array: " ;
134
163
for (int i = 0 ; i < a_size; ++i) {
135
164
std::cout << b.data [i] << " " ;
165
+ expectedResult |= (b.data [i] == a.data [i] + 1 );
136
166
}
137
167
std::cout << std::endl;
138
168
139
- return urTearDown (nullptr ) == UR_RESULT_SUCCESS ? 0 : 1 ;
169
+ if (expectedResult) {
170
+ std::cout << " Results are correct." << std::endl;
171
+ } else {
172
+ std::cout << " Results are incorrect." << std::endl;
173
+ }
174
+
175
+ return urTearDown (nullptr ) == UR_RESULT_SUCCESS && expectedResult ? 0 : 1 ;
140
176
}
0 commit comments