|
1 |
| -// Copyright (C) 2023 Intel Corporation |
| 1 | +// Copyright (C) 2023-2024 Intel Corporation |
2 | 2 | // Part of the Unified-Runtime Project, under the Apache License v2.0 with LLVM Exceptions.
|
3 | 3 | // See LICENSE.TXT
|
4 | 4 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
@@ -353,36 +353,54 @@ int ur_program_create_with_il(TestState &state) {
|
353 | 353 | }
|
354 | 354 |
|
355 | 355 | std::vector<char> il_bin;
|
356 |
| - ur_program_handle_t program = nullptr; |
357 |
| - ur_kernel_handle_t kernel = nullptr; |
358 |
| - ur_queue_handle_t queue = nullptr; |
359 |
| - ur_event_handle_t event = nullptr; |
| 356 | + ur_program_handle_t program; |
| 357 | + ur_kernel_handle_t kernel; |
| 358 | + ur_queue_handle_t queue; |
| 359 | + ur_event_handle_t event; |
360 | 360 | auto &context = state.contexts[state.context_num]->handle;
|
361 | 361 | auto &device = state.devices[state.device_num];
|
| 362 | + // TODO: Use some generic utility to retrieve/use kernels |
362 | 363 | std::string kernel_name =
|
363 |
| - uur::device_binaries::program_kernel_map["bar"][0]; |
| 364 | + uur::device_binaries::program_kernel_map["fill"][0]; |
364 | 365 |
|
365 | 366 | il_bin = state.load_kernel_source();
|
366 | 367 | if (il_bin.empty()) {
|
367 | 368 | return -1;
|
368 | 369 | }
|
369 | 370 |
|
| 371 | + constexpr int vec_size = 64; |
| 372 | + std::vector<int> vec(vec_size, 0); |
| 373 | + |
370 | 374 | urProgramCreateWithIL(context, il_bin.data(), il_bin.size(), nullptr,
|
371 | 375 | &program);
|
372 | 376 | urProgramBuild(context, program, nullptr);
|
| 377 | + |
| 378 | + ur_mem_handle_t memory_buffer; |
| 379 | + urMemBufferCreate(context, UR_MEM_FLAG_READ_WRITE, vec_size * sizeof(int), |
| 380 | + nullptr, &memory_buffer); |
373 | 381 | urKernelCreate(program, kernel_name.data(), &kernel);
|
| 382 | + urKernelSetArgMemObj(kernel, 0, nullptr, memory_buffer); |
| 383 | + |
374 | 384 | urQueueCreate(context, device, nullptr, &queue);
|
375 | 385 |
|
376 |
| - const uint32_t nDim = 3; |
377 |
| - const size_t gWorkOffset[] = {0, 0, 0}; |
378 |
| - const size_t gWorkSize[] = {128, 128, 128}; |
| 386 | + urEnqueueMemBufferWrite(queue, memory_buffer, true, 0, |
| 387 | + vec_size * sizeof(int), vec.data(), 0, nullptr, |
| 388 | + &event); |
| 389 | + urEventWait(1, &event); |
| 390 | + urEventRelease(event); |
379 | 391 |
|
380 |
| - urEnqueueKernelLaunch(queue, kernel, nDim, gWorkOffset, gWorkSize, nullptr, |
381 |
| - 0, nullptr, &event); |
| 392 | + constexpr uint32_t nDim = 3; |
| 393 | + const size_t gWorkOffset[] = {0, 0, 0}; |
| 394 | + const size_t gWorkSize[] = {vec_size * 4, 1, 1}; |
| 395 | + const size_t lWorkSize[] = {1, 1, 1}; |
382 | 396 |
|
| 397 | + urEnqueueKernelLaunch(queue, kernel, nDim, gWorkOffset, gWorkSize, |
| 398 | + lWorkSize, 0, nullptr, &event); |
383 | 399 | urEventWait(1, &event);
|
384 | 400 | urEventRelease(event);
|
| 401 | + |
385 | 402 | urQueueFinish(queue);
|
| 403 | + urMemRelease(memory_buffer); |
386 | 404 | urQueueRelease(queue);
|
387 | 405 | urKernelRelease(kernel);
|
388 | 406 | urProgramRelease(program);
|
|
0 commit comments