GPU计算或者异构计算编程方式与参考资料

来源:互联网 发布:淘宝上东大门代购真店 编辑:程序博客网 时间:2024/06/05 20:35

很多朋友想学习GPU计算,大家会有如下几个关心的问题:

我使用什么编程方式来做GPU计算,或者使用什么编程方式书写在GPU上运行的多线程函数?

下面我针对这个问题给出一些大家可以参考的相关信息。

目前比较成熟的可以实现GPU计算的编程方式有:CUDA,OpenCL,OpenACC,OpenHMPP。我们一一叙述。


CUDA

    CUDA是NVIDIA公司推出的一种GPU计算的编程方式,他们将C语言拓展后得到一种新的语言叫CUDA C,我们可以使用CUDA C来写GPU计算的程序。

    硬件方面:CUDA只支持NVIDIA自家的GPU。

    软件方面:CUDA对于操作系统限制不大,支持Linux、Windows、Mac三种主流操作系统。

    参考信息:

1、官方可以免费下载和使用:https://developer.nvidia.com/cuda-toolkit-archive 这是NVIDIA的CUDA所有版本。

2、介绍CUDA的书籍资料:《大规模并行处理器实战》 《GPU高性能编程CUDA实战》《GPU高性能运算之CUDA》

3、介绍CUDA编程的NVIDIA官方资料:《CUDA C Programming Guide》 《CUDA C Best Practices Guide》等,这些资料就在你的CUDA Tookit的安装目录下的doc目录下,还有一些库的介绍。其中一些资料还被网友翻译出了中文版http://hpcbbs.it168.com/thread-2293-1-1.html。


OpenCL

    OpenCL是由著名的非盈利技术联盟Khronos Group进行管理的一种异构计算标准(http://www.khronos.org/opencl/)

    硬件要求:AMD、NVDIA、Intel等任何支持OpenCL编程的硬件厂商。

    软件要求:根据不同的硬件厂商,支持的平台可能有所差异。理论上没有平台限制。

    参考信息:

1、各个硬件厂商提供的OpenCL SDK免费下载。

2、相关书籍:《OpenCL异构计算》,OpenCL的编程规范等。


OpenACC

    OpenACC是由NVIDIA牵头,联合三家编译器厂商推出的一种标准,意在简化用户的编程,用户可以在学会OpenACC的指导语句之后,再很短的时间内实现自己的GPU程序。目前大家比较熟知的是CAPS和PGI两个编译器厂商的OpenACC编译器。

    硬件要求:PGI的编译器只支持NVIDIA的GPU,而CAPS的编译则支持NVIDIA,AMD以及Intel等所有支持OpenCL、CUDA的硬件产品,并且支持产生CUDA或者OpenCL的可读代码,可以手动修改和优化。

    软件要求:不同厂商,支持平台可能有所差异。目前CAPS支持Linux,而且马上会发布OpenACC编译器的Windows版本。

    参考资料:

1、各个编译器厂商提供的资料。其中CAPS提供中文的免费网络培训课程(http://www.caps-entreprise.com.cn/many-core/webinar-openhmpp-1.html),并且可以通过一个服务器平台试用OpenACC编译器(http://gvsc.leadtek.com.cn/leadtekhpc/),

2、可以在这里下载到 http://www.openacc.org/Downloads


OpenHMPP

    OpenHMPP标准比OpenACC标准提出的要早,它提供了比OpenACC更多的功能。官方网站(http://www.openhmpp.org)

    目前支持这个标准比较好的编译器厂商是CAPS (中文网站:www.caps-entreprise.com.cn 英文网站:www.caps-entreprise.com)

    硬件要求:所有支持CUDA和OpenCL的硬件平台。

    软件要求:需要安装硬件厂商的SDK。

    参考资料:

1、各个编译器厂商的编程指南。

2、免费的网络课程:http://www.caps-entreprise.com.cn/many-core/webinar-openhmpp-1.html


额外的资源:

1、有关OpenHMPP、OpenACC指导语句编程方式,编译器等问题,大家可以写信给 apac-support@caps-entreprise.com

2、“开启新一片蓝海——异构计算完全解析” :http://www.csdn.net/article/2012-07-23/2807633


其实,最后大家发现这已经不限于GPU编程了!!因为除了CUDA之外,后面的三个标准都是来定义异构计算标准的,而GPU计算只是异构计算的一种而已!!


在了解了以上内容之后,大家可以理性选择学习那种方式了。未尽之处还请广大读者不吝指正。