CUDA平台在自动控制并行编程实践教学中的应用与思考_第1页
CUDA平台在自动控制并行编程实践教学中的应用与思考_第2页
CUDA平台在自动控制并行编程实践教学中的应用与思考_第3页
CUDA平台在自动控制并行编程实践教学中的应用与思考_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、CUDA平台在自动控制并行编程实践教学中的应用与思考一、引言随着工业控制系统规模日益增大,控制算法日益复杂,工业数据日益激增,工业现场对系统控制与优化调度的实时性要求日益提高,给现代控制系统程序设计提出挑战。工业控制系统中存在大量的重复性计算,如快速傅里叶变换( FFT)、滤波、矩阵与数值计算等,给传统控制系统带来巨大时间开销。以多核计算机为代表的并行计算技术为工业控制系统设计与开发提供了技术支持。特别是GPU( GraphicProcessing Unit)通用并行计算技术的推广1 ,由于其高存储器带宽、低功耗等诸多优点,已被广泛应用于科学与工业等领域中,在提升实际问题的求解效率方面发挥了作

2、用。CUDA( Compute Unified Device Architecture,计算统一设备架构)由英伟达公司于2007 年发布的一种将GPU作为并行计算的软硬件体系架构,可用于解决工程科学中的复杂计算,开启了GPU通用并行计算时代2 。研究表明在浮点运算、数值计算等密集型计算方面,基于CUDA平台的 GPU计算系统可获得数十倍于传统CPU的加速性能 3 。因此,相比于传统微机控制方式,基于CUDA的 GPU并行计算适用于数据量大,实时性要求高的工业控制领域。现有高校自控专业程序设计课程主要是基于串行编程方式的教学,难以适应工业信息化与知识自动化对控制系统实时性能与数据存储的需求。本文

3、将基于CUDA平台的 GPU并行程序设计模式引入自动控制系统并行程序设计实践教学中。有利于同学掌握先进计算技术在自动控制系统中的开发与应用,拓宽其专业视野。最后对自动控制程序设计与CUDA并行编程实践教学进行了思考与总结。二、 CUDA体系架构和编程模式(一) CUDA体系结构。 CUDA框架包括硬件和软件两部分,拓宽了GPU程序开发与运行的可操作性。GPU的硬件包括运算核心和存储器,其中运算核心流处理器构成流多处理器( Streaming Multi-Processor,SM),每个 SM都带共享存储器, 所有 SM共享 GPU的全局、 常量与纹理存储器。 CUDA 的软件包括 CPU代码和

4、 GPU代码,其中 CPU负责处理逻辑性的串行事务控制, GPU负责处理大量重复性计算任务。 在 GPU 上执行的函数称为核函数, 当核函数被 CPU代码激活时, GPU中在逻辑上的两层线程组(顶层为线程网格(Grid ),下层为线程块( Block ,包含若干个线程( Thread )并行执行。一个内核函数网格中的线程块并行和线程块中的线程两个层次的并行方式来提高数据吞吐量和执行效率。各个线程块并行执行,线程块间无法通信,也没有执行顺序,但同一个线程块中的线程可以通过共享存储器方式交换数据。(二) CUDA编程模式。在CUDA架构中, CPU与 GPU是一种异构协同并行计算模式。其中 CPU

5、为主机,GPU为设备。CPU与 GPU各自拥有独立的存储器地址空间:显存和内存。程序员可以应用高级语言(C/C+/fortan)对 GPU内部计算资源进行访问。CUDA编程基本步骤为:步骤1:加载C(或C+)和CUDA头文件,启动cudaSetDevice()配置GPU设备;初始化 CPU和 GPU数据空间;步骤 2:调用设备端 (GPU)的内核函数计算;从显存读取数据到共享存储器或寄存器内;对数据进行并行计算和处理;将处理后的数据写回显存。步骤 3:将显存中的结果回读到内存;步骤4:使用 CPU对数据进行处理并输出结果;步骤5:释放内存和显存空间并退出 CUDA。三、实例讲解以一个简单的CU

6、DA程序设计实例来讲解,加深自动控制专业同学对CUDA平台 GPU并行程序设计过程的理解。考虑给一个向量V1 :N上每一位矢量的加上常数。其中CUDA程序 C 代码如下:#define N 100;_global_void Vadd(int*V, int m)intindex=blockIdx.x;if( index>>( device_V, 5);cudaMemcpy(host_V, device_V, N*sizeof( int),cudaMemcpyDeviceToHost );cudaFree ( device_V ); return 0; 对上述 CUDA关键函数进行解释

7、。 内核函数通过 _global_ 函数类型限定符定义,如 _global_void kernel ( void )。GPU通过 cudaMalloc ()函数为设备分配内存。 函数 cudaMemcpy ()来完成 CPU和 GPU之间数据传递, cudaFree( device_V )为释放内存。 实际执行中, CUDA产生许多在 GPU上执行的线程,每一个线程都去执行内核程序,由于预先设置了内置变量 blockIdx ,变量的值为当前执行设备代码线程块的索引,从而取得不同的数据进行并行计算。四、基于 CUDA的自动控制并行编程实践教学思考目前高校自动控制专业所开设程序设计课程主要以简单程序设计语言为主,其计算机系统知识不全面。自动控制专业学生的软件基础与计算思维相对较弱,将造成现有自动控制专业学生的计算机程序设计开发能力不强。因此自动控制专业学生有待加强计算机系统学习,特别是计算机程序设计与软件基础,数据结构与算法分析等课程,加强计算机系统知识积累。五、结论将 GPU先进计算与现代控制技术结合是适应新

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论