Skip to content

Commit c02bf54

Browse files
committed
[NFC] regen code after formatting changes in fd6b63b and f68e8c0
clang-format and generation rules were updated. This is simply a run of the generator on that code. If you need to rebase as a result of the churn, all that should be needed is to run the generate target on "theirs".
1 parent 6513761 commit c02bf54

File tree

409 files changed

+105730
-103849
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

409 files changed

+105730
-103849
lines changed

examples/codegen/codegen.cpp

Lines changed: 130 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@
22
*
33
* Copyright (C) 2023 Intel Corporation
44
*
5-
* Part of the Unified-Runtime Project, under the Apache License v2.0 with LLVM Exceptions.
6-
* See LICENSE.TXT
7-
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5+
* Part of the Unified-Runtime Project, under the Apache License v2.0 with LLVM
6+
* Exceptions. See LICENSE.TXT SPDX-License-Identifier: Apache-2.0 WITH
7+
* LLVM-exception
88
*
99
* @file codegen.cpp
1010
*
11-
* @brief UR code generation and execution example for use with the Level Zero adapter.
11+
* @brief UR code generation and execution example for use with the Level Zero
12+
* adapter.
1213
*
1314
* The codegen example demonstrates a complete flow for generating LLVM IR,
14-
* translating it to SPIR-V, and submitting the kernel to Level Zero Runtime via UR API.
15+
* translating it to SPIR-V, and submitting the kernel to Level Zero Runtime via
16+
* UR API.
1517
*/
1618

1719
#include <iostream>
@@ -23,154 +25,153 @@
2325
constexpr unsigned PAGE_SIZE = 4096;
2426

2527
void ur_check(const ur_result_t r) {
26-
if (r != UR_RESULT_SUCCESS) {
27-
urLoaderTearDown();
28-
throw std::runtime_error("Unified runtime error: " + std::to_string(r));
29-
}
28+
if (r != UR_RESULT_SUCCESS) {
29+
urLoaderTearDown();
30+
throw std::runtime_error("Unified runtime error: " + std::to_string(r));
31+
}
3032
}
3133

3234
std::vector<ur_adapter_handle_t> get_adapters() {
33-
uint32_t adapterCount = 0;
34-
ur_check(urAdapterGet(0, nullptr, &adapterCount));
35+
uint32_t adapterCount = 0;
36+
ur_check(urAdapterGet(0, nullptr, &adapterCount));
3537

36-
if (!adapterCount) {
37-
throw std::runtime_error("No adapters available.");
38-
}
38+
if (!adapterCount) {
39+
throw std::runtime_error("No adapters available.");
40+
}
3941

40-
std::vector<ur_adapter_handle_t> adapters(adapterCount);
41-
ur_check(urAdapterGet(adapterCount, adapters.data(), nullptr));
42-
return adapters;
42+
std::vector<ur_adapter_handle_t> adapters(adapterCount);
43+
ur_check(urAdapterGet(adapterCount, adapters.data(), nullptr));
44+
return adapters;
4345
}
4446

4547
std::vector<ur_adapter_handle_t>
4648
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-
}
49+
std::vector<ur_adapter_handle_t> supported_adapters;
50+
for (auto adapter : adapters) {
51+
ur_adapter_backend_t backend;
52+
ur_check(urAdapterGetInfo(adapter, UR_ADAPTER_INFO_BACKEND,
53+
sizeof(ur_adapter_backend_t), &backend, nullptr));
54+
55+
if (backend == UR_ADAPTER_BACKEND_LEVEL_ZERO) {
56+
supported_adapters.push_back(adapter);
5757
}
58+
}
5859

59-
return supported_adapters;
60+
return supported_adapters;
6061
}
6162

6263
std::vector<ur_platform_handle_t>
6364
get_platforms(std::vector<ur_adapter_handle_t> &adapters) {
64-
uint32_t platformCount = 0;
65-
ur_check(urPlatformGet(adapters.data(), adapters.size(), 1, nullptr,
66-
&platformCount));
67-
68-
if (!platformCount) {
69-
throw std::runtime_error("No platforms available.");
70-
}
71-
72-
std::vector<ur_platform_handle_t> platforms(platformCount);
73-
ur_check(urPlatformGet(adapters.data(), adapters.size(), platformCount,
74-
platforms.data(), nullptr));
75-
return platforms;
65+
uint32_t platformCount = 0;
66+
ur_check(urPlatformGet(adapters.data(), adapters.size(), 1, nullptr,
67+
&platformCount));
68+
69+
if (!platformCount) {
70+
throw std::runtime_error("No platforms available.");
71+
}
72+
73+
std::vector<ur_platform_handle_t> platforms(platformCount);
74+
ur_check(urPlatformGet(adapters.data(), adapters.size(), platformCount,
75+
platforms.data(), nullptr));
76+
return platforms;
7677
}
7778

