chelsea0x3b/cudarc

Safe rust wrapper around CUDA toolkit

它解决了什么问题

它为与 NVIDIA CUDA 工具包交互提供了一个最小且安全的 Rust API,使开发者能够在不直接处理通常用于 CUDA 开发的原始、不安全的 C 风格 FFI(外部函数接口)调用的情况下,利用 GPU 加速。

它如何工作

该项目在 CUDA 工具包库(如 Driver API、NVRTC、cuBLAS 和 cuDNN)周围创建了一个分层包装系统。它将这些包装组织成三个抽象层次:

  1. sys:通过 bindgen 生成的原始 FFI API。
  2. result:一个轻量级包装,将原始返回码转换为 Rust 的 Result 类型。
  3. safe:高层、安全的抽象,优先考虑易用性和内存安全性。

它支持多种链接方式(动态加载、动态链接和静态链接),并允许用户在构建时指定目标 CUDA 版本。

适用人群

希望在安全的 Rust 环境中编写高性能 GPU 内核,并利用 NVIDIA 专用库进行线性代数、随机数生成和深度学习原语的 Rust 开发者。

主要特性

  • 广泛的库支持:支持众多 CUDA 工具的包装,包括 cuBLAS、cuDNN、NCCL、cuRAND 和 cuSPARSE。
  • 运行时编译:与 NVRTC 集成,支持在运行时编译 CUDA 内核。
  • 灵活的链接方式:支持动态加载(构建时无需库)、动态链接和静态链接。
  • 易用的内核启动:使用构建器模式指定内核参数和启动配置。

相关

  • 项目
  • Dispatch
  • 项目
  • Dispatch
  • 项目