🐟 (@stevessr) 在 CUDA Rust 简介:编写 GPU 内核的两条路径 中发帖
[!quote]+
Rust有两条轨道,和CUDA本身的两条轨道相匹配。SIMT 是你已经用 CUDA C++ 或 numba-cuda 编写的模型。你标明一个线程的作用,然后启动成千上万条线程。Tile 是一种较新的编程模型,也支持 C++ 和 Python。所有这些前端都允许你说出一个数据瓦片的功能,tile IR编译器负责其余部分。
当你选择一个要建造的基础时,先选择瓦块。编译器决定瓦片如何映射到每个架构上,这样你的源代码不会编码架构特定的选择,当你需要控制权或想自己管理内存和线程时,你就直接用 SIMT。
你选择哪种语言,和哪个模型是两码事。使用最适合你现有设备栈的CUDA曝光。下面两个项目是针对那个堆栈是Rust时准备的。我们计划支持跨语言互操作,因此选择不会让你被排除在其他语言之外。
下面是每个轨道上的同一核,它对1024个浮点进行元素加法。两者都是完整的程序,都...