7879
std::vector<ur_device_handle_t> get_gpus(ur_platform_handle_t p) {
79-
uint32_t deviceCount = 0;
80-
ur_check(urDeviceGet(p, UR_DEVICE_TYPE_GPU, 0, nullptr, &deviceCount));
80+
uint32_t deviceCount = 0;
81+
ur_check(urDeviceGet(p, UR_DEVICE_TYPE_GPU, 0, nullptr, &deviceCount));
8182

82-
if (!deviceCount) {
83-
throw std::runtime_error("No GPUs available.");
84-
}
83+
if (!deviceCount) {
84+
throw std::runtime_error("No GPUs available.");
85+
}
8586

86-
std::vector<ur_device_handle_t> devices(deviceCount);
87-
ur_check(urDeviceGet(p, UR_DEVICE_TYPE_GPU, deviceCount, devices.data(),
88-
nullptr));
89-
return devices;
87+
std::vector<ur_device_handle_t> devices(deviceCount);
88+
ur_check(
89+
urDeviceGet(p, UR_DEVICE_TYPE_GPU, deviceCount, devices.data(), nullptr));
90+
return devices;
9091
}
9192

9293
template <typename T, size_t N> struct alignas(PAGE_SIZE) AlignedArray {
93-
T data[N];
94+
T data[N];
9495
};
9596

