2024, 35(3):1569-1584.DOI: 10.13328/j.cnki.jos.006811
摘要:BLAS (basic linear algebra subprograms)是最基本、最重要的底层数学库之一.在一个标准的BLAS库中,BLAS 3级函数涵盖的矩阵-矩阵运算尤为重要,在许多大规模科学与工程计算应用中被广泛调用.另外,BLAS 3级属于计算密集型函数,对充分发挥处理器的计算性能有至关重要的作用.针对国产SW26010-Pro处理器研究BLAS 3级函数的众核并行优化技术.具体而言,根据SW26010-Pro的存储层次结构,设计多级分块算法,挖掘矩阵运算的并行性.在此基础上,基于远程内存访问(remote memory access,RMA)机制设计数据共享策略,提高从核间的数据传输效率.进一步地,采用三缓冲、参数调优等方法对算法进行全面优化,隐藏直接内存访问(direct memory access,DMA)访存开销和RMA通信开销.此外,利用SW26010-Pro的两条硬件流水线和若干向量化计算/访存指令,还对BLAS 3级函数的矩阵-矩阵乘法、矩阵方程组求解、矩阵转置操作等若干运算进行手工汇编优化,提高了函数的浮点计算效率.实验结果显示,所提出的并行优化技术在SW26010-Pro处理器上为BLAS 3级函数带来了明显的性能提升,单核组BLAS 3级函数的浮点计算性能最高可达峰值性能的92%,多核组BLAS 3级函数的浮点计算性能最高可达峰值性能的88%.
2024, 35(6):2648-2667.DOI: 10.13328/j.cnki.jos.007098
摘要:申威众核片上多级存储层次是缓解众核“访存墙”的重要结构. 完全由软件管理的SPM结构和片上RMA通信机制给应用性能提升带来很多机会, 但也给应用程序开发优化与移植提出了很大挑战. 为充分挖掘片上存储层次特点提升应用程序性能, 同时减轻用户编程优化负担, 提出一种多级存储层次访存与通信融合的编译优化方法. 该方法首先设计融合编译指示, 将程序高层信息传递给编译器. 其次构建编译优化收益模型并设计启发式循环优化方案迭代求解框架, 并由编译器完成循环优化方案的求解和优化代码的变换. 通过编译生成的DMA和RMA批量数据传输操作, 将较低存储层次空间中高访问延迟的核心数据批量缓冲进低访问延迟的更高存储层次空间中. 在3个典型测试用例上进行优化实验测试与分析, 结果表明所提出的优化在性能上与手工优化相当, 较未优化版程序性能有显著提升.
2023, 34(9):4421-4436.DOI: 10.13328/j.cnki.jos.006527
摘要:BLAS (basic linear algebra subprograms)是高性能扩展数学库的一个重要模块, 广泛应用于科学与工程计算领域. BLAS 1级提供向量-向量运算, BLAS 2级提供矩阵-向量运算. 针对国产SW26010-Pro众核处理器设计并实现了高性能BLAS 1、2级函数. 基于RMA通信机制设计了从核归约策略, 提升了BLAS 1、2级若干函数的归约效率. 针对TRSV、TPSV等存在数据依赖关系的函数, 提出了一套高效并行算法, 该算法通过点对点同步维持数据依赖关系, 设计了适用于三角矩阵的高效任务映射机制, 有效减少了从核点对点同步的次数, 提高了函数的执行效率. 通过自适应优化、向量压缩、数据复用等技术, 进一步提升了BLAS 1、2级函数的访存带宽利用率. 实验结果显示, BLAS 1级函数的访存带宽利用率最高可达95%, 平均可达90%以上, BLAS 2级函数的访存带宽利用率最高可达98%, 平均可达80%以上. 与广泛使用的开源数学库GotoBLAS相比, BLAS 1、2级函数分别取得了平均18.78倍和25.96倍的加速效果. LU分解、QR分解以及对称特征值问题通过调用所提出的高性能BLAS 1、2级函数取得了平均10.99倍的加速效果.
2019, 30(4):981-1001.DOI: 10.13328/j.cnki.jos.005370
摘要:异构众核处理器是面向高性能计算领域处理器发展的重要趋势,但其更为复杂的体系结构使得编程难的问题更加突出.针对这一问题,基于开源编译器Open64,提出了一种面向异构众核处理器的并行编译框架,将程序自动转换为异构并行程序.该框架主要包括4个模块:任务划分模块用来识别适合进行加速计算的程序段,实现了嵌套循环的多维并行识别方法;数据布局模块完成数据在主存和SPM之间的布局,实现了数组边界分析和指针范围分析;传输优化模块实现了数据传输合并、传输外提、打包传输、数组转置等多种数据传输优化方法;收益评估模块在构建代价模型的基础上实现了一种动静结合的收益评估方法.并且,基于SW26010处理器,对该编译框架进行了实现,测试结果表明,该编译框架能够实现一些程序以面向异构众核结构的并行变换,且获得较好的加速效果.
2014, 25(10):2220-2234.DOI: 10.13328/j.cnki.jos.004679
摘要:软件定义网络(software defined network,简称SDN)通过集中式的控制器提高了网络的可编程性,成为近年来网络领域非常热门的话题.以Openflow网络为代表的软件定义网络将逻辑控制与数据转发相隔离,为网络虚拟化技术提供了良好的平台.集中式的抽象与控制使得SDN虚拟化框架的处理效率成为主要瓶颈.现有的SDN虚拟化框架由于缺乏对细粒度并行的支持,为编程人员充分利用多核/众核资源、控制更大规模的网络带来了极大的挑战.为了提高SDN虚拟化框架的处理效率,提出一种新的SDN虚拟化编程框架,通过新颖的API和运行时,在框架内部支持细粒度的并行处理.该框架通过对网络中流和网络资源进行抽象,使开发人员可以直接通过划分流空间来定义不同的虚拟网络,利用无锁的编程方式对共享的网络资源和流进行操作.实验结果表明,该框架在逻辑控制的执行效率方面具有良好的可扩展性,可以创建出更大规模的虚拟网络,并对其进行更为复杂的控制.
2012, 23(2):240-252.DOI: 10.3724/SP.J.1001.2012.04141
摘要:针对众核处理器系统的核资源优化使用问题,提出了一种支持核资源动态分组的自适应调度算法CASM (core-partitioned adaptive scheduling for many-core systems).该算法通过对任务簇的拆分与合并,动态构建可弹性分区的核逻辑组,实现核资源的隔离优化访问.为了平衡核资源利用率及任务调度效率,CASM 算法针对任务簇间和簇内的不同特点,分别采用公平性较好的均衡调度算法和资源利用率较高的自适应调度算法.在线竞争理论分析表明,CASM 算法的任务执行时间在线竞争比为常数2,其性能可扩展性较好.实验结果表明,与WS(work-stealing),AGDEQ(adaptive greedy dynamic equi-partitioning)和EQUI?EQUI 算法相比,CASM算法使任务集运行时间分别减少了近46%,32%和15%.在相同能耗情况下,CASM 算法大幅度地提升了系统吞吐量.