Vcc – The Vulkan Clang Compiler

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • DirectXShaderCompiler

    This repo hosts the source for the DirectX Shader Compiler which is based on LLVM/Clang.

  • Also Microsoft DirectX Shader Compiler[1] for HLSL. In fact, effort is ongoing to upstream HLSL support into Clang.[2][3][4]

    To answer your other question—why LLVM instead of GCC:

    - First-class support for non-Unix/Linux platforms. LLVM can be built on Windows and Visual Studio without ever needing a single GNU tool besides git[5]. Clang even has a MSVC-compatible interface that allows MSVC developers to switch to Clang without needing to change their command-line invocation[6].

    - Written in C++ from the ground up, with a modular, first-class SSA IR-based interface.

    - Permissive Apache 2.0 licence. As much as this might exasperate the open-source community, it allows for significantly faster iteration; things tend to be upstreamed when private/corporate developers realise it is hard to maintain separate forks.

    All this allows LLVM to have a pretty mature infrastructure; some very large companies have contributed to its development.

    [1]: https://github.com/microsoft/DirectXShaderCompiler

    [2]: https://clang.llvm.org/docs/HLSL/HLSLDocs.html

    [3]: https://github.com/microsoft/DirectXShaderCompiler/wiki/Cont...

    [4]: https://discourse.llvm.org/t/rfc-adding-hlsl-and-directx-sup...

    [5]: https://llvm.org/docs/GettingStartedVS.html

    [6]: https://clang.llvm.org/docs/UsersManual.html#clang-cl

  • shady

    Research shading language IR

  • Sounds cool, but this requires yet another language to learn[0]. As someone who only has limited knowledge in this space, could someone tell me how comparable is the compute functionality of rust-gpu[1], where I can just write rust?

    [0] https://github.com/Hugobros3/shady#language-syntax

    [1] https://github.com/EmbarkStudios/rust-gpu

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • rust-gpu

    🐉 Making Rust a first-class language and ecosystem for GPU shaders 🚧

  • Sounds cool, but this requires yet another language to learn[0]. As someone who only has limited knowledge in this space, could someone tell me how comparable is the compute functionality of rust-gpu[1], where I can just write rust?

    [0] https://github.com/Hugobros3/shady#language-syntax

    [1] https://github.com/EmbarkStudios/rust-gpu

  • onnxruntime

    ONNX Runtime: cross-platform, high performance ML inferencing and training accelerator

  • - slang[2] has the potential, but the meta programming part is not as strong as C++, existing libraries cannot be used.

    The above conclusion is drawn from my work https://github.com/microsoft/onnxruntime/tree/dev/opencl, purely nightmare to work with thoes drivers and jit compilers. Hopefully Vcc can take compute shader more seriously.

    [1]: https://www.circle-lang.org/

  • llvm

    Intel staging area for llvm.org contribution. Home for Intel LLVM-based projects. (by intel)

  • Intel's modern compilers (icx, icpx) are clang-based. There is an open-source version [1], and the closed-source version is built atop of this with extra closed-source special sauce.

    AOCC and ROCm are also based on LLVM/clang.

    [1] https://github.com/intel/llvm

  • clspv

    Clspv is a compiler for OpenCL C to Vulkan compute shaders

  • See https://github.com/google/clspv for an OpenCL implementation on Vulkan Compute. There are plenty of quirks involved because the two standards use different varieties of SPIR-V ("kernels" vs. "shaders") and provide different guarantees (Vulkan Compute doesn't care much about numerical accuracy). The Mesa folks are also looking into this as part of their RustiCL (a modern OpenCL implementation) and Zink (implementing OpenGL and perhaps OpenCL itself on Vulkan) projects.

  • Cgml

    GPU-targeted vendor-agnostic AI library for Windows, and Mistral model implementation.

  • > the API was high-friction due to the shader language, and the glue between shader and CPU

    Direct3D 11 compute shaders share these things with Vulkan, yet D3D11 is relatively easy to use. For example, see that library which implements ML-targeted compute shaders for C# with minimal friction: https://github.com/Const-me/Cgml The backend implemented in C++ is rather simple, just binds resources and dispatches these shaders.

    I think the main usability issue with Vulkan is API design. Vulkan was only designed with AAA game engines in mind. The developers of these game engines have borderline unlimited budgets, and their requirements are very different from ordinary folks who want to leverage GPU hardware.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • chipStar

    chipStar is a tool for compiling and running HIP/CUDA on SPIR-V via OpenCL or Level Zero APIs.

  • chipStar (formerly CHIP-SPV) might also be worth checking out: https://github.com/CHIP-SPV/chipStar

    It compiles CUDA/HIP C++ to SPIR-V that can run on top of OpenCL or Level Zero. (It does require OpenCL's compute flavored SPIR-V, instead of graphics flavored SPIR-V as seen in OpenGL or Vulkan. I also think it requires some OpenCL extensions that are currently exclusive to Intel NEO, but should on paper be coming to Mesa's rusticl implementation too.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts