commit | a37884fe4461362c39a444f39402baebac3e713b | [log] [tgz] |
---|---|---|
author | Callum Fare <callum@codeplay.com> | Tue Jul 19 17:43:36 2022 +0100 |
committer | GitHub <noreply@github.com> | Tue Jul 19 17:43:36 2022 +0100 |
tree | 6a3599f38d2818249ece8a41ee75dd3e347de0d0 | |
parent | 8d9d1f3e9da069cf5d224025160628ab3911ba00 [diff] |
Update cl_khr_extended_async_copies tests to the latest extension version (#1426) * Update cl_khr_extended_async_copies tests to the latest version of the extension Update the 2D and 3D extended async copies tests. Previously they were based on an older provisional version of the extension. Also update the variable names to only use 'stride' to refer to the actual stride values. Previously the tests used 'stride' to refer to the end of one line or plane and the start of the next. This is not the commonly understood meaning. * Address cl_khr_extended_async_copies PR feedback * Remove unnecessary parenthesis in kernel code * Make variables `const` and rearrange so that we can reuse variables, rather than repeating expressions. * Add in missing vector size of 3 for 2D tests * Use C++ String literals for kernel code Rather than C strings use C++11 string literals to define the kernel code in the extended async-copy tests. Doing this makes the kernel code more readable. Co-authored-by: Ewan Crawford <ewan@codeplay.com>
This it the OpenCL CTS for all versions of the Khronos OpenCL standard.
The CTS supports Linux, Windows, macOS, and Android platforms. In particular, GitHub Actions CI builds against Ubuntu 20.04, Windows-latest, and macos-latest.
Compiling the CTS requires the following CMake configuration options to be set:
CL_INCLUDE_DIR
Points to the unified OpenCL-Headers.CL_LIB_DIR
Directory containing the OpenCL library to build against.OPENCL_LIBRARIES
Name of the OpenCL library to link.It is advised that the OpenCL ICD-Loader is used as the OpenCL library to build against. Where CL_LIB_DIR
points to a build of the ICD loader and OPENCL_LIBRARIES
is “OpenCL”.
Steps on a Linux platform to clone dependencies from GitHub sources, configure a build, and compile.
git clone https://github.com/KhronosGroup/OpenCL-CTS.git git clone https://github.com/KhronosGroup/OpenCL-Headers.git git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git mkdir OpenCL-ICD-Loader/build cmake -S OpenCL-ICD-Loader -B OpenCL-ICD-Loader/build \ -DOPENCL_ICD_LOADER_HEADERS_DIR=$PWD/OpenCL-Headers cmake --build ./OpenCL-ICD-Loader/build --config Release mkdir OpenCL-CTS/build cmake -S OpenCL-CTS -B OpenCL-CTS/build \ -DCL_INCLUDE_DIR=$PWD/OpenCL-Headers \ -DCL_LIB_DIR=$PWD/OpenCL-ICD-Loader/build \ -DOPENCL_LIBRARIES=OpenCL cmake --build OpenCL-CTS/build --config Release
A build of the CTS contains multiple executables representing the directories in the test_conformance
folder. Each of these executables contains sub-tests, and possibly smaller granularities of testing within the sub-tests.
See the --help
output on each executable for the list of sub-tests available, as well as other options for configuring execution.
If the OpenCL library built against is the ICD Loader, and the vendor library to be tested is not registered in the default ICD Loader location then the OCL_ICD_FILENAMES environment variable will need to be set for the ICD Loader to detect the OpenCL library to use at runtime. For example, to run the basic tests on a Linux platform:
OCL_ICD_FILENAMES=/path/to/vendor_lib.so ./test_basic
Testing OpenCL drivers which do not have a runtime compiler can be done by using additional command line arguments provided by the test harness for tests which require compilation, these are:
--compilation-mode
Selects if OpenCL-C source code should be compiled using an external tool before being passed on to the OpenCL driver in that form for testing. Online is the default mode, but also accepts the values spir-v
, and binary
.
--compilation-cache-mode
Controls how the compiled OpenCL-C source code should be cached on disk.
--compilation-cache-path
Accepts a path to a directory where the compiled binary cache should be stored on disk.
--compilation-program
Accepts a path to an executable (default: cl_offline_compiler) invoked by the test harness to perform offline compilation of OpenCL-C source code. This executable must match the interface description.
The Khronos Conformance Process Document details the steps required for a conformance submissions. In this repository opencl_conformance_tests_full.csv defines the full list of tests which must be run for conformance. The output log of which must be included alongside a filled in submission details template.
Utility script run_conformance.py can be used to help generating the submission log, although it is not required.
Git tags are used to define the version of the repository conformance submissions are made against.
Contributions are welcome to the project from Khronos members and non-members alike via GitHub Pull Requests (PR). Alternatively, if you've found a bug or have a questions please file an issue in the GitHub project. First time contributors will be required to sign the Khronos Contributor License Agreement (CLA) before their PR can be merged.
PRs to the repository are required to be clang-format
clean to pass CI. Developers can either use the git-clang-format
tool locally to verify this before contributing, or update their PR based on the diff provided by a failing CI job.