面向国产申威26010众核处理器的SpMV实现与优化
- 格式:docx
- 大小:46.40 KB
- 文档页数:14
DOI : 10.7544/issnl000-1239.2021.2020104158(6) : 1155 1165, 2021计算机研究与发展Journal of Computer Research and Development高性能众核处理器申威26010胡向东柯希明尹飞张新马永飞颜世云马超(上海高性能集成电路设计中心上海201204)(huxdisme@ vip. sina. com)Shenwei-26010: A High-Performance Many-Core ProcessorHu Xiangdong, Ke Ximing, Yin Fei , Zhao Xin, Ma Yongfei , Yan Shiyun, and Ma Chao(Shanghai High-Performance Integrated Circuit Design Center , Shanghai 201204)Abstract Based on the multi-core processor Shenwei 1600, the high-performance many-core processorShenwei 26010 adopts SoC (system on chip) technology, and integrates 4 computing-control cores and256 computing cores in a single chip. It adopts a 64-bit RISC (reduced instruction set computer)instruction set designed with an original design, and supports 256-bit SIMD (single instruction multiple data ) integer and floating-point vector-acceleration operations. Its peak performance for double precision floating-point operations reaches 3.168TFLOPS. Shenwei 26010 processor is manufactured using 28 nm process technology. The die area of the chip is more than 500 mm 2 , and the260 cores of the chip can run stably with a frequency of 1.5 GHz. Shenwei 26010 processor adopts avariety of low power-consumption designs on the architecture level , the microarchitecture level , and the circuit level, and thus, leading to a peak energy-efficiency-ratio of 10.559GFLOPS/W. Notably, both the operating frequency and the energy-efficiency-ratio of the chip are higher t h an those of theworldwide contemporary processor products. Through the technical innovations of high frequency design, stable reliability design and yield design, Shenwei 26010 has effectively solved the issues of high frequency target, power consumption wall, stability and reliability, and yield, all of which are encountered when pursuing the goal of high-performance computing. It has been applied successfullyto a 100PFLOPS supercomputer system named Sunway TaihuLight" on a large scale, and therefore, can adequately meet the computing requirements for both scientific and engineering applications.Key words Shenwei instruction set ; computation-control core ; computing core ; low power design ;energy-efficiency-ration摘 要 申威26010高性能众核处理器在多核处理器申威1600基础上,采用片上系统(system on chip ,SoC)技术,在单芯片内集成4个运算控制核心和256个运算核心,采用自主设计的64位申威RISC(reduced instruction set computer)扌旨令系统,支持 256 位 SIMD(single instruction multiple data )整数和浮点向量加速运算,单芯片双精度浮点峰值性能达3.168TFLOPS.申威26010处理器基于28 nm 工艺流片,芯片die 面积超过500 mm 2,芯片260个核心稳定运行频率达1.5 GHz.申威26010处理器从结 构级、微结构级到电路级,综合采用多种低功耗设计技术,峰值能效比达10.559GFLOPS/W .芯片运行 频率和能效比均超过同时期国际同类型处理器.申威26010通过在高频率设计、稳定可靠性设计和成品率设计等方面的技术创新,有效解决了芯片在实现高性能目标中所遇到的高频率目标、功耗墙、稳定可靠性和成品率等难题,成功大规模应用于国产10万万亿次超级计算机系统“申威•太湖之光”有效满足了科学与工程应用的计算需求.收稿日期:2020-12-21;修回日期=2021-04-26基金项目:“核高基”国家科技重大专项基金项目(2013ZX01028-001-001)This work was supported by the National Science and Technology Major Projects of Hegaoji (2013ZX01028-001-001).1156计算机研究与发展2021, 58(6)关键词 申威指令集;运算控制核心;运算核心;低功耗设计;能效比中图法分类号TP338为了满足国产超级计算机研制对国产高性能CPU(central processing unit )的迫切需求,“十一一五”期间,在“核高基”国家科技重大专项的支持下, 申威处理器研发团队完成了高性能多核CPU 芯片申威1600的研发⑴,申威1600被成功应用于第一 台全部基于国产CPU 芯片构建的国产千万亿次超级计算机系统“神威•蓝光”“十二五”期间,申威研 发团队继续在国家“核高基”重大专项的支持下,成 功完成了高性能众核处理器申威26010的研发.为了在性能和稳定可靠性等方面满足构建国产新一代 超级计算机系统的需求,芯片研发团队在高性能多 核处理器申威1600研发成果和技术基础上,突破了 芯片结构设计、低功耗设计、稳定可靠性和成品率设计等多个方面的关键技术,最终于2014年完成芯片 研制,并大规模应用于国产10万万亿次计算机系统 “神威•太湖之光",该系统从2016年6月开始连续4次蝉联全球超级计算机排行榜Top500冠 军,基于该系统的应用课题2次斩获超级计算应用 最高奖一一“戈登•贝尔奖”申威26010芯片采用片上系统(system on chip,SoC)技术,片上集成了 4个运算控制核心和256个运算核心,以及4路128位DDR3存储访问接口和8通路PCI-E3.0等I/O 接口.该芯片采用28 nm 工艺流片,晶体管数量达到50亿,die 面积超过500 mm 2 , 已接近芯片代工生产极限.处理器核心工作频率达 到1.5GHz,双精度浮点峰值性能达3.168TFLOPS,峰值功耗近300W.要实现芯片的性能、功耗和稳定可靠性等多个方面技术指标,芯片研发在结构和微 结构、正确性、低功耗、稳定可靠性和成品率等方面遇到了巨大的挑战,本文主要阐述应对这些挑战的 设计方法•1结构与组成1.1总体结构申威26010处理器采用分布共享SoC 芯片架构,全芯片共集成了 4个运算控制核心和256个 运算核心,以及4路128 b 的DDR3存储器控制接口和8通路PCI-E3.0等I/O 接口,总体结构如图1所示.申威26010片上包含4个核组、1个系统接口Fig. 1 The overall structure of Shenwei 26010图1申威26010总体结构图胡向东等:高性能众核处理器申威260101157和1套片上网络.每个核组包含1个运算控制核心、1个8X8的运算核心阵列和1个协议处理部件及智能存储器访问控制接口iMC;系统接口连接PCI-E3.0和以太网等I/O接口;片上网络实现4个核组和系统接口之间的互连•自主指令集是国产处理器冲破国外同行业的技术封锁和知识产权壁垒的基础,申威26010处理器的2类核心采用申威自主64b的RISC指令集,运算控制核心和运算核心的基础指令集保持兼容,支持8b,16b,32b和64b整数运算、单精度和双精度浮点运算,并根据高性能应用需求进行了扩展:类核心均支持256b的SIMD扩展指令,支持整数和浮点的短向量操作,使得运算控制核心每个时钟周期最快可以完成16个双精度浮点运算,运算核心每个时钟周期最快可以完成8个双精度浮点运算•1.2运算控制核心和运算核心芯片集成的运算控制核心负责芯片资源管理,提供各种系统服务功能,并承担系统中无法并行化的应用程序段的执行,因此对该核心的管理功能和计算性能要求均很高.申威26010的运算控制核心由指令流水线、运算流水线、访存流水线和2级Cache等部分组成.采用4译码7发射指令流水线结构,支持同时发射5条整数类指令(含访存指令)和2条浮点类指令,支持指令预取、转移预测、寄存器更名、乱序发射、乱序执行和推测执行•运算流水线包含5条整数流水线、2条支持256b的SIMD指令的浮点流水线以及对应的寄存器文件.访存流水线处理访存指令,实现对存储器空间和I/O空间的访问,控制数据Cache的访问.每个核心集成了容量均为32KB的一级指令Cache和一级数据Cache,以及指令和数据共享的512KB二级Cache.运算控制核心的总体结构如图2所示.芯片集成的运算核心主要承担计算任务,由指令流水线、运算流水线、访存流水线、16KB一级指令Cache和64KB可重构局部数据存储器等部分组成.运算核心指令流水线采用2译码2发射结构,支持乱序发射、乱序执行和乱序退出•运算流水线包含2条运算流水线,其中1条运算流水线支持256b的SIMD指令,支持整数和浮点的短向量加速计算,另一条为整数运算流水线,支持32b和64b整数算术运算、逻辑运算、移位运算以及访存地址的计算等, 2条运算流水线共享1个寄存器文件.访存流水线处理访存指令,实现对存储器空间的访问,并控制可重构局部数据存储器的访问•根据应用需要,可将核心局部数据存储器重构成软硬件协同Cache结构.Fig.2The structure of the computation-controlling core图2运算控制核心结构图芯片的2类核心通过支持256b的单指令流多数据流SIMD指令,支持整数和浮点的短向量操作,实现单条指令同时对多个不同数据完成相同操作,实现核心内的数据级并行;2类核心实现的超标量结构支持核心内的指令级并行处理;核组内的不同核心之间和核组之间支持线程级或进程级等更高层次的并行处理.基于芯片支持的多粒度多层次并行处理功能,使得在1.5GHz工作频率下单个运算控制核心的双精度浮点峰值性能达到24GFLOPS,单个运算核心的双精度浮点峰值性能达到12GFLOPS,芯片集成的260个核心提供的双精度浮点峰值性能可达3.168TFLOPS.1・3片上存储结构芯片集成的运算核心采用了局部数据存储器技术,每个运算核心的局部数据存储器可由软件完成数据的缓存管理,不同管理方式可同时存在并支持局部数据存储器容量的动态划分,充分结合硬件的高效性和软件的灵活性,降低芯片实现开销并满足应用对存储的需要.运算核心的指令存储器采用Cache结构,硬件支持对一级指令Cache的指令脱靶进行合并,提高了存储总线带宽的利用率.运算核心阵列集成了更大容量的共享二级指令Cache,进一步提高了具有局部性的指令访问命中率,降低指令脱靶访问延迟,并且减少指令脱靶对主存储器的频繁访问•为支持片上存储的高效使用和数据在运算核心1158计算机研究与发展2021,58()中的灵活分配,运算核心在能够直接访问主存空间的同时,采用了多模式数据流传输技术,支持数据在核心局部数据存储器和主存间的批量带跨步的异步数据传输,实现计算与访存的并行.每个存储访问接口还实现了智能访存优化算法,优化算法可以依据不同课题的访存特征对访存请求进行访问优化,以有效提高存储带宽的使用效率.申威26010核组的运算核心阵列还实现了基于预约调度的传输总线技术,多个运算核心的访存行为由集中控制器进行统一管理,多核心复用的总线资源按照效率优先兼顾公平的算法进行节拍级调度和分配,充分保证运算核心的服务质量,提升了访存效率.总之,申威26010处理器的片上存储结构有效利用了片上资源,缓解了访存墙问题.2正确性验证高性能处理器的正确性验证至今仍是一个业界难题,而申威26010处理器设计规模庞大、结构复杂,内部包含4个运算控制核心、256个运算核心、4路高带宽DDR3存储控制接口等众多功能模块,组成了一个逻辑极其复杂的片上系统.申威26010还包含核心、核组和芯片等多个设计层次,较多的设计层次使得片内运行控制更加复杂,逻辑信号传递路径越深,传递过程中的各种组合情况越复杂,设计错误隐藏也越深,验证难度越大.这个复杂的片上系统对正确性验证提出了严峻的挑战,如果仅仅采用传统处理器验证方法,难以在有限的研发周期内完成芯片的验证工作,为此,芯片验证团队在借鉴以往验证经验的基础上,主要采用了3种技术方法:1)综合采用多种验证手段.申威26010芯片综合采用了模拟验证、硬件仿真加速器验证[力、FPGA实物验证8和形式验证凹等多种验证方法.模拟验证作为一种传统的验证方法,可观性好,错误定位快,但其验证速度随着验证对象规模的增大而降低,由于申威26010在设计的模块级和部件级规模相对较小,主要采用该方法来进行验证,取得了较好验证效果;硬件仿真加速器验证的验证速度可以比模拟验证快很多,而且可观性好,验证过程中的信号状态可以全程跟踪,错误定位便捷,用于验证的中后期,芯片有了基本正确性以后,在核心以上层次支撑操作系统及应用程序等较大规模测试程序的验证,申威26010的硬件仿真加速器验证环境上几乎发现了全部软硬件接口相关的设计错误,取得了很好的验证效果;FPGA实物验证的验证速度比硬件仿真加速验证更快,主要用于在核心以上层次支撑大量应用级测试程序的验证,申威26010基于自研的单核、单核组、多核组和全片等多种不同规模的FPGA验证平台,实现了多个层次在应用级的快速验证,有效加快了芯片的错误收敛速度;形式验证在申威26010中主要用于RTL设计与后端物理实现之间的等价性验证.2)采用层次化的验证策略.针对申威26010的层次化结构和芯片规模超大特性,将芯片的正确性验证分为模块级、部件级和芯片级3个层次,开发以白盒、黑盒和灰盒测试理论指导下的基于约束的随机激励、基于断言的定向激励以及多元化事务激励、场景激励,分解激励开发和验证难度,满足不同层次验证环境对运行速度和验证资源的需求.模块级运行速度快,资源用量少,侧重白盒焦点验证,在信号层面开发各种激励确保底层模块验证覆盖率.部件级运行速度较快,验证资源用量中等,侧重在协议层面开发激励,既包含白盒焦点验证和灰盒验证,也含有黑盒自动化验证.芯片级运行速度慢,验证资源用量大,侧重于在指令序列等软件可见状态层面构建自动化验证环境进行黑盒方式验证.3)构建可重构芯片级验证环境.可重构芯片级验证环境支持多种参数化配置,使得验证人员能够根据不同的验证需求,自由灵活地构建芯片级验证环境,较好地解决了验证覆盖率和模拟仿真速度之间的矛盾,也较好地解决了验证规模与运算资源之间的矛盾,取得了很好的验证效果.申威26010的可重构芯片级验证环境如图3所示.该环境支持芯片中的核组数量可配置,可以配置芯片的核组数量为1~4个,支持单核组中运算核心数量可配置,可以配置的运算核心数量为1〜64个;支持对各核组内的运算核心阵列中的真、伪运算核心进行替换,其中伪运算核心是一个运算核心接口模型,伪运算核心模型的接口行为与真实核心完全一致,但其设计规模远小于真实运算核心;支持对各核组中的访存接口进行多种配置,包括使用真实的设计模型、虚拟存储器接口模型等;支持对芯片中的PCI-E和以太网接口进行配置,可选择芯片RTL模型中是否包含这2个接口.申威26010通过综合采用多种验证方法,以及多层次、多规模的验证,发挥各种验证方法的优势,从不同验证层次和验证视角实现交叉验证和优势胡向东等:高性能众核处理器申威260101159算制心运控核运算核心(真、伪运算 核心数量可配)协议处理部件访存接口 (真、伪可配)存储器核组0 ;-----核组1核组2核组3(芯片内核组数量可配)系统接口芯片接口验证组件集成验证组件的可配置RTL 模型Fig. 3 Reconfigurable chip-level verification environment图3可重构芯片级验证环境互补,最终取得了很好的验证效果,实现了一次流片 成功的目标.3物理实现申威26010规模庞大,芯片尺寸已接近生产极 限,这对物理实现来说是个极大的挑战,为了完成如 此大规模芯片的物理设计且实现高性能的目标,本芯片采用高可复用层次化物理设计、高性能时钟系 统设计和定制综合混合设计等方法,基于28 nm 工 艺实现了 1.5 GHz 的频率指标•3.1高可复用层次化物理设计层次化物理设计方法是实现超大规模芯片设计 的基础,该方法实现了物理设计并行化,提高了后端 设计团队在统一平台上分工协作的效率,同时层次化的设计可以缩小模块的设计规模,减轻设计及检查分析对计算资源需求的压力,缩短设计优化的周期,从而可以通过增加优化迭代的次数,取得更好的 设计优化效果•本芯片采用的高可复用物理设计方 法支持电路和版图的层次化设计,同时支持静态时 序分析、功耗分析、等价性验证和可靠性分析等层次化的检查分析,从而高效地实现了申威26010这款 极大规模芯片的物理设计.申威26010物理实现上分为核心、核组和芯片3个全局层次,采用自顶向下的策略,以全片 Floorplan 设计、全局电地设计以及全局时钟设计为主导,根据芯片总体要求和信号连接关系,依次确定 芯片、核组和核心的面积和各层次模块的相对位置 关系,制定时钟网络的实现方案,给出各层次顶层的设计资源和设计约束,实现芯片的总体布局和规划. 各模块在顶层模块给予的设计约束下进行设计和优 化,并将结果依次反馈给上一层次进行调整优化,实现自底向上的反馈回路.层次化的设计中采用了高 可复用性的策略,功能模块和缓存模块设计好后进 行IP 化处理,给核心层进行复用,核心层固化后在核组层进行复用,在芯片层对核组进行复用,实现了 高效的层次化设计.3.2高性能时钟系统设计全芯片包含了多种不同频率时钟,包括:控制核心时钟、运算核心时钟、存控时钟、PCIE 时钟、全局 时钟、接口及维护时钟等.其中全局时钟频率达到1.4 GHz,控制核心和运算核心的频率均达到1.5 GHz.不同时钟在分布范围、时钟偏斜和时钟功耗上有不 同的指标要求,需要根据它们的特点分别采用不同 的设计方法:1) 对于运算核心时钟、控制核心时钟和全局时钟3种高频率且分布范围广的时钟,采用“全局+局 部”层的时钟设计结构,分层次进行低偏斜时钟设计;为增强抗OCV (on -chip variation )的能力,全局 时钟采用对称Htree 型结构,实现时钟从源头到各 终点传播延时的精准控制.在模块局部时钟设计中,直接采用“大驱动+ MESH ”的方式直连到各时序单元,确保时钟信号传播的低延时和低偏斜.一个运算 核组的时钟分布如图4所示.2) 对于分布范围较小或频率较低的其他时钟按照平衡时钟树的方式进行单层时钟结构设计,在满足设计性能的同时也大大降低了设计复杂度•通过上述设计方法,申威26010的各咼频时钟1160计算机研究与发展2021,58(6)Fig.4Clock network distribution of an computingcore group图4一个运算核组的时钟网络分布图全片分布最大偏斜均控制在10ps以内,时钟占空比达到49.85%〜50.15%,经流片测试各时钟均可以稳定运行在设计频率下,达到了设计目标•3.3高性能定制设计申威26010芯片2类核心的逻辑非常复杂,为了达到频率设计目标,采用了多种定制设计技术:1)全局通路设计在全局芯片布局设计时优先考虑关键时序通路的设计,尽可能缩短其物理长度.此外在全局布线的金属资源选取上,也将传播速度较快的高层金属尽量向关键通路倾斜,确保关键通路的时序可以满足设计要求.2)定制存储器设计访存路径一直是处理器的关键路径所在,需要进一步提升片上SRAM阵列的访存速度.商用的存储器综合工具(Memory Compiler)已无法满足存储器的频率要求,申威26010处理器内部主要Cache 阵列均为定制实现,包含单端口和双端口阵列•定制存储器采用了容偏差灵敏放大器设计、高速译码器设计和自定时电路等关键技术[0],速度比基于商用工具生成的存储器快27%〜37%.此外寄存器文件也是关键路径所在,由于读写端口众多,综合实现方法无法有效地布通走线,且时序难以达到指标,申威26010中的5读5写和7读4写寄存器文件均为定制设计,采用了自研多端口bitcell(存储单元)、高速译码电路和多米诺读出电路等关键技术,最终满足了寄存器文件的频率设计要求.3)高性能时钟树定制设计为尽可能降低时钟偏斜、降低时钟延时和增强其抗OCV的能力,全芯片3个主要高频时钟均采用定制设计方式实现,时钟主干采用定制Htree时钟树结构,时钟的一级驱动单元、二级驱动单元及门控驱动单元均采用定制实现,确保整个时钟树设计具备低传播延时和低传播偏斜的特性•通过这3种技术手段,芯片最终可以稳定运行在1.5GHz,工作频率高于国际上同期同类芯片,使芯片性能达到了设计预期,双精度浮点峰值性能达到了 3.168TFLOPS的设计指标.3.4高性能综合设计为提高设计效率,芯片的大部分控制与运算逻辑模块均采用了综合设计方法来实现,在传统商用综合设计流程的基础上,芯片开发团队根据芯片的特点自行定制开发了多项自动化功能,例如:自动填充物理信息的逻辑综合功能、关键逻辑自动打包聚集功能、根据时序自动调整并优化关键路径权重功能、自动创建定制Mesh时钟树功能、对关键路径或指定路径优先进行布线功能、自动在大反转电流单元两侧插入去耦电容功能[1]、集成时序分析及时序自动优化功能、集成设计规则检查及自动修复功能等.通过对综合流程的深度定制化开发,大大提高了综合设计质量和效率,模块级设计频率较标准商用流程提升15%〜20%,布线错误率下降90%,极大地提高了设计的效率和质量.4低功耗设计随着晶体管数量的增加和工作频率的提高,降低处理器的功耗变得越来越重要[2「13].申威26010在实现高性能的同时,从结构级、微结构级到电路级,综合采用多层次功耗优化技术来降低处理器的功耗.1)结构级低功耗设计申威26010在结构级采用的低功耗设计技术有:①申威26010的结构设计思想是通过集成众多核心来提升性能,适当降低单核心最高工作频率的要求,避免过高工作频率带来功耗的快速上升,从而有效地提升了芯片的能效比.胡向东等:高性能众核处理器申威260101161②支持多种形态的工作模式.包括深度睡眠、浅睡眠和低功耗运行模式.对较长时间无工作负载的核心,可控制使其处于极低工作频率的深度睡眠状态,最大限度降低运行功耗;对短时间无工作负载的核心,特殊的停机指令可使核心处于浅睡眠状态,杜绝核心绝大多数信号的翻转从而降低功耗;对运行速度要求较低的应用程序,可以动态调整指令发射速度,达到降低运行功耗的目的.③多频率设计.在满足性能需求前提下,仅核心采用最高工作频率,互连部件、存储控制器和系统接口则采取较低的工作频率,降低运行功耗.2)微结构级低功耗设计申威26010在微结构级采用的低功耗设计技术有:①功能部件动态配置.采用动态切割方式,支持不同层次的部件切割,以降低功耗.一是核心级,可以根据应用需求的核心数量,将不使用的核心断开,使其处于极低工作频率状态;二是部件级,对浮点部件或SIMD运算部件,在运行无浮点操作或无SIMD运算的应用时,可动态关闭浮点部件或SIMD 部件的时钟,降低核心的运行功耗.②多端口存储器设计.Cache存储器设计采用“虚拟多端口”技术来减少物理端口数量,既降低功耗,也有效降低芯片面积.其中运算控制核心的指令Cache和二级Cache都采用物理单端口存储器,虚拟实现双端口功能,数据Cache则采用双端口存储器实现了虚拟三端口的功能.③I/O低功耗支持.DDR3存储器接口和PCI-E 接口都支持低功耗模式,在没有访问请求时,可自动处于低功耗状态.3)电路级低功耗设计申威26010在电路级采用的低功耗设计技术有:①采用多层次多粒度的门控时钟方式.降低平均运行功耗,细粒度控制可在模块内部实现对一定数量的触发器进行控制,粗粒度控制可在模块级、核心级和核组级进行时钟控制,从而实现不同工作模式下降低功耗的目标.同时采取动态功耗分析和电压降分析,通过布局优化和放置片上电容,避免门控时钟在降低功耗的同时造成动态电压降影响电路工作的稳定性.②采用多阈值晶体管混合设计.以常规阈值晶体管为主体进行设计,用速度最快的低阈值晶体管进行关键时序路径的优化,这样在满足设计频率目标前提下,尽可能采用高阈值晶体管来优化漏电功耗.通过此设计策略,在申威26010的50亿晶体管中,低阈值晶体管数量仅占1.97%,使得常温下漏电功耗仅为12W.5可靠性设计申威26010在使用中根据运行课题的不同,芯片的实际功耗往往会在几十瓦到几百瓦之间来回波动.频繁的大幅度功耗波动给芯片的稳定可靠性带来了严峻的挑战.为了确保芯片可以在实际系统中稳定运行,申威26010从结构设计到物理设计综合采用了多种高可靠性设计方法,有效地降低了功耗波动对电源网络系统的影响,确保了芯片在实际系统中的稳定工作.芯片稳定可靠性设计所采用的关键技术方法有:1)电地网络强化设计.在各运算核心和运算控制核心上均采用BUMP垂直供电技术,确保各部分的充足供电;采用自顶向下每层均垂直交叉打孔的网格状方式进行连接;除相互电地隔离的区域外,所有模块电地均在芯片顶层连在一起,构成一张统一完整的大网,确保电源网络的强壮性.2)电地网络隔离设计.同时对于不同核心区域的电地进行物理隔离,避免功耗波动导致的电压波动相互影响.3)去耦电容的按需使用.通过设计流程优化确保各大功耗单元周围插入去耦电容单元,减少电源波动.4)片上时钟变化平滑过渡的控制方法.在芯片整体或局部部件进行时钟频率提升或降低时,按照预设的部件粒度和时间间隔进行频率的变化,使得芯片内部时钟频率变化时功耗按梯度变化,有效降低功耗波动给芯片可靠运行带来的风险.5)片上存储器采取容工艺偏差自调节设计方法.在芯片运行过程中实时感知工艺参数的变化,并根据工艺参数的变化情况自动调整存储器电路的相关参数,以有效容忍制造工艺偏差,提高电路运行的稳定可靠性.6成品率设计越大的芯片面积会导致更大的工艺偏差和更高的制造缺陷概率,从而会导致部分芯片出现性能或功能上的问题,降低芯片成品率.申威26010在设计。
8With high influence in China’s high-performance computing (HPC), this research group has been devoting to the R&D of software for domestic supercomputers such as Sugon, Lenovo, Sunway and Tianhe during the past two decades. To tackle with the major challenges of HPC, they developed a new generation of high-performance algorithm library on Sunway TaihuLight, and successfully promoted a number of important applications in China. The group also designed a series of novel domain-decomposition algorithms for large-scale heterogeneous environments, and managed to make Tianhe-2 the world’s No. 1 place in the HPCG List. Particularly in 2016, because of the major breakthroughs they made in the design of 10-millon-core scalable fullyimplicit solvers, the group won the ACM Gordon Bell Prize, which is the first time that China has won this high honor in its 29-year history. This achievement is seen as notonly a landmark breakthrough in China’s HPC development but also an irreplaceablecontribution to world’s recognition of China’s global leadership in HPC.Winners of 2017' Outstanding Science and Technology Achievement Prize of the Chinese Academy of Sciences该研究集体是我国高性能计算领域有重要影响的团队,二十年来始终致力于曙光、联想、神威、天河等系列国产高性能计算机的软件研发。
基于申威26010处理器的扩展函数库实现与优化曹代;郭绍忠;张辛【摘要】Intel,AMD and IBM have their vector extension libraries which accord with their own pared with traditional scalar calculation,the speedup of vectorization technology ishigher.Therefore,this paper develops a set of vector math library software for SW26010 processor.Based on the analysis of function commonly used,like series method and iterative algorithm,combined with the trigonometric function,inverse trigonometric function,exponential function and logarithmic function,it researches an efficient vectorization algorithm and carries out realization and optimization.This algorithm supports high precision and high performance calculation,and meets the requirements of floating-point calculation.Test result shows that the precision of the proposed function library satisfies specific application requirements of pared with the Intel VML math library,all functions' performance improvements are more than 1.1 on average.%Intel,AMD和IBM都具有针对自身特点的向量扩展库.相比于传统的标量计算,向量化技术带来的加速比较高.为此,针对申威26010处理器开发向量数学库软件.在分析函数常用级数法和迭代法算法的基础上,结合三角函数、反三角函数、指数函数和对数函数研究一种高效向量化算法,并对其进行实现与优化,使其支持函数高精度和高性能计算,并且满足浮点运算的要求.测试结果表明,该算法精度达到申威26010处理器上特定应用的要求,与Intel VML数学库相比,各函数的平均加速比均达到1.1以上.【期刊名称】《计算机工程》【年(卷),期】2017(043)001【总页数】7页(P61-66,71)【关键词】浮点运算;数学函数;申威26010处理器;数据分段;指令调度【作者】曹代;郭绍忠;张辛【作者单位】数学工程与先进计算国家重点实验室,郑州450002;数学工程与先进计算国家重点实验室,郑州450002;数学工程与先进计算国家重点实验室,郑州450002【正文语种】中文【中图分类】TP311随着人们对现代计算机技术认知观念的转变,高速计算已经从追求单一的高性能逐渐向追求综合的高效能发展[1]。
现代电子技术Modern Electronics TechniqueMar. 2024Vol. 47 No. 62024年3月15日第47卷第6期0 引 言单指令流多数据流(Single Instruction MultipleData, SIMD )是计算机处理器中的一种指令集架构,主要用于执行并行计算[1]。
为提升CPU 的图形图像数据处理能力,SIMD 架构被广泛应用于各种类型的计算机处理器中,包括常见的桌面和移动设备处理器[2‐3]。
申威是我国自主设计、具有完全自主知识产权的64位字长Load/Store 型RISC 架构多核处理器[4]。
经过多年发展,申威形成了Core3B 核心处理器指令系统,包括基本指令系统和SIMD 扩展指令系统。
所有指令均采用定长的32位格式,支持32位单精度和64位双精度浮点运算,支持256位单指令流多数据流(SIMD )的短向量运算,通过指令集适配优化,可以大幅度提升系统性能。
尽管H.265已发布多年,但H.264仍是目前市场应用最广泛的视频编解码标准[5]。
对该编解码算法的结构并行性研究,主要集中在X86和ARM 平台上[6‐7],而在国产化CPU 平台上的相关研究还不多见[2],大部分为针对解码器或滤波模块的优化工作。
文献[8]介绍了基于开DOI :10.16652/j.issn.1004‐373x.2024.06.008引用格式:黄朴,刘世巍,张昊,等.基于申威SIMD 指令的H.264编码优化[J].现代电子技术,2024,47(6):49‐54.基于申威SIMD 指令的H.264编码优化黄 朴, 刘世巍, 张 昊, 王 聪(中电科申泰信息科技有限公司, 江苏 无锡 214000)摘 要: 国产化申威处理器出现较晚,其在多媒体领域中的性能还不突出,同时通用处理器中的单指令流多数据流(SIMD )因能有效提升并行处理能力而受到处理器厂商的青睐。
为提高国产化自主平台申威架构的多媒体处理能力,结合申威架构Core3B 体系的SIMD 指令系统,提出一种基于申威架构的SIMD 指令集H.264编码优化方法。
“神威太湖之光”问鼎世界超算冠军佚名【期刊名称】《发明与创新(综合科技)》【年(卷),期】2016(000)007【总页数】3页(P17-19)【正文语种】中文▲2016年6月20日,“神威·太湖之光”取代“天河二号”成为全球最快超算(新华社李响摄)想象一下,滴答一声,就能计算十亿亿次,这是多快的运算速度?如果把200多万台2016年生产的普通电脑加起来,只能跟它打个平手。
它1分钟的计算能力,相当于全球72亿人同时用计算器不间断计算32年。
这个快到令人咋舌的超级计算高手就是我国自主研制的“神威·太湖之光”计算机系统。
6月20日,在德国法兰克福举行的国际超算大会上发布了全球超级计算机TOP500榜单,“神威·太湖之光”以近三倍于第二名的运算速度摘得桂冠。
更令人振奋的是,它实现了包括处理器在内的全部核心部件的国产化。
开机一分钟,地球人算32年系统的峰值性能125.436PFlops,世界第一。
持续性能93.015PFlops,世界第一。
性能功耗比6051MFlops/W,还是世界第一。
国际超算大会上传来的消息光看数据让人不明就里。
“简单来说,这套系统1分钟的计算能力,相当于全球72亿人同时用计算器不间断计算32年;如果用2016年生产的主流笔记本电脑或个人台式机作参照,‘太湖之光’相当于200多万台普通电脑。
”国家超级计算无锡中心主任杨广文介绍。
走进国家超级计算无锡中心,1000平方米的房间内,摆放着“神威·太湖之光”的“真身”:由40个运算机柜和8个网络机柜组成。
每个运算机柜比家用的双门冰箱略大,打开柜门,4块由32块运算插件组成的超节点分布其中。
每个插件由4个运算节点板组成,一个运算节点板又含2块“申威26010”高性能处理器。
一台机柜就有1024块处理器,整台“神威·太湖之光”共有40960块处理器。
“每一块处理器的计算能力与20多台常用笔记本电脑相当,4万多块再组装到一起,速度之快可想而知。
• 68•随着近年来网络安全事件频繁发生,系统安全问题逐步成为遏制国家科学技术进步的巨大威胁。
为了加紧落实国家信息安全自主可控战略,不断推动航空航天领域的信息安全建设,针对低轨卫星仿真现状提出了一个适时可行的国产平台移植实施方案,基于国产轻量级容器云平台移植和优化低轨卫星仿真及控制系统,并把仿真和控制系统迁移到国产容器集群环境,结合国产容器集群研究低轨卫星的仿真和控制模型,通过模型试验证明低轨卫星仿真系统在国产申威平台上稳定运转的可靠性,力争为航空航天领域的多类型应用系统向国产平台迁移提供借鉴。
卫星地面仿真系统是卫星顺利执行空间探测任务的基础和保障,在航天技术的发展中起着举足轻重的作用。
然而,目前仿真系统所用动力学模型全都是依托国外较为先进的软硬件平台技术建立起来的,对国外的软硬件技术和产品有着很高的依赖性。
尽快构建安全自主可控的卫星地面仿真系统,解决关键技术国产化攻关,减少对国外技术的依赖,保护科技成果知识产权,保证低轨卫星的安全稳定运行,已经成为航天技术稳固发展中的紧迫任务。
1 申威多核国产平台介绍“十五”期间,在国家“863”高新技术发展计划的支持下,国产高性能处理器研发也实现了零的突破。
在国家“核高基”等重大科技专项的支持下,国产高性能处理器发展步伐迅速,实现了从单核到多核的飞跃,“申威”高性能处理器正是在此大背景下应运而生,申威高性能处理器经过这些年的磨练,凝结了无数科研人员的心血,独立自主发展起来。
“申威”系列国产芯片已多次成功应用于国家重大科技工程项目中,并在党政机关、关键领域、商业市场上开展了产业化推广,正在为国家信息安全战略和信息产业升级发展做出积极的贡献,尤其全部采用申威众核处理器SW26010的“神威·太湖之光”超级计算机,这几年来大放异彩,更是连续4次登顶世界超算TOP500,在“神威·太湖之光”上运行的应用更是史无前例地连续2年获得了戈登贝尔奖。
2 低轨卫星动力学介绍低地球轨道(Low Earth Orbit,LEO)是指高度在160km 到200km 之间的轨道,在这一轨道上运行的卫星被称为低地球轨道卫星,简称低轨卫星。
面向国产申威26010众核处理器的SpMV实现与优化刘芳芳;杨超;袁欣辉;吴长茂;敖玉龙【摘要】世界首台峰值性能超过100P的超级计算机——神威太湖之光已经研制完成,该超级计算机采用了国产申威异构众核处理器,该处理器不同于现有的纯CPU,CPU-MIC,CPU-GPU架构,采用了主-从核架构,单处理器峰值计算能力为3TFlops/s,访存带宽为130GB/s.稀疏矩阵向量乘SpMV(sparse matrix-vector multiplication)是科学与工程计算中的一个非常重要的核心函数,众所周知,其是带宽受限型的,且存在间接访存操作.国产申威处理器给稀疏矩阵向量乘的高效实现带来了很大的挑战.针对申威处理器提出了一种CSR格式SpMV操作的通用异构众核并行算法,该算法从任务划分、LDM空间划分方面进行精细设计,提出了一套动静态buffer的缓存机制以提升向量x的访存命中率提出了一套动静态的任务调度方法以实现负载均衡.另外还分析了该算法中影响SpMV性能的几个关键因素,并开展了自适应优化,进一步提升了性能.采用Matrix Market矩阵集中具有代表性的16个稀疏矩阵进行了测试,相比主核版最高有10倍左右的加速,平均加速比为6.51.通过采用主核版CSR格式SpMV的访存量进行分析,测试矩阵最高可达该处理器实测带宽的86%,平均可达到47%.【期刊名称】《软件学报》【年(卷),期】2018(029)012【总页数】12页(P3921-3932)【关键词】稀疏矩阵向量乘;SpMV;申威26010处理器;异构众核并行;自适应优化【作者】刘芳芳;杨超;袁欣辉;吴长茂;敖玉龙【作者单位】中国科学院软件研究所并行软件与计算科学实验室,北京 100190;中国科学院大学,北京 100049;中国科学院软件研究所并行软件与计算科学实验室,北京 100190;计算机科学国家重点实验室(中国科学院软件研究所),北京100190;北京大学数学科学学院,北京100871;国家并行计算机工程技术研究中心,北京 100190;中国科学院软件研究所并行软件与计算科学实验室,北京 100190;中国科学院软件研究所并行软件与计算科学实验室,北京 100190;中国科学院大学,北京 100049;北京大学数学科学学院,北京100871【正文语种】中文【中图分类】TP303稀疏矩阵向量乘(SpMV)y=Ax是科学与工程计算中一个非常重要的计算内核,其性能往往对应用整体性能有着很大影响.SpMV是属于访存密集型的,算法中的浮点计算与存储访问的比率很低,且稀疏矩阵非零元素分布很不规则,使得向量x为间接访问且访问不规则,可重用性差,这些因素给SpMV的高效实现带来很大挑战.目前,超级计算机的体系结构已经从多核向众核乃至异构众核发展,然而访存墙问题却越来越突出,带宽受限型操作的峰值性能也越来越低,并且实现难度逐步增大.由我国国家并行计算机工程技术研究中心研制的新一代申威异构众核处理器已经面世,其峰值性能为3TFlops/s,聚合访存带宽为130GB/s,相比计算能力,其访存能力偏弱,给稀疏矩阵向量乘的高效实现带来了巨大的挑战.本文针对该处理器特点,提出一种面向传统的稀疏矩阵存储格式CSR的通用SpMV异构众核并行算法,并从任务划分、LDM空间划分、向量x访存优化、负载均衡、自适应优化等角度开展工作.1 相关工作介绍SpMV的实现和优化,一直是高性能计算领域科研人员的研究重点.每当一款新的处理器问世,基于该处理器的 SpMV实现及优化的工作就会持续出现.基于 CPU的SpMV工作有很多,主要从存储格式[1,2]、分块算法[3-5]、值和索引压缩[6,7]、向量化[8,9]、自适应优化[10,11]等角度开展研究.2008年,GPGPU出现,开启了GPU用于通用计算的热潮.随后,基于GPU的SpMV 工作大量涌现,这些工作主要通过存储格式、重排、压缩、自适应调优等技术解决带宽利用率、负载均衡、并行度等问题,先后提出了HYB[12],ELLPACK-R[13],sliced-ELLPACK[14],blocked ELLPACK[15],BRC[16],BCCOO[17]等新型存储格式;研究了稀疏矩阵的重排技术[18]及压缩格式[19],以减少访存开销;研究了GPU平台体系结构特征、稀疏矩阵存储格式、稀疏矩阵集之间的关系,并给出自动选择模型[20];另外还研究了自动调优技术[17,21,22],以根据稀疏矩阵的特征选择最优参数并获取较优的性能.2011年,Intel公司的异构众核处理器Xeon Phi发布.随后,Liu等人[23]提出了新的ESB格式,该格式可有效改善Xeon Phi上SpMV向量化性能,并能减少访存开销,另外还提出了混合的动态调度器以改善并行任务的负载均衡性;Tang等人[24]通过新的存储格式VHCC、二维不规则任务划分、自动调优技术等优化了一类scale-free 稀疏矩阵SpMV的性能.另外还有一类工作涉及到多个异构众核处理器,Kreutzer等人[25]主要从改善向量化性能的角度提出新的存储格式SELL-C-σ;Liu等人[26]提出了CSR5存储格式用于改善不规则稀疏矩阵SpMV的性能,在多个异构众核处理器上实现并与现有最优工作进行了对比.本文主要研究面向申威26010异构众核处理器的SpMV并行算法及实现和优化技术,以支撑该国产平台相关应用.2 国产申威26010处理器介绍国产申威 26010处理器采用异构众核架构,由 4个核组(core group,简称 CG)组成,其双精度计算能力3TFlops/s,单处理器拥有260个核心,采用共享存储架构,聚合访存带宽130GB/s.基于该处理器搭建了国产神威太湖之光超级计算机,已经部署于国家超算无锡中心,其峰值性能超过100PFlops/s.本文主要在其一个核组上开展工作,如图1所示.每个核组由控制核心(management processing element,简称MPE,又称主核)、计算核心簇(computing processing elements clusters,简称CPE cluster,又称从核)、协议处理部件(PPU)和存储控制器(memory controller,简称MC)组成.平均每个核组的访存带宽为32.5GB/s,实测带宽为27.5GB/s.主核采用通用的RISC架构,向量化宽度256位,采用一级数据和指令Cache分离、二级指令数据共享的两级片上存储层次.从核核组采用拓扑为8×8 mesh互联,包含64个计算核心和DMA(DMA controller)控制器.计算核心采用精简的64位RISC 指令集,向量化宽度为256位,有64KB的Scratch Pad Memory(又称LDM),通过DMA可实现内存与LDM间的快速数据传输.应用程序由控制核心启动,借助高性能线程库Athread将计算任务异步加载到计算核心执行,双方通过同步接口协同. Fig.1 The architecture of SW26010 processor图1 国产申威26010处理器单核组架构图3 CSR格式简介CSR格式是目前稀疏矩阵使用最广泛的一种存储格式.设待存储的稀疏矩阵A是m×n维的,有nz个非零元,其通过3个一维数组来存储稀疏矩阵的信息,具体如下: ·val[nz],记录每个非零元的值;·col[nz],记录每个非零元所在的列;·ptr[m+1],记录每行的第1个非零元在数组val[nz]和col[nz]中的索引,其中,ptr[m]=nz.图2给出了一个示例.目前,大多数科学与工程计算应用的矩阵中均采用CSR格式进行存储,国际上SpMV算法的研究也大都以 CSR格式为基准,如果采用其他存储格式,还需衡量该格式到 CSR格式的转换开销,故本文直接研究基于CSR格式的SpMV算法.Fig.2 The CSR format图2 CSR格式示意图4 SpMV异构众核并行算法4.1 任务划分申威众核处理器每个核组包括1个主核和64个从核,为了充分利用从核核组的计算资源,我们将计算任务尽可能的分给从核,主核主要负责前处理和控制.对于稀疏矩阵而言,任务划分方法有两种:一维划分和二维划分.二维划分时,多个从核会同时更新y向量的一部分,需要加锁处理,从而导致额外的开销.对规则稀疏矩阵而言,每行的非零元个数较少,LDM 可以容纳至少一行计算所需的元素,所以我们采用一维的任务划分方法.如果矩阵一行的非零元太多,导致 LDM 空间不能一次容纳一行的元素进行计算,那么将采用主核进行计算.一维划分方式又有两种(如图3所示,其中,srow为当前申威处理器一个从核的LDM 可以容纳的最多稀疏行大小).静态任务划分:将矩阵按行等分,每个从核计算m/64行,从核的内部循环开始执行,每次只计算矩阵的srow行;动态任务划分:将矩阵srow行的计算视为一个子任务,形成任务池.每个从核一次只负责一个子任务,执行结束后,再取下一个子任务进行计算.Fig.3 Task partition图3 任务划分示意图具体计算方式见第 4.2节.静态任务划分方式每个从核执行的矩阵行数基本相同;动态任务划分方式时,每个从核执行的矩阵行数根据当前从核的执行情况动态调整,总矩阵行数可能大不相同.这两种方式分别适用于不同类型的稀疏矩阵,见第5.2节.4.2 LDM空间划分每个从核的LDM空间相当于一块高速缓存,从核访问LDM中的数据仅需要数拍即可完成,而从核直接访问主存则需要200多拍,所以LDM空间的使用对并行算法的设计至关重要.每个从核的LDM空间仅有64KB,而CSR格式的SpMV计算需要val,col,ptr,x,y这5个数组的值才能完成.根据第4.1节中的任务划分方式,每个从核每次只计算srow行,那么y的空间只需srow大小,其余行计算时可以重复利用此块空间;ptr数组类似,只需srow+1大小.由于SpMV计算中x的访存是不连续且不规则的,对整体性能影响很大.为此,我们为其预留较多的空间以增加命中率.每个从核64KB空间分配如下:24KB用于存储x,y,ptr和其他局部变量,40KB用于存放val和col.由于val为双精度数据类型,col为整型数据类型,共占 12字节,所以40KB空间最多只能存储40×1024/12个val和col元素,即3 413个.那么srow=3413/maxnz,其中,maxnz为该稀疏矩阵每行最大的非零元个数.若采用双缓冲优化,则该值减半,val,col,ptr均设置两块buffer,大小为原来的一半.x设置2块buffer:一块静态buffer,其大小为xssize;一块动态buffer,其大小为xdsize.静态buffer加载一次后重复使用;动态 buffer在静态 buffer没有命中时使用,如没有命中,则从当前所需的x处加载xdsize个数据到动态buffer,后续计算时先查找静态 buffer,再查找动态 buffer,如果没有命中,继续加载xdsize个数据到动态 buffer中.具体流程如图4所示.Fig.4 The flowchart of dynamic and static buffer loading ofx图4 x的动静态buffer加载示意图对每个矩阵而言,xssize的最大值由srow确定,该缓冲区的大小直接影响了SpMV 的最终性能.对于xdsize的选择,我们期望读取一次的开销与访问一次主存的开销相当.经测试,DMA传递32个元素的开销与访问一次主存的开销相当,故xdsize设置为32.5 实现及优化5.1x访存优化稀疏矩阵向量乘中,x是间接访存,访存行为很不规则,在申威众核处理器上,x的访存是优化的重点,直接对其最终性能起到决定性的影响.x的访存有几种方式.(1) 所有的x直接从主存读取;(2) 每个从核通过DMA预取部分x,其余x通过访问主存得到,记为static-dma;(3) 动静态buffer方式,记为static-dynamic.具体见第4.2节.由于从核访问一次主存约需200多拍,方案1性能明显很差,所以实际中并未使用.方案2和方案3中静态buffer的大小见第4.2节.第6.2.1节给出了两种方案的性能对比结果.另外,加载静态buffer的初始位置对SpMV的性能也有一些影响.初始位置有两种选择.1) 从当前从核计算的行块的起始位置读取,记为start-x-row;2) 从当前从核计算行块所需的第一个x处读取,记为start-x-current.5.2 负载均衡稀疏矩阵每行的非零元个数不尽相同,且分布不均.按照图3(a)中的静态任务划分方法,对有些矩阵会导致从核间负载不均衡,这个负载不均衡来自两个方面.· 每个从核计算的行块的总非零元个数可能差异较大;· 每个从核计算的行块中x的访存行为可能差异较大.为了解决负载不均衡的问题,本文还采用了动态任务划分的方式,如图3(b)中所示.该方式中,从核间协同,通过采用我们自己用原子操作实现的锁来完成.然而,由于目前的锁实现中需要访问主存,这个代价比较高,所以其性能较差,具体见第6.2.2节.为此,本文对这种调度方式进一步进行了优化,只在第1次运行SpMV时采用动态调度,并记录每个计算核心所分配的任务,在以后的执行过程中,均按照这种方式来进行任务分配,我们将其称为动-静态任务调度.5.3 自适应优化由于实际应用中稀疏矩阵千差万别,非零元的分布方式各不相同.对每一个稀疏矩阵而言,任务分配方式、静态buffer大小、静态buffer加载的起始位置等均对其性能有着很大的影响,有必要针对该稀疏矩阵选择最优的参数组合.可选的参数如下: · 调度方式,有两种选择:静态调度和动静态结合的调度方式;· 静态buffer读取的起始位置;· 静态buffer的大小,其最大值受LDM限制,每个矩阵均不同,初始值选为128,每128递增.为了减少搜索开销,本文对Matrix Market矩阵集中57个不同类型的稀疏矩阵选择不同参数的性能结果进行分析,发现任务调度方式、静态buffer读取的起始位置均与静态buffer的大小关系不大,据此,本文确定了如图5的搜索顺序.该搜索过程需要大约3~22个SpMV的时间,但是对于实际应用来说,这个过程可以预先进行,以便于在以后的迭代过程中选用性能最高的SpMV实现.Fig.5 The flowchart of search of optimal parameter图5 最优参数搜索顺序图5.4 双缓冲优化该处理器从核上支持DMA访存与计算重叠,为了验证其有效性,本文设置LDM上val,col,ptr的双buffer.图6中,上图展示了单buffer的计算和访存流程,下图展示了双buffer的计算和访存流程.但该异构众核SpMV算法中主要以DMA操作为主,计算所占的比重很小,该优化对整体的性能影响不大.Fig.6 SpMV with CSR format in timeline图6 CSR格式SpMV时序图6 实验结果6.1 实验平台我们采用神威“太湖之光”的一个核组作为测试平台,借助高性能线程库Athread 将计算任务异步加载到从核执行.测试矩阵选用了Matrix Market矩阵集中的矩阵进行测试,矩阵规模从数千到百万,矩阵非零元个数从数万到1 00多万.表1中给出了测试矩阵的基本信息.Table 1 The information of test matrices表1 测试矩阵信息表注:下节给出的所有测试结果均为计算50次SpMV的时间.编号矩阵名字矩阵维数(m) 非零元数(nz)1 bcsstk17 10 974 428 650 2 bcsstk28 4 410 219 024 3 raefsky2 3 242 294 276 4 Linverse 11 999 95 977 5 Cant 62 451 4 007 383 6 s3dkq4m2 90 449 4 820 891 7 fv2 9 801 87 025 8 nemeth01 9 506 725 054 9 LF10000 19 998 99 982 10 af_0_k101 503 625 17 550 675 11 cavity20 4 562 138 187 12 ecology1 1 000 000 4 996 000 13 epb3 84 617 463 625 14 qa8fk 66 127 1 660 579 15 Obstclae 40 000 197 608 16 af_shell3 504 855 17 588 8756.2 测试结果6.2.1x访存优化的对比结果图7中比较了第5.1节中提到的方案2和方案3的性能,从图中可以看出,方案3明显优于方案2,最高加速比可达21倍.这是因为方案3利用了稀疏矩阵的局部性,动态缓冲区的x数据得以重复利用.图8中给出了部分矩阵选用两种加载静态buffer的起始位置的性能对比.矩阵qa8fk,raefsky2,cavity20选用方案2性能较好,而cant和s3dkq4m2是选用方案1性能较好,性能差最大的有55%,最小的也有11%.Fig.7 The optimized performance ofxloading图7x访存优化效果对比图Fig.8 The impact of the start position of loading dynamic/static buffer on performance图8 加载动静态buffer的初始位置对性能的影响6.2.2 任务调度由于稀疏矩阵千差万别,不同的任务调度方式对其优化的效果也不尽相同,图9中给出了动-静态调度方式性能较好的测试矩阵的结果,并将其与静态调度方式进行了对比.其中,两种调度方式均采用从当前所需的第 1个x作为起点加载静态buffer,并且选用了xssize可选范围内的最优性能.从图中可以看出,最大加速比可以达到6倍多,说明不同任务调度方式对某些矩阵的性能有着很大的影响.第6.2节中提到:动态调度时,由于加锁引入了额外的开销.图10中比较了采用动态调度进行计算的时间(记为dynamic)与利用动态调度的任务划分方式进行静态分配的计算时间(记为static(dynamic)),其性能约有10%~40%的差异.Fig.9 The impact of different scheduling method on performance图9 不同的任务调度方式的优化效果Fig.10 Comparison of the first two calculations using the static (dynamic) method 图10 动静态调度方式前两次性能对比6.2.3 自适应优化图11给出了对第5.3节中提到的3个参数进行自适应优化的性能结果(不含调优时间),并与采用静态调度方式、xssize=1536、从当前所需的第1个x进行加载静态buffer的方法进行了对比.从图中可以看出:自适应优化取得了比较明显的加速效果,平均性能提升为44%,最大的ecology1矩阵可达到6倍多,这主要是动静态任务调度带来的加速.Fig.11 The performance of adaptive optimization图11 自适应优化效果图6.2.4 性能结果本文对选取的 16个矩阵进行了测试,图12(a)展示了分别在主核和从核运行的结果,主核版采用最原始的CSR格式SpMV实现.可以看出:测试的矩阵相对主核版均有不同程度的性能提升,最高可达10倍多,最低也有4倍多,平均加速比为 6.51倍.另外,本文还测试了带宽利用率,总访存量采用公式nz×12+(nrow+1)×4+nrow×8×2来计算.图12(b)给出了测试矩阵的带宽利用率(总带宽按照实测带宽27.5Gb/s计算),最高可达86.09%,最低可达31.76%,平均带宽利用率为47%.Fig.12 The performance of bandwidth efficiency of test matrices图12 测试矩阵的性能及带宽利用率6.3 测试结果分析从测试结果来看,从核上 SpMV的性能与其非零元的分布有很大关系.如果非零元分布的局部性特征比较明显,那么本算法中动静态buffer的命中率较高,从而整体性能较好.目前,整体的带宽偏低,这是因为计算时采用了主核计算 CSR格式 SpMV的访存量,而实际在从核计算时,由于x的间接访问,必然会引入x的额外访存.未来将进一步改进x的访存策略,以提升整体性能.对于一个特定的矩阵,可通过观察分析其非零元的分布规律,设计出特定的x的传输方案,这样能尽可能地减少x的冗余访存,进而提升带宽利用率和整体性能.7 结论及下一步工作SpMV是众多科学与工程应用中经常调用的核心函数之一,其性能至关重要.而CSR 格式是使用最广泛的一种稀疏矩阵存储格式.本文针对申威处理器提出了一种CSR 存储格式SpMV操作的通用异构众核并行算法,该算法首先从任务划分、LDM 空间划分方面进行精细设计.为了提升向量x的访存命中率,本文提出了一套动静态buffer的缓存机制,并分析了加载静态 buffer 起始位置对性能的影响;对某些稀疏矩阵从核间负载不均衡的原因,提出了一套动静态的任务调度方法以实现负载均衡.另外,还分析了该算法中影响SpMV性能的几个关键因素,并开展了自适应优化,进一步提升了性能.对于CSR格式的SpMV,未来还需进一步考虑提升x访存命中率的方法,比如利用该处理器的寄存器通信.还可以考虑根据稀疏矩阵的x访存特征对其进行分类,对每一类的矩阵采用更加适合的访存方法,以提升自适应性.另外还需考虑新的整体访存量更少的存储格式,以提升整体性能.References:【相关文献】[1] Kourtis K,Karakasis V,Goumas G,Koziris N.CSX:An extended compression format for SpMV on shared memory systems.In:Proc.of the 16th ACM Symp.on Principles and Practice of Parallel Programming.San Antonio,2011.[2] Sun XZ,Zhang YQ,Wang T,Long GP,Zhang XY,Li Y.Crsd:Application specific auto-tuning of SpMV for diagonal sparse matrices.In:Proc.of the 17th Int’l Conf.on Parallel Processing—Vol.Part II (Euro-Par 2011).2011.316-327.[3] Im EJ,Yelick K.Optimizing sparse matrix computations for register reuse in SPARSITY.In:Proc.of th e Int’l Conf.on Computational Science.LNCS 2073,2001.127-136.[4] Nishtala R,Vuduc R,Demmel,J,Yelick K.When cache blocking sparse matrix vector multiply works and why.In:Proc.of the Applicable Algebra inEngineering,Communication,and Computing.2007.[5] Mellor-Crummey J,Garvin J.Optimizing sparse matrix-vector product computations using unroll and JAM.Int’l Journal of High Performance ComputingApplications,2004,18:225-236.[6] Willcock J,Lumsdaine A.Accelerating sparse matrix computations via datacompress ion.In:Proc.of the 20th Annual Int’l Conf.on Supercomputing (ICS 2006).New York,2006.307-316.[7] Kourtis K,Goumas G,Koziris N.Optimizing sparse matrix-vector multiplication using index and value compression.In:Proc.of the 5th Conf.on Computing Frontiers.Ischia,2008.[8] D’Azevedo E,Fahey M,Mills R.Vectorized sparse matrix multiply for compressed row storage format.In:Proc.of the Int’l Conf.on Computational Science.2005.[9] Williams S,Oliker L,Vuduc R,Shalf J,Yelick K,Demmel J.Optimization of sparse matrix-vector multiplication on emerging multicore platforms.In:Proc.of the 2007 ACM IEEE Conf.on Supercom-Putting.Reno,2007.[10] Vuduc R,Demmel J,Yelick K.OSKI:A library of automatically tuned sparse matrix kernels.In:Proc.of the SciDAC 2005,Journal of Physics:Conf.Series,2005.[11] Li JJ,Tan GM,Chen M,Sun NH.SMAT:An input adaptive auto-tuner for sparse matrix-vector multiplication.In:Proc.of the 34th ACM SIGPLAN Conf.on Programming LanguageDesign and Implementation (PLDI 2013).2013.117-226.[12] Bell N,Garland M.Implementing sparse matrix-vector multiplication on throughput-oriented processors.In:Proc.of the Conf.on High Performance Computing Networking,Storage and Analysis.ACM Press,2009.18.[13] Vazquez F,Fernandez J,Garzon E.A new approach for sparse matrix vector product on NVIDIA GPUs.Concurrency and Computation:Practice and Experience,2011,23(8):815-826.[14] Monakov A,Lokhmotov A,Avetisyan A.Automatically tuning sparse matrix-vector multiplication for GPU architectures.In:Proc.of the Int’l Conf.on High-Performance Embedded Architectures and Compilers.Berlin,Heidelberg:Springer-Verlag,2010.111-125.[15] Choi JW,Singh A,Vuduc RW.Model-Driven autotuning of sparse matrix-vector multiply on GPUs.ACM Sigplan Notices,2010,45(5):115-126.[16] Ashari A,Sedaghati N,Eisenlohr J,etal.An efficient two-dimensional blocking strategy for sparse matrix-vector multiplication on GPUs.In:Proc.of the 28th ACM Int’l Conf.on Supercomputing.ACM Press,2014.273-282.[17] Yan S,Li C,Zhang Y,etal.yaSpMV:Yet another SpMV framework on GPUs.ACM SIGPLAN Notices,2014,49(8):107-118.[18] Pichel JC,Rivera FF,Fernández M,etal.Optimization of sparse matrix-vector multiplication using reordering techniques on GPUs.Microprocessors and Microsystems,2012,36(2):65-77.[19] Tang WT,Tan WJ,Ray R,etal.Accelerating sparse matrix-vector multiplication on GPUs using bit-representation-optimized schemes.In:Proc.of the Int’l Conf.on High Performance Computing,Networking,Storage and Analysis.ACM Press,2013.26.[20] Sedaghati N,Mu T,Pouchet LN,etal.Automatic selection of sparse matrix representation on GPUs.In:Proc.of the 29th ACM Int’l Conf.on Supercomputing.ACM Press,2015.99-108.[21] Ashari A,Sedaghati N,Eisenlohr J,etal.Fast sparse matrix-vector multiplication on GPUs for graph applications.In:Proc.of the Int’l Conf.for High PerformanceComputing,Networking,Storage and Analysis (SC 2014).IEEE,2014.781-792.[22] Guo D,Gropp W.Adaptive thread distributions for SpMV on a GPU.In:Proc.of the Extreme Scaling Workshop.University of Illinois at Urbana-Champaign,2012.2.[23] Liu X,Smelyanskiy M,Chow E,etal.Efficient sparse matrix-vector multiplication on x86-based many-core processors.In:Proc.of the ACM Int’l Conf.onSupercomputing.2013.273-282.[24] Tang WT,Zhao R,Lu M,etal.Optimizing and auto-tuning scale-free sparse matrix-vector multiplication on Intel Xeon Phi.In:Proc.of the 2015 IEEE ACM Int’l Symp.on Code Generation and Optimization (CGO).2015.136-145.[25] Kreutzer M,Hager G,Wellein G,etal.A unified sparse matrix data format for efficientgeneral sparse matrix-vector multiplication on modern processors with wide SIMD units.SIAM Journal on Scientific Computing,2014,36(5):C401-C423.[26] Liu W,Vinter B.CSR5:An efficient storage format for cross-platform sparse matrix-vector multiplication.In:Proc.of the ACM Int’l Conf.on Supercomputing.2015.339-350.。