CPU+GPU异构式并行加速环境的搭建
- 前言
- 基本思路
- 环境搭建
- OpenMP环境搭建
- CUDA环境搭建
前言
此文章假设阅读对象有C++语言基础但在并行领域未曾入门,介绍了如何搭建CPU+GPU异构式并行加速环境。其中,CPU上需要使用的语言为OpenMP,GPU上需要使用的语言为CUDA。本文章主要介绍环境的搭建,所以不详细介绍语言和代码部分。如果需要快速入门OpenMP和CUDA,推荐以下博客(从许多博客中挑选而出,讲解清楚,适合入门):
链接: [https://blog.csdn.net/lanbing510/article/details/17108451].(OpenMP入门)
链接: [https://bbs.csdn.net/topics/390798229].(CUDA入门)
另外,本文章中不公布代码部分,如若需要,请自行联系博主,博主联系方式置于最后。首先介绍的部分是基本思路,便于读者了解做什么,之后的部分将介绍如何搭建环境。
基本思路
事先假设数据来源为阵列天线,则实现加速的方式示意图如下:
示意图中CPU部分通过OpenMP语言的调用实现多线程处理。GPU部分通过调用CUDA语言实现多线程处理,另外数据的交互也是通过CUDA语言中的“cudaMemcpy”指令实现。将原先的单线程转为多线程后,数据处理的速度将会得到增加。除此之外,值得注意的是由于CPU擅长对逻辑部分进行处理,而GPU拥有强大的计算能力,因此建议逻辑性强的程序部分交由CPU执行,计算量大的部分交由GPU执行。
环境搭建
为了顺利搭建环境,请严格按照以下步骤操作。
OpenMP环境搭建
首先下载VS2017(VS低于2015的版本不支持nvcc编译)。(VS2017下载地址)下载安装完成VS2017后,可以使用快捷键Ctrl/Command + Shift + N完成新建项目。
1.找到右端解决方案资源管理器
2.右键点击项目名称
3.单击属性并勾选OpenMP支持
完成以上操作之后,便可以利用VS2017实现OpenMP语言的编写。
CUDA环境搭建
首先下载CUDA,推荐下载CUDA9.0点此下载CUDA各版本
安装过程中,所有路径选择为默认路径。如果安装成功可以按照以下博客完成CUDA和VS环境的搭建:VS2017+CUDA9.0环境搭建
如果VS无法和CUDA完成配置,可以通过命令行的方式调用CUDA,具体方式点击旁边的链接求求你点点我。但通过此方法无法调用函数库里面的函数。接下来详细介绍怎样通过命令行实现GPU上加速。
1.在文本文档或者sublime中写好代码
2在所在文件夹中按住Shift+鼠标右键+s,出现如下界面:
3.在所在界面中输入nvcc+文本文档名,然后回车即完成编译。
上图为详细的编译指令,其中sg_gpu_fft.cu为文件名。注意扩展名一定要改为.cu的形式。
4.使用nvcc指令成功后,将会自动生成如下文件:
5.然后同样的在Windows PowerShell界面输入如图指令:
6.最后编译结果将显示在此界面当中。