CubeCL: GPU Kernels in Rust for CUDA, ROCm, and WGPU

(github.com)

141 points | by ashvardanian 10 hours ago

6 comments

  • gitroom 1 hour ago
    Gotta say, the constant dance between all these GPU frameworks kinda wears me out sometimes - always chasing that better build, you know?
  • kookamamie 1 hour ago
    This reminds me of Halide (https://halide-lang.org/).

    In Halide, the concept was great, yet the problems in kernel development were moved to the side of "scheduling", i.e. determining tiling/vectorization/parallellization for the kernel runs.

  • the__alchemist 7 hours ago
    Love it. I've been using cudarc lately; would love to try this since it looks like it can share data structures between host and device (?). I infer that this is a higher-level abstraction.
  • zekrioca 9 hours ago
    Very interesting project! I am wondering how it compare against OpenCL, which I think adopts the same fundamental idea (write once, run everywhere)? Is it about CUbeCL's internal optimization for Rust that happens at compile time?
    • fc417fc802 3 hours ago
      This appears to be single source which would make it similar to SYCL.

      Given that it can target WGPU I'm really wondering why OpenCL isn't included as a backend. One of my biggest complaints about GPGPU stuff is that so many of the solutions are GPU only, and often only target the vendor compute APIs (CUDA, ROCm) which have much narrower ecosystem support (versus an older core vulkan profile for example).

      It's desirable to be able to target CPU for compatibility, debugging, and also because it can be nice to have a single solution for parallelizing all your data heavy work. The latter reduces mental overhead and permits more code reuse.

      • zekrioca 1 hour ago
        Makes sense. And indeed, having OpenCL as a backend would be a very interesting extension.
    • nathanielsimard 7 hours ago
      A lot of things happen at compile time, but you can execute arbitrary code in your kernel that executes at compile time, similar to generics, but with more flexibility. It's very natural to branch on a comptime config to select an algorithm.
  • LegNeato 9 hours ago
    See also this overview for how it compares to other projects in the Rust and GPU ecosystem: https://rust-gpu.github.io/ecosystem/
  • adastra22 6 hours ago
    Where is the Metal love…
    • Almondsetat 4 hours ago
      Why would anyone love something born out of pure spite for industry standards?
      • pjmlp 2 hours ago
        For the same reason CUDA and ROCm are supported.
    • syl20bnr 5 hours ago
      It also compiles directly to MSL, it is just missing from the post title.
      • adastra22 4 hours ago
        No it compiles indirectly through wgpu, which means it doesn’t have access to any Metal extensions not exposed by the wgpu interface.
    • moffkalast 5 hours ago
      From the moment I understood the weakness of my flesh, it disgusted me. I craved the strength and certainty of steel. I aspired to the purity of the Blessed Machine.