版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
“新工科建设之路·计算机类专业系列教材混合架构超算并行程序设计与应用神威异构众核程序设计第五章01神威超算及编程环境概述神威超算及编程环境概述神威超算的背景及历史近年来,神威系列超算一直秉承自主创新的发展方针。2011年推出的“神威蓝光”超算成为国内首个全部采用国产处理器和系统软件构建的千万亿次计算机系统。2015年,“神威·太湖之光”超算系统落户国家超级计算无锡中心,如图5-1所示。神威·太湖之光超算由国家并行计算机工程技术研究中心研制,安装了40960个我国自主研发的申威26010(SW26010)众核处理器。神威超算及编程环境概述神威超算的背景及历史神威超算及编程环境概述神威超算的背景及历史新一代神威超算是神威·太湖之光的继承者,不仅采用了4200万内核的国产处理器在Linpack基准测试中,峰值性能更是达到每秒1.3百亿亿次,比现在全球排名第一的美国超算Frontier更强。在2022年的世界超算TOP500榜单上,神威·太湖之光以93.1PFLOPS的性能排名第六,第一由美国橡树岭国家实验室新近推出的Frontier超算摘得。而我国的新一代神威超算理论上在2021年就完成了E级计算,性能上超越Frontier,但是未参与TOP500排名。神威超算及编程环境概述神威·太湖之光超算架构互连系统由计算网络、存储网络和管理网络组成,实现不同类型节点之间的数据传输。计算网络采用自主研发的神威网络芯片组,实现了高带宽、低延迟通信;存储网络采用神威网络技术进行存储;管理网络采用以太网协议连接系统的所有节点和管理单元。维护系统提供系统配置与管理、实时状态监控、运行环境实时监控与诊断等功能,覆盖了计算、互连、存储、电力、冷却、系统服务、运行环境等多个硬件架构部分。神威·太湖之光超算架构神威超算及编程环境概述电力系统采用基于高压整流的三级直流电源转换方式冷却系统负责为主机、存储、动力系统等提供良好的冷却条件,提供高效的冷却技术,包括液冷、热管传导、风冷和混合冷却。SW26010处理器采用片上融合的异构众核架构(如图5-3所示)使用64位自主SW64指令系统。神威·太湖之光超算架构神威超算及编程环境概述在编程模式上,神威超算主从核之间的交互支持OpenACC和加速线程库Athread。其中最常使用的是Athread库,如图5-4所示,类似于Pthread线程库,Athread库使用Spawn方式启动从核任务,使用Join方式等待从核任务结束。神威·太湖之光超算架构神威超算及编程环境概述新一代神威超算架构新一代神威超算的计算能力由国产的多核SW26010P处理器提供,该处理器包括6个核组(CG)与SW26010类似,每个核组包括1个管理核心(MPE)和1个运算核心簇(CPE簇),如图5-5所示。每个SW26010P处理器由390个处理单元组成。在2021年的戈登贝尔奖获得者的研究中,他们在新一代神威超算上,共使用了107520个SW26010P处理器,并行规模达到了前所未有的41932800个核心。神威超算及编程环境概述新一代神威超算架构神威超算及编程环境概述1.swgcc编译器swgcc编译器是一款基于GCC编译器的为神威众核处理器配备的底层基础编译器,是SACA编程环境的重要组成部分,是连接神威众核处理器与应用程序的桥梁,称为国产众核基础编译器。在SW26010上,支持的编译器有swgcc和sw5c/sw5CC两种,对后者的支持要完善一些,而对swgcc的支持较不完善。但是到了新一代神威平台上,编译工具链全部都切换到swgcc上了。神威编程环境神威超算及编程环境概述2.使用说明国产众核基础编译器支持C、C++、FORTRAN语言,并且通过选项区别支持主核和从核代码生成,如表5-1所示。编译器新增动态链接功能,用于支持人工智能类应用对动态编译及运行的需求,提升系统的通用性。神威编程环境神威超算及编程环境概述访存层次1.gds/gst访存gds/gst是离散访存,在从核端可以通过主存的地址直接从主存中调取数据或者向主存存储数据。这种方式的优点是编程方便,不用以LDM作为数据缓存:缺点是速度慢、延迟高。一般适用于传输少量的数据(如配置),对大量的数据访问需求,建议使用DMA+LDM进行访问。神威超算及编程环境概述访存层次2.DMA+LDM访存DMA(DirectMemoryAccess)是直接内存访问。从核可以发起DMA操作实现LDM与主存之间的数据传输,提高从核访问主存的效率。对LDM上的数据,一般用“__thread_local”修饰符进行修饰。3.LDM共享(仅SW26010P)神威众核芯片一个核组内的存储分为位于主核的主存和每个从核私有的位于每个从核的LDM。神威超算及编程环境概述访存层次编程时,从核函数栈空间默认位于主存中,在运行时加-b选项可以将栈空间设置到LDM内。从核LDM空间可划分为私有空间、连续共享空间和从核数据Cache空间三部分,三部分空间分档可调,LDM使用时各空间的划分如图5-7所示。02神威众核编程神威众核编程众核程序结构为适应神威异构众核架构,SACA采用异构加速编程模式。SACA程序由主核程序和从核程序组成,主核程序运行在运算控制核心(主核)上,负责数据和加速任务的分配与管理;从核程序运行在运算核心(从核)上,实现对核心功能模块的加速。主核程序采用SACA运行时,Athread的相关接口对加速线程任务进行管理操作,根据接口功能的不同,加速线程任务将会在一个或多个线程阵列上执行。线程任务启动后,主核可以继续运行其他串行代码;而调用加速线程任务回收接口后,就将等待从核阵列完成加速任务的执行。神威众核编程众核程序结构一个神威众核程序通常由三部分组成,如下所述。1.主函数主函数运行众核加速前的主程序,运行在纯主核上,调用神威主核函数进行众核加速。神威众核编程众核程序结构2.神威主核函数神威主核函数声明从核函数,设置从核函数参数,将从核函数Spawn到从核阵列上并开始从核阵列计算。从核阵列计算开始后,主核函数等待所有从核阵列完成计算并退出,在主核函数启动从核阵列后等待从核阵列计算完成期间,主核函数可以执行与从核阵列异步执行的在主核运行的代码。3.神威从核函数神威从核函数是由主核函数Spawn到从核上由从核异步执行的函数。神威众核编程从核函数从核执行单独编写的从核函数,主核函数将同一个从核函数Spawn到从核阵列上的每个从核,由从核进行计算,从核支持C和FORTRAN,也支持简单的C++。主核函数Spawn从核函数时,可以将一个主存地址以参数的方式传递给从核函数;当需要向从核函数传递多个参数时,可以将多个参数声明为一个结构体,在主核函数中创建结构体变量并对其赋值,Spawn时将结构体变量的地址以参数的方式传递给从核函数,从而实现向从核函数传递多个参数。神威众核编程第一个并行程序1.第一个众核程序矩阵乘法对结果是8x8维的矩阵,有两种方式。第一种,通过串行进行处理,通过循环分别对每一行的值和每一列的值进行计算。加入每一列或每一行进行计算需要1ms,那么整体计算的时间将是64ms。第二种,将矩阵分成64个分块,每个从核计算1个分块。同样每个从核计算时间为1ms,在不考虑从核和主核之间通信的情况下,整体的计算时间仅仅需要1ms即可。神威众核编程第一个并行程序矩阵并行计算,理论上通过使用更多的硬件资源可以减少计算的时间,但这会引入从核和主核之间的通信开销。以矩阵C=AxB为例,运用并行计算的思想,将矩阵C二维分成64个分块,每个从核计算1个分块,每个从核计算与C分块相关的4的1块行和B的1块列,如图5-9所示。神威众核编程示例:stencil计算优化stencil的计算是有限差分方法的核心内容,是偏微分方程等工程领域的重要基础。首先,分析数据依赖及计算模式。如图5-10所示,当计算更新当前格点上的数据时需要其本身及上、下、左、右各两个格点的值,如果更新二维数组(矩阵)的一行数据则需要用到与其相邻的一共5行数据。神威众核编程示例:stencil计算优化然后,考虑从核计算的一种可能的任务划分方法,一个CPE负责更新一行的值。此时对应从核需要加载5行数据,并在计算完成后需要写回1行数据。考虑让每个CPE计算连续的tile行,则CPE需要加速tie+4行数据并一共写tile行数据。一般的并行方式是采用LDM作为中间缓存,先将计算所需的数据复制到LDM中,再让CPE计算。计算结果也保存在LDM中,在所有tile行都计算完成后再写回,或者计算完一行就写回一行。神威众核编程示例:stencil计算优化最后,我们考虑较少地利用从核LDM空间而采用计算完一行就写回一行结果的策略。这里,首先通过矩阵总行数row,计算出CPE需要计算的轮次loop_num;然后按轮次计算tile行的形式,计算加载数据的起始地址A_host_start和计算结果的起始地址A_new_host;接着采用athread_get()(DMA的方式)加载数据并等待数据加载完成。加载完成后,即开始计算;并在一行计算完成后,通过athread_put()(DMA的方式)将计算结果写回主存。03神威SIMD神威SIMD1.标量与向量标量:运算粒度为单个元素。向量:运算粒度为一组有序的标量。以单精度浮点数为例的标量和向量示意图如图5-11所示。SIMD简介神威SIMD一条向量运算指令等价于一个由标量运算构成的小循环,它们完成的都是数组的加法操作,向量运算相当于将循环展开,用一条向量加法指令就能完成对4个标量数据的处理。这就是单指令流多数据流的含义,既可以有效减少中间的重复指令,又可以降低循环间的控制相关性。SIMD简介神威SIMD2.向量化改写的一般步骤对两个从核函数中的标量计算段进行向量化改写,首先将循环分裂,把一组标量数据赋给向量扩展类型的变量;然后将所有标量运算改为向量运算;最后在计算完毕后,把存储结果的向量展开并赋值到指定标量数组中,流程如图5-14所示。SIMD简介神威SIMDSIMD简介3.向量化常用的运算操作例如,SW26010部分支持flatv4数据类型的向量运算操作如表5-2所示。神威SIMDSIMD简介在使用向量运算的过程中,还需要注意有没有额外的优化空间。例如,多次重复的计算可以用一个中间变量暂存,消除几余计算,减少计算次数;观察有没有可以用到乘加融合部件进行优化的计算,如果存在一些计算,在不影响计算结果的前提下,调整计算顺序可以变为形如[+/-](A[+/-]B)*C的形式,就用单条(负)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年应急救生系统项目资金需求报告代可行性研究报告
- 2023-2024学年广东省深圳市福田区八年级(下)期末英语试卷
- 2023-2024学年广东省深圳市福田区七年级(上)期中英语试卷
- 二年级数学计算题专项练习
- 健康吃药的安全
- 二年级语文下册教案
- 山东省青岛市李沧区片区2024-2025学年六年级上学期期中语文试卷
- 陕西省西安市蓝田县2024-2025学年上学期九年级物理期中质量检测试卷(含答案)
- 高中物理复习4-2第2讲抛体运动课件
- 医用按摩凝胶产业规划专项研究报告
- 十五从军征 优秀课件
- 秦朝的法律制度
- GB/T 7774-2007真空技术涡轮分子泵性能参数的测量
- GB/T 5009.199-2003蔬菜中有机磷和氨基甲酸酯类农药残留量的快速检测
- GB/T 38661-2020电动汽车用电池管理系统技术条件
- 人美2003课标版《美术鉴赏》美在民间永不朽-中国民间美术
- 药剂科质量与安全控制指标评价改进记录
- 考证-cad评分细则全国计算机信息高新技术考试
- 技术顾问聘书(通用7篇)
- 穿无菌衣戴无菌手套(课堂)课件
- (粤教版)科学一年级(上)期末质量测试题(2套)有答案
评论
0/150
提交评论