主要观点:Raptor 是一个高级算法骨架 CUDA 库,旨在简化 CUDA 编程,让程序员专注于问题逻辑,其性能与 thrust 相当。
关键信息:
- 提供智能容器(
vector、array、vector<array>、scalar)和骨架(map、reduce、scan、filter、sort)。 - 容器可在主机(CPU)和设备(GPU)存储数据,暴露统一内存地址空间,骨架在设备上执行,必要时自动分配和上传容器。
- 支持通用函数原语
raptor::function,可操作多个容器和 GPU 坐标,参数可标记为in、out或inout。 - 与 thrust 相比,Raptor 采用统一地址空间,有多种容器类型,可指定同步粒度,函数原语更灵活,抽象了主机-设备内存管理。
- 性能测试表明,Raptor 在 saxpy、montecarlo 和 mandelbrot 算法上与 thrust 执行时间相近。
重要细节: - 在 saxpy 示例中,定义设备函数
saxpy,通过map骨架应用函数并计算结果,容器在主机和设备间自动传输和同步。 - 在离散黎曼和示例中,定义
compute_area函数,通过map和reduce骨架计算面积和。 - 容器内部存储指针,可浅拷贝,深拷贝需使用
copy函数。可设置容器同步粒度为粗粒度或细粒度。 vector<array>用于处理动态数据结构,在主机和设备上有特定存储布局,提高效率。copy和fill函数可异步执行,可指定目标为主机或设备,未来还将支持懒目标。- 在
montecarlo pi估计示例中,定义montecarlo_fun函数,通过apply和reduce骨架计算 pi 估计值。 - 在 saxpy 程序的另一种实现中,使用
raptor::function改写程序,更简洁地表达计算。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。