9697
int main() {
97-
ur_loader_config_handle_t loader_config = nullptr;
98-
ur_check(urLoaderInit(UR_DEVICE_INIT_FLAG_GPU, loader_config));
99-
100-
auto adapters = get_adapters();
101-
auto supported_adapters = get_supported_adapters(adapters);
102-
auto platforms = get_platforms(supported_adapters);
103-
auto gpus = get_gpus(platforms.front());
104-
auto spv = generate_plus_one_spv();
105-
106-
constexpr int a_size = 32;
107-
AlignedArray<int, a_size> a, b;
108-
for (auto i = 0; i < a_size; ++i) {
109-
a.data[i] = a_size - i;
110-
b.data[i] = i;
111-
}
112-
113-
auto current_device = gpus.front();
114-
115-
ur_context_handle_t hContext;
116-
ur_check(urContextCreate(1, &current_device, nullptr, &hContext));
117-
118-
ur_program_handle_t hProgram;
119-
ur_check(urProgramCreateWithIL(hContext, spv.data(), spv.size(), nullptr,
120-
&hProgram));
121-
ur_check(urProgramBuild(hContext, hProgram, nullptr));
122-
123-
ur_mem_handle_t dA, dB;
124-
ur_check(urMemBufferCreate(hContext, UR_MEM_FLAG_READ_WRITE,
125-
a_size * sizeof(int), nullptr, &dA));
126-
ur_check(urMemBufferCreate(hContext, UR_MEM_FLAG_READ_WRITE,
127-
a_size * sizeof(int), nullptr, &dB));
128-
129-
ur_kernel_handle_t hKernel;
130-
ur_check(urKernelCreate(hProgram, "plus1", &hKernel));
131-
ur_check(urKernelSetArgMemObj(hKernel, 0, nullptr, dA));
132-
ur_check(urKernelSetArgMemObj(hKernel, 1, nullptr, dB));
133-
134-
ur_queue_handle_t queue;
135-
ur_check(urQueueCreate(hContext, current_device, nullptr, &queue));
136-
137-
ur_check(urEnqueueMemBufferWrite(queue, dA, true, 0, a_size * sizeof(int),
138-
a.data, 0, nullptr, nullptr));
139-
ur_check(urEnqueueMemBufferWrite(queue, dB, true, 0, a_size * sizeof(int),
140-
b.data, 0, nullptr, nullptr));
141-
142-
const size_t gWorkOffset[] = {0, 0, 0};
143-
const size_t gWorkSize[] = {128, 1, 1};
144-
const size_t lWorkSize[] = {1, 1, 1};
145-
ur_event_handle_t event;
146-
ur_check(urEnqueueKernelLaunch(queue, hKernel, 3, gWorkOffset, gWorkSize,
147-
lWorkSize, 0, nullptr, &event));
148-
149-
ur_check(urEnqueueMemBufferRead(queue, dB, true, 0, a_size * sizeof(int),
150-
b.data, 1, &event, nullptr));
151-
152-
ur_check(urQueueFinish(queue));
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: ";
163-
for (int i = 0; i < a_size; ++i) {
164-
std::cout << b.data[i] << " ";
165-
expectedResult |= (b.data[i] == a.data[i] + 1);
166-
}
167-
std::cout << std::endl;
168-
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 urLoaderTearDown() == UR_RESULT_SUCCESS && expectedResult ? 0 : 1;
98+
ur_loader_config_handle_t loader_config = nullptr;
99+
ur_check(urLoaderInit(UR_DEVICE_INIT_FLAG_GPU, loader_config));
100+
101+
auto adapters = get_adapters();
102+
auto supported_adapters = get_supported_adapters(adapters);
103+
auto platforms = get_platforms(supported_adapters);
104+
auto gpus = get_gpus(platforms.front());
105+
auto spv = generate_plus_one_spv();
106+
107+
constexpr int a_size = 32;
108+
AlignedArray<int, a_size> a, b;
109+
for (auto i = 0; i < a_size; ++i) {
110+
a.data[i] = a_size - i;
111+
b.data[i] = i;
112+
}
113+
114+
auto current_device = gpus.front();
115+
116+
ur_context_handle_t hContext;
117+
ur_check(urContextCreate(1, &current_device, nullptr, &hContext));
118+
119+
ur_program_handle_t hProgram;
120+
ur_check(urProgramCreateWithIL(hContext, spv.data(), spv.size(), nullptr,
121+
&hProgram));
122+
ur_check(urProgramBuild(hContext, hProgram, nullptr));
123+
124+
ur_mem_handle_t dA, dB;
125+
ur_check(urMemBufferCreate(hContext, UR_MEM_FLAG_READ_WRITE,
126+
a_size * sizeof(int), nullptr, &dA));
127+
ur_check(urMemBufferCreate(hContext, UR_MEM_FLAG_READ_WRITE,
128+
a_size * sizeof(int), nullptr, &dB));
129+
130+
ur_kernel_handle_t hKernel;
131+
ur_check(urKernelCreate(hProgram, "plus1", &hKernel));
132+
ur_check(urKernelSetArgMemObj(hKernel, 0, nullptr, dA));
133+
ur_check(urKernelSetArgMemObj(hKernel, 1, nullptr, dB));
134+
135+
ur_queue_handle_t queue;
136+
ur_check(urQueueCreate(hContext, current_device, nullptr, &queue));
137+
138+
ur_check(urEnqueueMemBufferWrite(queue, dA, true, 0, a_size * sizeof(int),
139+
a.data, 0, nullptr, nullptr));
140+
ur_check(urEnqueueMemBufferWrite(queue, dB, true, 0, a_size * sizeof(int),
141+
b.data, 0, nullptr, nullptr));
142+
143+
const size_t gWorkOffset[] = {0, 0, 0};
144+
const size_t gWorkSize[] = {128, 1, 1};
145+
const size_t lWorkSize[] = {1, 1, 1};
146+
ur_event_handle_t event;
147+
ur_check(urEnqueueKernelLaunch(queue, hKernel, 3, gWorkOffset, gWorkSize,
148+
lWorkSize, 0, nullptr, &event));
149+
150+
ur_check(urEnqueueMemBufferRead(queue, dB, true, 0, a_size * sizeof(int),
151+
b.data, 1, &event, nullptr));
152+
153+
ur_check(urQueueFinish(queue));
154+
155+
std::cout << "Input Array: ";
156+
for (int i = 0; i < a_size; ++i) {
157+
std::cout << a.data[i] << " ";
158+
}
159+
std::cout << std::endl;
160+
161+
bool expectedResult = false;
162+
163+
std::cout << "Output Array: ";
164+
for (int i = 0; i < a_size; ++i) {
165+
std::cout << b.data[i] << " ";
166+
expectedResult |= (b.data[i] == a.data[i] + 1);
167+
}
168+
std::cout << std::endl;
169+
170+
if (expectedResult) {
171+
std::cout << "Results are correct." << std::endl;
172+
} else {
173+
std::cout << "Results are incorrect." << std::endl;
174+
}
175+
176+
return urLoaderTearDown() == UR_RESULT_SUCCESS && expectedResult ? 0 : 1;
176177
}

0 commit comments

Comments
 (0)