猛禽 - 一种高级算法框架 CUDA 库

主要观点:Raptor 是一个高级算法骨架 CUDA 库,旨在简化 CUDA 编程,让程序员专注于问题逻辑,其性能与 thrust 相当。
关键信息

  • 提供智能容器(vectorarrayvector<array>scalar)和骨架(mapreducescanfiltersort)。
  • 容器可在主机(CPU)和设备(GPU)存储数据,暴露统一内存地址空间,骨架在设备上执行,必要时自动分配和上传容器。
  • 支持通用函数原语raptor::function,可操作多个容器和 GPU 坐标,参数可标记为inoutinout
  • 与 thrust 相比,Raptor 采用统一地址空间,有多种容器类型,可指定同步粒度,函数原语更灵活,抽象了主机-设备内存管理。
  • 性能测试表明,Raptor 在 saxpy、montecarlo 和 mandelbrot 算法上与 thrust 执行时间相近。
    重要细节
  • 在 saxpy 示例中,定义设备函数saxpy,通过map骨架应用函数并计算结果,容器在主机和设备间自动传输和同步。
  • 在离散黎曼和示例中,定义compute_area函数,通过mapreduce骨架计算面积和。
  • 容器内部存储指针,可浅拷贝,深拷贝需使用copy函数。可设置容器同步粒度为粗粒度或细粒度。
  • vector<array>用于处理动态数据结构,在主机和设备上有特定存储布局,提高效率。
  • copyfill函数可异步执行,可指定目标为主机或设备,未来还将支持懒目标。
  • montecarlo pi估计示例中,定义montecarlo_fun函数,通过applyreduce骨架计算 pi 估计值。
  • 在 saxpy 程序的另一种实现中,使用raptor::function改写程序,更简洁地表达计算。
阅读 10
0 条评论