当前位置: 主页 > 课程教学 >

OpenCL课程主页

时间:2012-07-25 21:30来源:未知 作者:zhuhuming 点击:

 

近十年来,一种新的并行计算机系统得到了飞速发展,即集群系统。从高性能计算机的世界排名Top500榜单就可以看出。Top50020036月的Top500榜单中,集群系统仅有149个,占29.8%的份额。而在200811月是409个,比例为81.8%;在20096月是410个,比例为82%。目前,基于集群架构的并行计算机在发展中遇到了很多困难,主要是能耗和散热问题,现在的一个解决思路就是混合架构,就是将GPU作为并行计算单元引入到并行机体系结构中来。世界排名第一的天河一号和排名第三的曙光星云都采用了这种混合架构。
由于图形处理器(Graphics Processing Unit)在处理能力和存储器带宽上相对CPU 有明显优势,在成本和功耗上的代价节省也使得GPU 和基于GPU 的通用计算(General Purpose GPU, GPGPU) 显示了其极高的加速计算性能,并为解决CPU 并行的问题提供了新的解决方案。
2007 6 月,NVIDIA 推出了统一计算设备架构(Computer Unified Device Architecture, CUDA),可以有效利用过去分布在顶点着色单元和像素着色单元上的计算资源,并引入了片内共享存储器,支持随机写入(scatter)和线程间通信。
2009 8 月,AMD 首次发布了可支持X86 处理器的开发工具——ATI Stream SDK v2.0 Beta,首次包含了完整的适合于数据并行和任务并行的OpenCL 编程模式,使得开发人员可以轻松利用CPU GPU 的计算资源。
2008 6 月,苹果在WWDC大会上率先提出了OpenCL规范[30],旨在提供一个通用的开放API,在此基础上开发GPU通用计算软件。随后,Khronos Group宣布成立GPU通用计算开放行业标准工作组,以苹果的提案为基础创立OpenCL行业规范。工作组的26 个成员来自各行各业,包括IBMIntelAMD、苹果、NVIDIA、三星、德州仪器等。2008 12 9 日,OpenCL 1.0 版本正式发布。2010 6 15 日,OpenCL通用计算标准的1.1 版本发布,开发者可以免费下载;2011年11月,Khronos Group宣布OpenCL 1.2 版本正式发布。
AMD由于同时拥有CPU、GPU两大处理器核心技术,力推Fusion融合计划成功推出APU。随着APU的逐年进化,又于2013年11月在美国加州召开的APU13开发者大会上推出使用HSA架构的划时代APU产品——Kaveri APU。HSA(Heterogeneous Systems Architecture)架构,其能够让APU中的CPU单元和GPU单元实现内存统一寻址,即hUMA架构。而这样做的最直接优势在于CPU、GPU能够更灵活的调度资源,提升整体处理器的计算效能,大幅降低因为独立内存寻址带来的延迟效应。
OpenCL(Open Computing Language)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)Cell 类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。
 
授课安排:
 
理论部分
 
        第1章 概述 (2学时)
高性能计算的意义;能够解决的科学和工程问题;历史和发展前景。
高性能计算硬件体系结构介绍;集群系统结构、特点和编程; GPU的结构、特点和编程。
 
           第2章 GPU架构与GPGPU (2学时)  
GPU的历史发展与硬件架构的核心变化。
 
                 第3章 openCL(2学时)
四个模型:平台模型、存储器模型、执行模型以及编程模型。
 
第4章 openCL 编程1 (2学时)
                    在程序中使用OpenCL编程大致可分为6个步骤:
1.       查找支持OpenCL的硬件设备(Device),并创建上下文(Context)
2.       创建命令队列(Command Queue)及包含了内核的程序(Program);如果该程序是源代码,则还需进行在线编译。
3.       创建程序执行过程中需要的内存对象(Buffer)及图像对象(Image Object),并初始化
4.       创建内核对象(可理解为Kernel中的函数)并设置其所需参数
5.       设置内核的索引空间(NDRange)并执行内核。其中NDRange通过全局尺寸(GlobalSize)和工作包尺寸(WorkGroup)来进行管理。
6.       将运行的结果拷贝回主机(Host)内存。
 
   第5章 openCL 编程2(2学时)
        内存管理模块与内核模块等。
 
   第6章 GPU程序举例 (2学时)
       GPU开发环境的安装和配置,矢量相加与矩阵相乘。
 
  第7章 openCL程序优化 (2学时)
          数据传输的优化,内存访问的优化和计算及控制流优化。
 
 
Ⅱ实验部分

实验
教学内容及要求
1
GPU环境建立
2
编写矢量相加的程序
3
    编写矩阵相乘的程序
4
矩阵相乘算法优化
5
基于GPU加速的Matlab程序设计

 

衷心感谢AMD 中国公司的大力支持

         为了本次课程的顺利开设,AMD 中国公司向我们捐赠了价值数万元的高性能计算服务器和三百多本GPU计算教材。 201142829号,AMD 中国公司高校关系部经理乐平,AMD上海研发中心朱淮冰和程宏路先生一行来我校交流访问,分别在北校区和南校区为师生们作了关于GPU的专题报告,并在高性能计算联合实验室进行了Open Computing LanguageOpenCL)上机实践开发。     

       20125月在西北工业大学举办的高性能计算综合技能及学科应用培训会议期间,AMD 中国公司再次向我们实验室捐赠了《OpenCL 异构计算》中文译本。
        20139“AMD 异构计算走进校园选择西安电子科技大学作为活动的第一站,在新老校区举办了两场“HSA架构报告,吸引了数百名博士、硕士和本科生参加。
        201310月在北京举办的全国异构计算架构及OpenCL编程培训大会了,实验室介绍了在异构计算领域最新的研究成果。

 

课程相关活动照片

 
                                                                                   上课场景 

 

与AMD联合举办的讲座

与AMD联合举办的讲座

 

 AMD 公司代表来访 

举办OpenCL讲座
 
 
学生与AMD GPU计算专家交流 
 

 参加AMD举办的“高等院校异构计算综合技能及学科应用培训” 
  

 与AMD上海研发中心专家交流 
 
颁发“AMD奖学金”
   
                      
 讨论“异构计算课程”
  
                       
                                                                    参加“异构计算架构及OpenCL编程培训”大会
 
                       
                                                                             举办“AMD 异构计算走进校园”活动
 
                       
                                                                                 参加 APU2013大会
  

 AMD向实验室捐赠的书和讲义

 

 常用资源链接:

1、AMD发布OpenCL大学套件推动并行计算

2、 异构开发技术社区

3、 OpenCL University Course Listings

4、 Academic Research 

5、  《跨平台的多核与众核编程讲义》

6、  Khronos OpenCL主页

7、   AMD APP SDK  下载

8、   异构系统构架(Heterogeneous Systems Architecture,HSA)基金会

 

 

 成果

1、实验室研究生团队摘得2010 AMD中国高校加速计算竞赛桂冠

2、实验室研究生团队获2011AMD中国高校加速计算竞赛亚军

3、实验室本科生获“AMD OpenC Coding Competition”优胜奖

4、 实验室多个学生团队入围2012 AMD APU/GPU异构开发大赛四十强

5、实验室基于openCL平台研究的SAR图像变化检测论文《Parallel Multi-Temporal Remote Sensing Image Change Detection on GPU》被第二十六届IPDPS workshop录用,ppt下载