clspv

Clspv is a prototype compiler for a subset of OpenCL C to Vulkan compute shaders

Github星跟蹤圖

clspv

Clspv is a prototype compiler for a subset of OpenCL C to Vulkan
compute shaders.

It consists of:

  • A set of LLVM Module passes to transform a dialect of LLVM IR into
    a SPIR-V module containing Vulkan compute shaders.
  • A command line compiler tool called 'clspv' to compile a subset of
    OpenCL C into a Vulkan compute shader.

Clspv depends on external projects:

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

The compiler is an incomplete prototype, with many rough edges.

The input language is a subset of OpenCL C version 1.2.
The OpenCL C on Vulkan Specification
describes the specific subset, and also 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:

clspv -mfmt=c foo.cl -o -

Predefine some preprocessor symbols:

clspv -DWIDTH=32 -DHEIGHT=64 foo.cl -o foo.spv

Use OpenCL compiler options:

clspv -cl-fast-relaxed-math -cl-single-precision-constant foo.cl -o foo.spv

Show help:

clspv -help

Build

Tools

You will need:

  • CMake
  • Python
  • 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:

python 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 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.

See the CMake documentation for more generic options.

Test

To run the test suite from within the build directory:

cmake --build . --target check-spirv

Or if you are using Ninja:

ninja check-spirv

主要指標

概覽
名稱與所有者google/clspv
主編程語言LLVM
編程語言CMake (語言數: 10)
平台
許可證Apache License 2.0
所有者活动
創建於2017-07-12 14:54:18
推送於2025-05-30 06:22:51
最后一次提交
發布數2
最新版本名稱clvk-khronos-submission-419 (發布於 )
第一版名稱transparent-pointers (發布於 )
用户参与
星數671
關注者數44
派生數93
提交數1k
已啟用問題?
問題數454
打開的問題數79
拉請求數954
打開的拉請求數7
關閉的拉請求數76
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?