注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
zhaoyongke的个人空间 https://home.eeworld.com.cn/space-uid-169743.html [收藏] [复制] [分享] [RSS]
日志

【Altera SoC体验之旅】+ 从GPU程序员的角度谈谈使用体验

已有 1304 次阅读2015-3-23 18:26

说起GPU,大家第一反应就是打游戏。是的,GPU全称是Graphics Processing Unit,即图形处理单元,是计算机系统中专门负责图形图像绘制的硬件加速器。在没有GPU之前,计算机上显示图形界面是非常昂贵的,因为需要CPU做大量重复性的工作。

随着GPU的进一步发展,计算能力与日俱增,远远超越了同时代的CPU,于是很多学者提出了利用GPU进行通用计算的想法(GPGPU),后面经过GPU厂家的合纵连横,最终形成了以CUDA为代表的统一着色器架构,可以由用户控制GPU进行图形图像之外的通用并行计算。

OpenCL则是更为通用的异构并行计算模型,不仅支持CPU + GPU的计算架构,还支持诸如多核CPU、CPU + DSP、CPU + FPGA等特定架构。



今天,我想从一个GPU程序员的角度谈谈这次使用Altera SoC的体验。



作为GPU程序员,首先要熟悉一种GPU计算语言,我之前是从CUDA开始,后面接触了Open CL。从效率上看,CUDA远远超越OpenCL;但从可移植性上讲,OpenCL完虐CUDA,可以这么说,使用OpenCL开发的kernel程序,可以一字不改地运行在上面所述的CPU+GPU、多核CPU、CPU+DSP、CPU+FPGA等平台上。也就是说,真正做到了一次编写,处处运行(好像是Java的广告词)。随着硬件厂商如Intel, AMD,NVIDIA,ARM, Xilinx, Altera等对OpenCL的大力支持,后续性能方面也可能全面赶超CUDA。



我们从一个最常用的GEMM(矩阵乘)例子开始,分别在CPU + GPU平台、Altera SoC(ARM + FPGA)平台上运行同一个OpenCL程序。



OpenCL中,为了便于平台管理,提供了一系列API函数,可以便于用户在异构计算平台选择合适的设备。打开<CL/cl.h>就能看到这些API和详细的参数。在我的工程中,为了方便管理,采用C++面向对象的方式将这些API做了封装,掩盖了具体操作细节。



在CPU + GPU平台上运行结果如下:




在Altera SoC上运行的结果如下:


本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章