Skip to content

Commit

Permalink
Fix kernel not triggering in fuzz tests
Browse files Browse the repository at this point in the history
  • Loading branch information
PatKamin committed Jun 5, 2024
1 parent 22721c5 commit ed73e4b
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 12 deletions.
1 change: 1 addition & 0 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ jobs:
-DUR_BUILD_ADAPTER_L0=ON
-DUR_DPCXX=${{github.workspace}}/dpcpp_compiler/bin/clang++
-DUR_SYCL_LIBRARY_DIR=${{github.workspace}}/dpcpp_compiler/lib
-DUR_CONFORMANCE_TARGET_TRIPLES=spir64
- name: Build
run: cmake --build ${{github.workspace}}/build -j $(nproc)
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ jobs:
-DUR_BUILD_ADAPTER_L0=ON
-DUR_DPCXX=${{github.workspace}}/dpcpp_compiler/bin/clang++
-DUR_SYCL_LIBRARY_DIR=${{github.workspace}}/dpcpp_compiler/lib
-DUR_CONFORMANCE_TARGET_TRIPLES=spir64
- name: Build
run: |
Expand Down
2 changes: 1 addition & 1 deletion test/fuzz/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ function(add_fuzz_test name label)
ENVIRONMENT "${ENV_VARS}")
# TODO: Should we check if this sanitizer flag is available?
target_compile_options(${TEST_TARGET_NAME} PRIVATE -g -fsanitize=fuzzer)
target_compile_definitions(${TEST_TARGET_NAME} PRIVATE -DKERNEL_IL_PATH="${UR_CONFORMANCE_DEVICE_BINARIES_DIR}/bar/sycl_spir641.spv")
target_compile_definitions(${TEST_TARGET_NAME} PRIVATE -DKERNEL_IL_PATH="${UR_CONFORMANCE_DEVICE_BINARIES_DIR}/fill/spir64.bin.0")
target_include_directories(${TEST_TARGET_NAME} PRIVATE ${UR_CONFORMANCE_DEVICE_BINARIES_DIR})

add_dependencies(${TEST_TARGET_NAME} generate_device_binaries)
Expand Down
37 changes: 27 additions & 10 deletions test/fuzz/urFuzz.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -353,36 +353,53 @@ int ur_program_create_with_il(TestState &state) {
}

std::vector<char> il_bin;
ur_program_handle_t program = nullptr;
ur_kernel_handle_t kernel = nullptr;
ur_queue_handle_t queue = nullptr;
ur_event_handle_t event = nullptr;
ur_program_handle_t program;
ur_kernel_handle_t kernel;
ur_queue_handle_t queue;
ur_event_handle_t event;
auto &context = state.contexts[state.context_num]->handle;
auto &device = state.devices[state.device_num];
std::string kernel_name =
uur::device_binaries::program_kernel_map["bar"][0];
uur::device_binaries::program_kernel_map["fill"][0];

il_bin = state.load_kernel_source();
if (il_bin.empty()) {
return -1;
}

constexpr int vec_size = 64;
std::vector<int> vec(vec_size, 0);

urProgramCreateWithIL(context, il_bin.data(), il_bin.size(), nullptr,
&program);
urProgramBuild(context, program, nullptr);

ur_mem_handle_t memory_buffer;
urMemBufferCreate(context, UR_MEM_FLAG_READ_WRITE, vec_size * sizeof(int),
nullptr, &memory_buffer);
urKernelCreate(program, kernel_name.data(), &kernel);
urKernelSetArgMemObj(kernel, 0, nullptr, memory_buffer);

urQueueCreate(context, device, nullptr, &queue);

const uint32_t nDim = 3;
const size_t gWorkOffset[] = {0, 0, 0};
const size_t gWorkSize[] = {128, 128, 128};
urEnqueueMemBufferWrite(queue, memory_buffer, true, 0,
vec_size * sizeof(int), vec.data(), 0, nullptr,
&event);
urEventWait(1, &event);
urEventRelease(event);

urEnqueueKernelLaunch(queue, kernel, nDim, gWorkOffset, gWorkSize, nullptr,
0, nullptr, &event);
constexpr uint32_t nDim = 3;
const size_t gWorkOffset[] = {0, 0, 0};
const size_t gWorkSize[] = {vec_size * 4, 1, 1};
const size_t lWorkSize[] = {1, 1, 1};

urEnqueueKernelLaunch(queue, kernel, nDim, gWorkOffset, gWorkSize,
lWorkSize, 0, nullptr, &event);
urEventWait(1, &event);
urEventRelease(event);

urQueueFinish(queue);
urMemRelease(memory_buffer);
urQueueRelease(queue);
urKernelRelease(kernel);
urProgramRelease(program);
Expand Down
6 changes: 5 additions & 1 deletion test/fuzz/utils.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,11 @@ struct TestState {
uint8_t context_num;

TestState(std::unique_ptr<FuzzedDataProvider> data_provider)
: data_provider(std::move(data_provider)) {}
: data_provider(std::move(data_provider)) {
num_adapters = 0;
num_platforms = 0;
num_devices = 0;
}

template <typename IntType> int get_next_input_data(IntType *data) {
if (data_provider->remaining_bytes() < sizeof(IntType)) {
Expand Down

0 comments on commit ed73e4b

Please sign in to comment.