CUDA平台在自动控制并行编程实践教学中的应用与思考

来源 :亚太教育 | 被引量 : 0次 | 上传用户:w11425635
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:本文将基于CUDA平台的GPU并行程序设计模式引入自动控制系统并行编程实践教学中。通过介绍CUDA体系结构与编程模式,实例教学使自动控制专业学生对CUDA并行程序设计有着深刻的认识,将有助于同学们掌握CUDA并行计算平台在工业控制程序开发中的应用,增强同学们对自动控制专业学习的兴趣和实践动手能力。
  关键词:CUDA平台;自动控制;并行编程;实践教学
  一、引言
  随着工业控制系统规模日益增大,控制算法日益复杂,工业数据日益激增,工业现场对系统控制与优化调度的实时性要求日益提高,给现代控制系统程序设计提出挑战。工业控制系统中存在大量的重复性计算,如快速傅里叶变换(FFT)、滤波、矩阵与数值计算等,给传统控制系统带来巨大时间开销。以多核计算机为代表的并行计算技术为工业控制系统设计与开发提供了技术支持。特别是GPU(Graphic Processing Unit)通用并行计算技术的推广[1],由于其高存储器带宽、低功耗等诸多优点,已被广泛应用于科学与工业等领域中,在提升实际问题的求解效率方面发挥了作用。CUDA(Compute Unified Device Architecture,计算统一设备架构)由英伟达公司于2007年发布的一种将GPU作为并行计算的软硬件体系架构,可用于解决工程科学中的复杂计算,开启了GPU通用并行计算时代[2]。研究表明在浮点运算、数值计算等密集型计算方面,基于CUDA平台的GPU计算系统可获得数十倍于传统CPU的加速性能[3]。因此,相比于传统微机控制方式,基于CUDA的GPU并行计算适用于数据量大,实时性要求高的工业控制领域。
  现有高校自控专业程序设计课程主要是基于串行编程方式的教学,难以适应工业信息化与知识自动化对控制系统实时性能与数据存储的需求。本文将基于CUDA平台的GPU并行程序设计模式引入自动控制系统并行程序设计实践教学中。有利于同学掌握先进计算技术在自动控制系统中的开发与应用,拓宽其专业视野。最后对自动控制程序设计与CUDA并行编程实践教学进行了思考与总结。
  二、CUDA体系架构和编程模式
  (一)CUDA体系结构。CUDA框架包括硬件和软件两部分,拓宽了GPU程序开发与运行的可操作性。GPU的硬件包括运算核心和存储器,其中运算核心流处理器构成流多处理器(Streaming Multi-Processor,SM),每个SM都带共享存储器,所有SM共享GPU的全局、常量与纹理存储器。CUDA的软件包括CPU代码和GPU代码,其中CPU负责处理逻辑性的串行事务控制,GPU负责处理大量重复性计算任务。在GPU上执行的函数称为核函数,当核函数被CPU代码激活时,GPU中在逻辑上的两层线程组(顶层为线程网格(Grid),下层为线程块(Block,包含若干个线程(Thread))并行执行。一个内核函数网格中的线程块并行和线程块中的线程两个层次的并行方式来提高数据吞吐量和执行效率。各个线程块并行执行,线程块间无法通信,也没有执行顺序,但同一个线程块中的线程可以通过共享存储器方式交换数据。
  (二)CUDA编程模式。在CUDA架构中,CPU与GPU是一种异构协同并行计算模式。其中CPU为主机,GPU为设备。CPU与GPU各自拥有独立的存储器地址空间:显存和内存。程序员可以应用高级语言(C/C++/fortan)对GPU内部计算资源进行访问。CUDA编程基本步骤为:步骤1:加载C(或C++)和CUDA头文件,启动cudaSetDevice()配置GPU设备;初始化CPU和GPU数据空间;步骤2:调用设备端(GPU)的内核函数计算;①从显存读取数据到共享存储器或寄存器内;②对数据进行并行计算和处理;③将处理后的数据写回显存。
  步骤3:将显存中的结果回读到内存;步骤4:使用CPU对数据进行处理并输出结果;步骤5:释放内存和显存空间并退出CUDA。
  三、实例讲解
  以一个简单的CUDA程序设计实例来讲解,加深自动控制专业同学对CUDA平台GPU并行程序设计过程的理解。考虑给一个向量V{1:N}上每一位矢量的加上常数。其中CUDA程序C代码如下:
  #define N 100;
  _global_void Vadd(int*V,int m)
  {int index=blockIdx.x;if(index  int main(void){ int host_V[N]; int *device_V; cudaMalloc((void**)&device_V, L * sizeof(int)); for (int k=0; k  cudaMemcpyHostToDevice); Vadd<<>>(device_V, 5);
  cudaMemcpy( host_V,device_V,N*sizeof(int),cudaMemcpyDeviceToHost);
  cudaFree(device_V); return 0; }
  对上述CUDA关键函数进行解释。内核函数通过_global_函数类型限定符定义,如_global_void kernel(void)。GPU通过cudaMalloc()函数为设备分配内存。函数cudaMemcpy()来完成CPU和GPU之间数据传递,cudaFree(device_V)为释放内存。实际执行中,CUDA产生许多在GPU上执行的线程,每一个线程都去执行内核程序,由于预先设置了内置变量blockIdx,变量的值为当前执行设备代码线程块的索引,从而取得不同的数据进行并行计算。
  四、基于CUDA的自动控制并行编程实践教学思考
  目前高校自动控制专业所开设程序设计课程主要以简单程序设计语言为主,其计算机系统知识不全面。自动控制专业学生的软件基础与计算思维相对较弱,将造成现有自动控制专业学生的计算机程序设计开发能力不强。因此自动控制专业学生有待加强计算机系统学习,特别是计算机程序设计与软件基础,数据结构与算法分析等课程,加强计算机系统知识积累。
  五、结论
  将GPU先进计算与现代控制技术结合是适应新时代工业信息化与知识自动化人才培养的需求。将CUDA平台引入控制系统并行程序设计实践课堂教学,有助于同学掌握现代先进计算技术在工业控制中的应用,拓宽同学们的专业视野及对自动控制专业的兴趣和动手能力,这将有利于自动控制专业人才培养质量。
  参考文献:
  [1]张舒,褚艳丽,赵开勇,等.GPU高性能运算之CUDA[M].中国水利水电出版社,2009.
  [2]王海峰,陈庆奎.图形处理器通用计算关键技术研究综述[J].计算机学报,2013,36(4):757-772.
  [3]王海峰,陈庆奎.图形处理器通用计算关键技术研究综述[J].计算机学报,2013,36(4):757-772.
  (作者单位:湖南科技大学信息与电气工程学院)
其他文献
我对企业文化的理解是,只要有企业,有企业管理,就有企业文化.但是,能够自觉地把企业文化作为一个概念提出,而且致力于企业文化建设,是企业发展到一定阶段的产物.
现年81岁的郭鹤年是杰出的企业家、马来西亚首富。他不但控制本地白糖业,也是酒店、船务、保险和传媒等领域的巨擘,被人们誉为“三王”——“亚洲糖王”、“酒店大王”、“马来西亚传媒大王”。而在他成功的背后,却隐藏着许许多多的辛酸故事……    坚强少年——25岁肩负重担    郭鹤年祖籍福建省福州市盖山。他的父亲郭钦鉴于1909年飘洋过海来到马来西亚,从店员做起,后来自己开了家咖啡馆。经过数年努力,
全球八成以上的打火机出自温州,但在温州,却只有大虎打火机名气在全球叫响.据有关媒体报道,大虎的名气是靠"吃亏"经营出来的.1 993年,温州大街小巷挤满了前来收购打火机的各
本文研究由实系数线性微分算子,P<sub>r</sub>(D)=multiply from s=1 to k(D<sup>2</sup>-2α<sub>2</sub>D+α<sub>3</sub><sup>2</sup>+β<sub>s</sub><sup>2</sup>)multiply f
本文探讨了19世纪末20世纪初世界上最著名的数学学派——格廷根学派兴衰的主要原因,并与近代中国数学发展情况作了适当的比较,从中获得一些可供我们今后借鉴的经验教训。
被誉为日本四大经营之圣之一、世界顶级企业松下公司创始人、总经理松下幸之助之名,可谓天下尽知。然而,其门下也有“跳槽”者。那么,他是如何对待“跳槽”员工的呢?惯于听取逆
【正】 社会心理学家认为,凡有人群的地方都有群体存在。本世纪二、三十年代,美国心理学家梅奥在进行了著名的霍桑实验后,认为在正式的组织群体中存在着自发形成的非正式群体
【正】 1991年5月7日,美国《国际先驱论坛报》报导说:“中国农村中学的英语教师不称职。他们缺少训练,发音差,不能进行最基本的英语会话”,并以湖北的一位陈老师为例,把both/
药学工作直接关系着人民的健康和患者的生命安危,药师应具有高尚的职业道德情操,精湛的专业技术水平,熟练掌握处方调剂操作技能及中草药的煎煮方法及注意事项等。中药房作为医疗机构的窗口,准确及时地调配处方,预防和避免差错是药房工作的首要内容伫。因此,加强中药房的规范化管理具有重要意义。
通过运用Excite-Timing-Drive软件的凸轮设计模块,对某新凸轮轴型线进行运动学和动力学分析。并根据分析结果对该凸轮轴型线给出优化建议,能满足运动学和动力学要求。使得优