欢迎来到天天文库
浏览记录
ID:11496555
大小:145.50 KB
页数:9页
时间:2018-07-12
《基于opencl和计算着色器的异构系统通用计算对比》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于OpenCL和计算着色器异构系统通用计算对比李伟斌,王运巧,陈少强北京航空航天大学机械工程及自动化学院,北京,100191摘要:图形处理单元GPU的高性价比吸引了越来越多的学者对其在通用计算方面的研究。OpenGL中的计算着色器和开放式计算语言OpenCL架构都可以实现通用计算,但在设计和性能上有着较大的不同。本文在对OpenCL架构模型和计算着色器实现通用计算的特点性能分析的基础上,通过性能优化策略,分别对其进行离散卷积算法的测试对比。对比计算结果表明,合理分配任务的前提下,数据越复杂,OpenCL并行计算能力优势越明显。关键词:OpenCL;通用计算
2、;计算着色器;离散卷积Comparisononparallel calculationofheterogeneous systemsbetweenOpenCLand computeshadersLiWeibin,WangYunqiao,Chenshaoqiang(SchoolofMechanicalEngineeringandAutomation,BeihangUniversity,Beijing100191,china)Abstract:TheperfectperformanceofGPUattractsmoreandmoreresearchofgener
3、alcalculation,bothOpenGLcomputeshadersandtheopencomputinglanguageOpenCLcanachievegeneralcalculation.Thereishugedifferenceindesignandperformancebetweenthem.ThroughtheanalysisofthecharacteristicsofOpenCLmodelandcomputershaders, discrete convolution algorithm tests ondifferentimagesha
4、vebeen compared.ThecomparisonresultsshowthattheadvantagesofOpenCLparallelcomputingabilitycanbemoreobviouswhiletheimagedatamorecomplicated.Keywords:OpenCL;Generalcalculation;Computeshaders;Discrete convolution0引言通用计算即为用图形处理单元GPU来处理一些原本CPU可以处理的计算,早在20世纪60年代初它就引起了开发人员的关注,特别是现代图形处理器(GP
5、U),凭借其强大的计算能力和卓越的性价比,吸引了越来越多的对通用计算(GPGPU)的研究[1],涉及到的领域广泛,有流体模拟[2]、视频检测[3]、序列比对[4]、蛋白质分子场、地质模型、神经网络训练等等。然而传统的通用计算主要依靠图形API,这给不熟悉图形应用的用户带来极大的不方便,为此,AMD和NVIDIA公司分别推出了各自的编程模型—Brook+和计算统一设备架构(CUDA)[5],给编程带来了很好的灵活性,但是在程序可移植性方面,AMDGPU与NVIDIAGPU互不兼容。为充分发挥异构处理平台下各种设备的性能潜力,同时使得程序具备可移植性,由苹果公司
6、提议,开放标准组织KhronosGroup于2008年推出了开放式计算语言(opencomputinglanguage,OpenCL)[6]。图形处理器潜在的计算能力可用于处理与图形无关的任务,为此,OpenGL引入了一种特殊的着色器:计算着色器,这种基于图形的API同样可以像OpenCL一样实现通用程序设计计算,但它对开发人员技能要求比较苛刻,不仅要熟知图形流水线和计算机图形学知识,而且实现通用算法设计时需要大量的技巧,本文主要以OpenCL架构和OpenGL的计算着色器为基础,分别设计算法进行测试,对比OpenCL和计算着色器在通用计算技术上性能的优劣,
7、突出OpenCL的优越性。1OpenCL框架及卷积计算的实现在计算机视觉和图像处理中,卷积算法有着至关重要的作用,它经常被用于模板匹配、边缘检测、图像滤波和图像定位等多方面领域。因此,本文通过对均值离散卷积的实现,比较OpenCL和计算着色器的性能。作为第一个面向异构系统通用目的并行编程的开放免费标准,OpenCL可以用四个模型来描述其任务并行机制:平台模型、运行模型、设备模型、编程模型[7]。其完成并行任务流程如图1所示:Bar程序主机Foo()Bar()Quz()Baz()FooFooBarQuzBaz设备0设备1设备2设备3命令队列图1OpenCL框架
8、模型1.1平台模型OpenCL通过平台实现主机与设备
此文档下载收益归作者所有