The input language is OpenCL C version 1.2.
Read the OpenCL C on Vulkan Specification for more
information on the support and the mapping into Vulkan compute shaders.
Examples
Compile a set of kernels into a SPIR-V binary module:
clspv foo.cl -o foo.spv
Emit the binary as a C initializer list, for easy embedding of a shader in
in a C or C++ program source:
Compiler Explorer is an interactive compiler exploration website. Edit code in C, C++, C#, F#, Rust, Go, D, Haskell, Swift, Pascal, ispc, Python, Java or in any of the other 30+ supported languages, and see how that code looks after being compiled in real time. Multiple compilers are supported for each language, many different tools and visualisations are available, and the UI layout is configurable (thanks to GoldenLayout).
clspv is available in compiler-explorer among the OpenCL C compilers.
It is built daily by the compiler-explorer infrastructure.
Build
Tools
You will need:
CMake
Python3
A C++ compiler
git
Getting sources for dependencies
Clspv depends on the sources for other projects, at specific commits.
Run the following command to download those dependencies, and place them
in the third_party directory:
python3 utils/fetch_sources.py
Building
Then, create a build directory:
cd <clspv-dir>
mkdir build
cd build
Then configure and build the code:
cmake <clspv-dir>
cmake --build .
This will build the clspv command line compiler and place it in
location bin/clspv under the build directory.
Using Ninja to build, and other build options
We recommend you use the [Ninja][Ninja] build tool if it’s available.
To do so, replace the last two commands with:
cmake -G Ninja <clspv-dir>
ninja
Other useful configuration options (the first cmake command):
-DCMAKE_BUILD_TYPE=RelWithDebInfo : Build in release mode, with debugging
information. Default is a debug build.
clspv
Clspv is a compiler for OpenCL C targeting Vulkan compute shaders.
It consists of:
Clspv depends on external projects:
Legal
Clspv is licensed under the terms of the Apache 2.0 license. The AUTHORS file lists the copyright owners, while individual credit is given in the CONTRIBUTORS file. To contribute, see CONTRIBUTING.md.
Materials in projects Clspv depends on are licensed under their own terms.
Clspv is not an official Google product.
Status
Clspv has passed OpenCL3.0 conformance with:
The input language is OpenCL C version 1.2. Read the OpenCL C on Vulkan Specification for more information on the support and the mapping into Vulkan compute shaders.
Examples
Compile a set of kernels into a SPIR-V binary module:
Emit the binary as a C initializer list, for easy embedding of a shader in in a C or C++ program source:
Predefine some preprocessor symbols:
Use OpenCL compiler options:
Show help:
Compiler-explorer
clspv is available in compiler-explorer among the
OpenCL Ccompilers.It is built daily by the compiler-explorer infrastructure.
Build
Tools
You will need:
Getting sources for dependencies
Clspv depends on the sources for other projects, at specific commits. Run the following command to download those dependencies, and place them in the
third_partydirectory:Building
Then, create a build directory:
Then configure and build the code:
This will build the
clspvcommand line compiler and place it in locationbin/clspvunder the build directory.Using Ninja to build, and other build options
We recommend you use the [Ninja][Ninja] build tool if it’s available. To do so, replace the last two commands with:
Other useful configuration options (the first
cmakecommand):-DCMAKE_BUILD_TYPE=RelWithDebInfo: Build in release mode, with debugging information. Default is a debug build.See the CMake documentation for more generic options.
Test
To run the test suite from within the build directory:
Or if you are using Ninja:
[libclc] https://libclc.llvm.org [LLVM]: //mirrors/clspv/tree/main/http:/llvm.org [Ninja]: //mirrors/clspv/tree/main/https:/ninja-build.org [SPIRV-Headers]: https://github.com/KhronosGroup/SPIRV-Headers [SPIRV-Tools]: https://github.com/KhronosGroup/SPIRV-Tools