Thrust是一个基于STL,针对CUDA开发的C++模板库。Trust提供与C++、CUDA、 OpenMP和TBB完全兼容的接口,可以使我们用最小的编程代价来实现高性能的并行程序。
Thrust提供了丰富的数据并行算法,例如scan、sort、reduce等,我们可以结合这些算法编写出简洁、可读性强的代码。我们只需要提供一些高级算法描述他们的计算,并将计算的实施完全托管给Thrust,Thrust会自动选择最有效率的算法实现。因此,程序员得以快速构建CUDA程序,并能够获得极高的稳定性和性能。
此文档简述了如何使用Trust开发CUDA程序。即使你的C++与CUDA经验有限,也能够顺利学习该文档。
安装与版本
在安装CUDA Toolkit时,Trust已经被包含CUDA的安装目录中。因此,无需单独安装。另外Thrust是一堆头文件,也不需要额外的配置。新版本的Thrust会在GitHub继续更新。
更新Thrust库的方法也很简单,只需要下载最新版本的文件,覆盖之前存在的旧版本库即可。
- /usr/local/cuda/include/ Linux和Mac OSX系统
- C:\CUDA\include\ Windows系统
让我们使用Thrust来编写一段代码,来确定Thrust安装成功。将下面代码命名为version.cu
#include <thrust/version.h>
#include <iostream>
int main(void)
{
int major = THRUST_MAJOR_VERSION;
int minor = THRUST_MINOR_VERSION;
std::cout << "Thrust v" << major << "." << minor << std::endl;
return 0;
}
使用nvcc或者vs编译version.cu。如果安装正确,终端会输出以下命令(下面是linux系统的例子):
$ ls
thrust version.cu
$ nvcc version.cu -o version
$ ls
thrust version version.cu
$ ./version
Thrust v1.8
本文只是Thrust的入门知识。以下资源可以帮助开发者了解更多Thrust的相关知识,也可以在程序出现问题时提供一定的帮助: