Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion sycl/test/basic_tests/event.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
// REQUIRES: opencl
// REQUIRES: opencl || level0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder how clCreateUserEvent call below will be processed if only Level0 RT is available

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clCreateUserEvent is not called for host and the test sets SYCL_DEVICE_TYPE=HOST. Do you suggest separating this test too?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not quite understand the logic of the test:

  1. if we force HOST device lines 26-31 are dead code.
  2. It looks like the whole test check host events. What is the reason for having OpenCL or Level0 BE?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that is true. I am modifying this.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

215f591 changed this feature name.

level0 -> level_zero

Please, fix ASAP.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

up for review #2235


// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -o %t.out -L %opencl_libs_dir -lOpenCL
// RUN: env SYCL_DEVICE_TYPE=HOST %t.out
// RUN: %CPU_RUN_PLACEHOLDER %t.out
// RUN: %GPU_RUN_PLACEHOLDER %t.out

//==--------------- event.cpp - SYCL event test ----------------------------==//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
Expand Down
24 changes: 1 addition & 23 deletions sycl/test/inorder_queue/in_order_buffs.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
// REQUIRES: opencl

// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -o %t.out -L %opencl_libs_dir -lOpenCL
// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -o %t.out
// RUN: %ACC_RUN_PLACEHOLDER %t.out
// RUN: %CPU_RUN_PLACEHOLDER %t.out
// RUN: %GPU_RUN_PLACEHOLDER %t.out
Expand All @@ -18,14 +16,6 @@ using namespace cl::sycl;

const int dataSize = 32;

bool isQueueInOrder(cl_command_queue cq) {
cl_command_queue_properties reportedProps;
cl_int iRet = clGetCommandQueueInfo(
cq, CL_QUEUE_PROPERTIES, sizeof(reportedProps), &reportedProps, nullptr);
assert(CL_SUCCESS == iRet && "Failed to obtain queue info from ocl device");
return (!(reportedProps & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE));
}

int main() {
int dataA[dataSize] = {0};
int dataB[dataSize] = {0};
Expand Down Expand Up @@ -63,18 +53,6 @@ int main() {
cgh.parallel_for<class ordered_reader>(myRange, myKernel);
});

bool result = true;
cl_command_queue cq = Queue.get();
device dev = Queue.get_device();
bool expected_result = dev.is_host() ? true : isQueueInOrder(cq);

if (expected_result != result) {
std::cout << "Resulting queue order is OOO but expected order is inorder"
<< std::endl;

return -1;
}

auto readBufferB = bufB.get_access<access::mode::read>();
for (size_t i = 0; i != dataSize; ++i) {
if (readBufferB[i] != i) {
Expand Down
50 changes: 50 additions & 0 deletions sycl/test/inorder_queue/in_order_buffs_ocl.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// REQUIRES: opencl

// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -o %t.out -L %opencl_libs_dir -lOpenCL
// RUN: %ACC_RUN_PLACEHOLDER %t.out
// RUN: %CPU_RUN_PLACEHOLDER %t.out
// RUN: %GPU_RUN_PLACEHOLDER %t.out
//==-------- ordered_buffs.cpp - SYCL buffers in ordered queues test--------==//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include <CL/sycl.hpp>
#include <iostream>

using namespace cl::sycl;

const int dataSize = 32;

bool isQueueInOrder(cl_command_queue cq) {
cl_command_queue_properties reportedProps;
cl_int iRet = clGetCommandQueueInfo(
cq, CL_QUEUE_PROPERTIES, sizeof(reportedProps), &reportedProps, nullptr);
assert(CL_SUCCESS == iRet && "Failed to obtain queue info from ocl device");
return (!(reportedProps & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE));
}

int main() {
int dataA[dataSize] = {0};
int dataB[dataSize] = {0};

{
queue Queue{property::queue::in_order()};

bool result = true;
cl_command_queue cq = Queue.get();
device dev = Queue.get_device();
bool expected_result = dev.is_host() ? true : isQueueInOrder(cq);

if (expected_result != result) {
std::cout << "Resulting queue order is OOO but expected order is inorder"
<< std::endl;

return -1;
}
}

return 0;
}
25 changes: 3 additions & 22 deletions sycl/test/inorder_queue/in_order_dmemll.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// REQUIRES: opencl

// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -o %t1.out -L %opencl_libs_dir -lOpenCL
// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -o %t1.out
// RUN: %CPU_RUN_PLACEHOLDER %t1.out
// RUN: %GPU_RUN_PLACEHOLDER %t1.out
//
// XFAIL: cuda
//==----------- ordered_dmemll.cpp - Device Memory Linked List test --------==//
// It uses an ordered queue where explicit waiting is not necessary between
// kernels
Expand All @@ -19,15 +19,6 @@ using namespace cl::sycl;

constexpr int numNodes = 4;

bool getQueueOrder(cl_command_queue cq) {
cl_command_queue_properties reportedProps;
cl_int iRet = clGetCommandQueueInfo(
cq, CL_QUEUE_PROPERTIES, sizeof(reportedProps), &reportedProps, nullptr);
assert(CL_SUCCESS == iRet && "Failed to obtain queue info from ocl device");
return (reportedProps & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE) ? false
: true;
}

struct Node {
Node() : pNext(nullptr), Num(0xDEADBEEF) {}

Expand Down Expand Up @@ -103,15 +94,5 @@ int main() {
d_cur = h_cur.pNext;
}

bool result = true;
cl_command_queue cq = q.get();
bool expected_result = dev.is_host() ? true : getQueueOrder(cq);
if (expected_result != result) {
std::cout << "Resulting queue order is OOO but expected order is inorder"
<< std::endl;

return -1;
}

return 0;
}
46 changes: 46 additions & 0 deletions sycl/test/inorder_queue/in_order_dmemll_ocl.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// REQUIRES: opencl

// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -o %t1.out -L %opencl_libs_dir -lOpenCL
// RUN: %CPU_RUN_PLACEHOLDER %t1.out
// RUN: %GPU_RUN_PLACEHOLDER %t1.out
//==----------- ordered_dmemll.cpp - Device Memory Linked List test --------==//
// It uses an ordered queue where explicit waiting is not necessary between
// kernels
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#include <CL/sycl.hpp>

using namespace cl::sycl;

constexpr int numNodes = 4;

bool getQueueOrder(cl_command_queue cq) {
cl_command_queue_properties reportedProps;
cl_int iRet = clGetCommandQueueInfo(
cq, CL_QUEUE_PROPERTIES, sizeof(reportedProps), &reportedProps, nullptr);
assert(CL_SUCCESS == iRet && "Failed to obtain queue info from ocl device");
return (reportedProps & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE) ? false
: true;
}

int main() {
queue q{property::queue::in_order()};
auto dev = q.get_device();

bool result = true;
cl_command_queue cq = q.get();
bool expected_result = dev.is_host() ? true : getQueueOrder(cq);
if (expected_result != result) {
std::cout << "Resulting queue order is OOO but expected order is inorder"
<< std::endl;

return -1;
}

return 0;
}
Loading