Nvidia 发布了 CUDA-oxide,一个 Rust 到 CUDA 的编译器。

英伟达公司 опубликовала 工具包的首次发布 CUDA氧化物它允许你用 Rust 语言创建并行 GPU 内核 CUDA SIMT (单指令多线程)。该项目允许您使用标准类型系统编译 Rust 代码,并且 所有权模式 Rust 直接在 CUDA 虚拟机中执行指令 PTX(nvidia.com) (并行线程执行)无需使用中间领域特定语言(DSL)和绑定。

工具包代码是用 Rust 编写的, 分发者 本软件采用 Apache 2.0 许可证。首个版本定位为初始 alpha 版本。

该工具包包含:

  • rustc 编译器的一个代码生成后端,允许您使用“#[核心]将“转换为 CUDA PTX 表示形式的并行 GPU 内核。编译使用基于标准 rustc 框架的转换链。 普利龙:Rust → MIR → Pliron IR → LLVM IR → PTX。
  • 一个统一的系统,用于组装在主机系统和 GPU 上运行的组件,归根结底就是执行“cargo oxide build”和“cargo oxide run”命令。
  • 一组可用于 GPU 端内核的 Rust 抽象。例如,它提供了用于索引、共享内存和屏障使用、原子操作以及线程组同步的函数。 TMA(nvlabs.github.io) (张量内存加速器)。可以调用 Blackwell 架构特有的底层指令绑定(例如,扩展矩阵运算)。
  • 包含基于主机的 CUDA 运行时组件的 Crate 包,允许内存管理、在 GPU 上运行内核以及与基于 GPU 的函数异步交互。
  • 一系列内核示例,演示了向量操作、矩阵乘法 (GEMM)、原子操作、异步执行和库集成等功能。 MathDx使用泛型和闭包,在 C++/CCCL 中与 CUDA 核心进行交互。

GPU 内核是用标准的 Rust 代码(不是方言)编写的,但在环境中执行。 无标准 并且只能使用库中的函数。 libcore 以及前面提到的 Rust 专用抽象,但不支持 Rust 标准库 (libstd)。支持的类型包括基本类型(u8..u64、f32、f64、bool)、结构体、枚举、元组、数组 ([T; N]) 和切片 (&[T])、match / if / if let 运算符、for 和 while 循环、迭代器 (.iter()、.enumerate())、闭包和泛型。不支持 String、Vec 和 Box 类型、format!、panic! 和 println! 宏、Trait 对象以及通过操作系统调用实现的标准库函数(文件处理、I/O 和网络操作)。

可用的 Rust 中 CUDA 核心安全性分为三级:类型系统保护(safe)、使用 unsafe 代码块以及访问底层硬件指令。基于 CUDA-oxide 的矩阵乘法实现(GEMM SoL)在 B200 GPU 上的性能达到每秒 868 万亿次运算,相当于优化库性能的 58%。 立方玻璃.

来源: linux.org.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster