|
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