主要观点: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) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。