chelsea0x3b/cudarc

Safe rust wrapper around CUDA toolkit

它解决了什么问题

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

它如何工作

cudarc 在CUDA工具包库周围创建了一个分层包装系统。它提供了三个级别的访问:

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

它支持广泛的CUDA库,包括驱动API、NVRTC(运行时编译)、cuBLAS、cuDNN、NCCL等。它还支持灵活的链接选项(动态加载、动态链接或静态链接),并支持多个CUDA版本。

适用人群

希望使用安全、符合Rust习惯的接口编写高性能GPU内核并管理CUDA资源(如内存分配和数据传输)的Rust开发者。

主要特性

  • 广泛的库支持:对关键CUDA工具(如cuBLAS、cuDNN、NCCL和cuSPARSE)的包装。
  • 运行时编译:与NVRTC集成,支持在运行时编译CUDA内核。
  • 灵活的配置:通过特性标志支持多个CUDA和cuDNN版本。
  • 便捷的内核启动:使用构建器模式指定内核参数和启动配置。

相关