2. 郑州大学 国家超级计算郑州中心,郑州 450000
2. National Supercomputing Zhengzhou Center, Zhengzhou University, Zhengzhou 450000, China
开放科学(资源服务)标志码(OSID):
随着世界各国对清洁能源需求的不断增长,供水管道在能源结构中发挥着重要的作用[1-2]。由于供水管道规模的扩大,导致拓扑结构也越来越复杂[3-4]。供水管道中数值的准确预测对整个管道建设和管道安全至关重要,供水管道系统的高效仿真是解决上述问题的重要手段[5]。初期人们可通过对数值方法进行改进,也可以使用更好的计算设备提升模拟计算效率,但是随着管网拓扑结构大规模的扩大以及CPU功耗墙的出现,该方法性能逐渐降低。
近年来,GPU加速器开始广泛用于科学计算,其提供了优越的计算处理能力和内存带宽,并提高了计算效率[6-8]。文献[8]提出一种加速单GPU芯片上开放通道和管道组合流瞬态模拟的方法。在计算统一设备架构(CUDA)的线程级并行结构中,GPU可以很好地利用其固有的并行性[9-10]。但是,对大规模管道网络仿真计算时,仿真计算粒度密集,而传统计算机受限于计算粒度密集的程序,可能会影响供水管网大规模数值模拟时的效率。“嵩山”超级计算机是我国自主研发的新一代E级超级计算机,其采用符合超算国际主流趋势的海光1号CPU+海光1号DCU加速器的异构体系结构,所配备的DCU加速器件使得该平台更适合于部署高度密集型计算应用。因此,供水管网模拟系统在“嵩山”超级计算机平台上进行模拟计算,可以进一步突破瓶颈提升计算性能。
尽管管网在超级计算机平台上比传统CPU具有更高的计算效率,但单个DCU节点的极限存储和计算能力可能会影响管网在超扩展尺度上处理计算系统时的效率。在这种情况下,如果在多块DCU中进行计算,则需大幅扩展管网模拟计算的规模。
本文提出一种有效的并行化方案来提高管网的计算效率。面向“嵩山”超级计算机平台,利用HIP-C语言修改程序完成程序跨平台移植,在单DCU中实现计算的并发。针对管网中管道元件中数据依赖问题,对其进行数据划分,并结合HIP编程模型和消息传递接口,将多个DCU加速器集成到网络体系结构中,通过高效的混合并行化方案对管网进行优化[11]。
1 相关工作本节主要介绍管网管道拓扑结构,并描述HIP+MPI混合编程。
1.1 管道网络模型管道运输是各种清洁能源开发与输送过程中一项重要的技术[12-13]。目前,管道运输技术已有很多成熟的理论和模型,随着计算机技术和网络通信的飞速发展,能源运输技术也逐渐实现了信息化,运输管道仿真模拟系统应运而生。模拟仿真通过把数据访问接口连接到系统,及时更新数据,将实时数据传入到系统中进行计算,实现管网的动态模拟仿真[14-16]。
首先以管网实际拓扑图为基础来考虑管网模型,为清晰地描述管网的模拟计算过程,本文通过以下简单管网进行说明。图 1所示是一根独立管道的两个边界节点。图 2所示是一个简单的管道系统,中间用一个非管道元件连接两根管道,共有4个临界点。图 3所示为扩大管道规模后构建一个闭环的管道系统,管道内由方程计算的值与非管道元件内由方程计算得出的结果通过边界值计算进行数值交互,模拟仿真得出需要的数值。
![]() |
Download:
|
图 1 单个管道图 Fig. 1 Single pipeline diagram |
![]() |
Download:
|
图 2 简单的管道系统 Fig. 2 Simple pipeline system |
![]() |
Download:
|
图 3 闭环的管道系统 Fig. 3 Closed-loop pipeline system |
并行计算在不同的粒度层次优化,粒度一般分为粗粒度和细粒度。在集群上多个进程进行计算,进程间通过消息传递的方式进行通信[17-18]。由于MPI的通信占用成本较高,因此更适合任务划分清晰、通信不频繁的粗粒度并行[19-20]。与MPI相比,DCU擅长大规模密集计算,可在细粒度上进行并行计算。本文结合MPI和DCU的优点,通过MPI消息传递机制控制多进程计算,实现粗粒度上的并发,并在每个进程中使用DCU实现线程级计算和细粒度上的并发[21]。
“嵩山”超级计算机一个节点内共有4块DCU,如果只在单DCU中进行计算,每个节点的计算能力没有被充分利用。为扩展DCU计算规模,在实现多DCU计算时,MPI+HIP混合编程可以发挥优势,为每一个DCU分别分配一个进程,使用MPI控制多进程计算并进行通信[22-23]。进程之间使用消息传递接口传输数据,进程内采用HIP技术进行线程级优化,实现粗粒度和细粒度的结合,提升科学计算的性能。HIP+MPI混合编程结构如图 4所示。
![]() |
Download:
|
图 4 MPI+HIP混合编程结构 Fig. 4 MPI+HIP mixed programming structure |
管网模拟仿真系统在进行数值模拟时,大量的数据增加了计算时间,影响数值模拟的时间和精度。根据上文的内容可以了解到DCU的计算能力,这可以解决目前模拟计算中所遇到的问题。下面将详细介绍管网拓扑结构中管道与非管道的并行特性。参照图 3结构中各元件计算的流程如图 5所示。
![]() |
Download:
|
图 5 管网元件计算流程 Fig. 5 Calculation procedure of pipeline network components |
本文管道网络仿真计算基于王海[13]提出的立体管网建模方法。将管网“对象化”,然后把管网元件的对象属性赋予具体数值,得到每个元件与相邻元件的连接属性以及每个元件的初始状态和边界条件。管道元件和非管道元件在初始化后,可开始第1个时间步长的计算,每次计算完成后,需要进行收敛分析,如果计算精度达到0.000 1%,则结束循环。这时能够得到稳态时管道元件与非管道元件的流量、压力和水力工况等数值。
在分析该程序代码进行数值模拟计算时,首先需要设置循环条件,直到计算结果不发散才可计算结束。在外循环中先对非管道元件进行计算,在逻辑上将数组进行切分,数组不同的分段执行不同的非管道元件,使用hipDeviceSynchronize()函数进行同步,直到所有非管道元件计算完毕,才能对管道元件进行计算,然后同步直到所有管道元件计算完成。以上所有步骤在内循环每5 000次后进行数值更新,并对计算结果进行收敛计算,直到计算结果收敛或达到最大循环次数,整个循环计算结束。在此过程中,各个非管道元件之间的计算是独立的,管道元件之间的计算也没有依赖,管道和管道、非管道与非管道之间有较高的并行度。因此,可以考虑在粗粒度上把各管道和非管道元件作为求解任务,将其传输到设备端进行并行计算。
2.2 异构实现供水管网仿真系统代码是由C/C++语言编写的,本文通过使用HIP-C对代码进行改写,改写后的代码可以在“嵩山”超级计算机上运行并进行测试。通过测试可以发现,管道和非管道中水力计算部分耗时较长,一定程度上影响了模拟仿真计算的效率。因此,在工作中把管道和非管道中的计算部分在DCU中进行并行计算,因为DCU加速器对数据量较大、运算复杂的密集性计算有显著优势,所以对于供水管网模拟计算时把计算耗时较长的部分传输到DCU中,计算效率有了显著的提升。供水管网仿真系统在异构架构中的模拟实现流程如图 6所示。
![]() |
Download:
|
图 6 异构版本供水管网仿真系统模拟流程 Fig. 6 Simulation procedure of water supply pipeline network simulation system of heterogeneous versions |
结合图 6分析在程序中需要读取管道和非管道元件中的数据,并写入不同的结构体数组,然后定义结构体指针,动态分配各个管道和非管道结构体指针的内存,将主机端内存的管道元件和非管道元件的结构体数组传输到DCU加速器设备内存中,并对其进行初始化。管网中管道元件和非管道元件需循环计算,直到达到收敛条件或最大循环次数方可跳出循环结束计算。在外循环中,对管网中各元件循环计算时,管道元件和非管道元件将DCU加速器映射到block块中,每个block中可以根据实际应用分配线程,非管道元件和管道元件计算时按顺序计算。首先计算非管道元件并同步,当所有非管道元件计算完毕之后开始管道的计算,同理,管道计算后也需要同步。以上操作以5 000次为基准,开启内循环,每循环计算5 000次,所有元件进行一次更新,并对其中的二通、三通、四通进行收敛条件判断,若达到收敛条件,则跳出循环;否则再次重复上述步骤对非管道和管道进行并行操作,直到外循环结束,跳出循环,将最终的计算结果从设备端传回到主机端,重新关联非管道元件和管道,直至模拟计算结束。
对于小规模的管道网络,可以实现在单DCU中计算,当管道网络规模逐渐扩大时,单DCU中计算规模不能满足仿真计算的需求,因此将单DCU扩展到多DCU中进行模拟计算。
3 DCU多卡的实现供水管网模拟仿真系统在多DCU中的实现,合理的管道划分方式和数据通信传输尤其重要。
3.1 管道数据划分管网数据必须根据DCU节点处理管道数据,并将这些数据逐个写入DCU,而不是计算整个过程中的所有管道数据。在程序优化过程中直接将管道数据分成两个部分,并将这两个部分的数据分别写入到两块DCU内存中进行计算,但在计算过程中程序运行到一半发生了中断,测试调试发现在对管道数据循环读取时,读到一部分管道数据后循环中断,发生数据缺失的情况。经过分析,管道之间数据交互密切,各个DCU中一部分管道和非管道元件之间存在数据依赖问题。在对管道数据进行读取时,无法实现跨进程读取操作,DCU之间也无法进行跨设备的数据访问。为解决该问题,需要使用消息传递接口(MPI)使相关进程之间进行通信,实现数据跨进程通信交互。
使用MPI控制两进程计算并进行通信时,将管道元件分成两部分,同时需要找到一部分管道元件作为两进程中的公有部分,传回到主机端通信传递。在此项目组的成员提出一种一维分割方法,该方法将整个管道和非管道数据分成两个部分,管道数据按组号被分割为三部分:GroupId=0,GroupId=1和GroupId=2。把分组GroupId=1的管道数据写入到DCU0中,然后将分组GroupId=2的管道数据写入到DCU1中,管道分割图如图 7所示。从图 7可以看出,管道数据被相对均匀地分配到了两块DCU加速器中,在两块DCU中有一部分管道数据GroupId=0属于两块DCU中的公有部分。这一部分数据需要同时写入到两块DCU中,GroupId=0的管道数据作为连接两部分管道数据的桥梁,在管道元件和非管道元件计算5 000次后,将GroupId=0的管道数据从DCU0中传回到主机端进行通信,然后再传回到DCU1中,最后对管道元件刷新,代表一次通信完成。
![]() |
Download:
|
图 7 管道分割图 Fig. 7 Pipeline segmentation diagram |
本节主要描写MPI的具体实现以及在实现过程中遇到的问题。
3.2.1 数据类型重定义数据类型在数据结构中的定义是一组性质相同的值的集合以及定义在这个值集合上的一组操作的总称。变量用来存储值,它们有名字和数据类型。结合供水管网仿真模拟的代码,管道和非管道元件被封装成结构体,MPI需要知道结构体的数据类型才能实现通信传输。因此,需要对结构体实现数据类型重定义。
本文对程序中管道接口和管道的结构体进行重定义。首先程序中使用MPI_Datatype定义新的数据类型名称,通过blocklens数组定义管道接口和管道中每个数据类型的长度,并根据oldTypes数组描述管道接口和管道旧数据的类型,通过MPI_Address指定数组中每个块中的偏移量。然后运用MPI_Type_struct生成新的管道接口和管道数据类型。最后采用MPI_Type_commit提交注册新的数据类型 & PipeStruct和 & PipePortStruct。
3.2.2 MPI实现过程在MPI信息传递接口进行通信前,应先对分割好的管道元件和非管道元件实现读取和写入操作。利用一维分割方法对各个元件进行分割后,通过MPI_Comm_rank()获取进程号,进程号控制各个进程对非管道元件和管道的读取,将各自的数据分别读取到各进程的结构体数组中。本文主要使用数组指针进行读写操作,数组指针是动态分配空间,使用更加灵活,相比直接使用数组,其代码扩展性更好。在读写完成之后,再由hipMemcpy()将其分别传入到各自的DCU进行计算。由于MPI的通信是在主机端进行的,需要使用hipMemcpy()来控制设备端与主机端之间数据的传输。图 8所示为MPI通信时数据传输的过程。
![]() |
Download:
|
图 8 MPI通信过程 Fig. 8 MPI communication process |
MPI在实现过程中,主机端使用MPI_Comm_rank()获取当前的进程号,调用hipGetDevice()获取DCU加速器的设备编号,以此确定进程编号和设备编号的对应关系。每个进程控制一个DCU,在对应的设备上进行数据显存的划分,完成主机端向设备端计算数据的传输,并各自启动内核函数;每个进程设置自己私有的主机端和设备端的数据指针,其中管道元件的数据被分为三部分,GroupId=0是公有部分,这一部分管道元件数据使用hipMemcpy(DTH)从设备端传输到主机端被单独写入到Host_PublicPipeArray数组中,MPI在管道和非管道分别计算5 000次后,将共有数据通过DCU私有的设备端数据指针拷贝回私有主机端,在私有主机端进行数据的通信及更新,并进行收敛性检查,在主机端中结束通信后分别拷贝到私有设备端中,之后对所有非管道元件更新一次。在外循环进程中,进程对各自的管道和非管道元件每进行5 000次密集计算都会使用MPI通信接口进行传输通信并更新所有元件,直至供水管网模拟计算结果收敛,计算结束通信完成。图 9所示为MPI通信传递实现过程。
![]() |
Download:
|
图 9 MPI通信实现过程 Fig. 9 MPI communication realization process |
从单DCU加速器扩展到多DCU加速器,由MPI控制多进程计算的实现解决了DCU自身的伪并行,完成了大规模数据多进程的并发实现。多DCU的实现扩大了密集计算的规模,突破了单DCU加速器计算资源的限制,对以后大规模程序的计算需求具有重要意义。
4 实验测试“嵩山”超级计算机系统的操作系统为Centos-6.7,集群作业管理系统为Gridview,CPU编译器为gcc/g++-7.3.1,DCU加速器编译器为hipcc-2.9.6,MPI版本为hpcx-2.4.1,CPU处理器为英特尔®酷睿TM i9-9980XE。
4.1 功能性测试本文在“嵩山”超级计算机平台单节点单DCU上进行正确性验证。首先对CPU+DCU异构实现的供水管网模拟仿真计算进行小规模数据测试,将记录模拟出的数值与管网串行实现的模拟仿真结果进行比较,经对比发现,两者计算结果的数值变化在允许范围内,通过了正确性验证。
4.1.1 异构实现结果对比将供水管网模拟实现的异构版本与在CPU处理器英特尔®酷睿TM i9-9980XE上的运行结果进行对比,为使描述清晰简洁,将在单DCU内优化方法简称为方法1,在多DCU内优化方法简称为方法2。通过输入小规模器件数量和大规模器件数量,并在不同的计算平台上进行仿真计算测试。如表 1所示,选取器件规模数分别为10 000、30 000。
![]() |
下载CSV 表 1 不同规模器件在CPU和方法1下的结果对比 Table 1 Comparison of results of different scale devices in CPU and method 1 |
由表 1数据可以看出,在器件数为10 000时,在DCU加速器上的加速比为5.065,随着计算规模的增加,当输入器件数为30 000时,加速比达到了9.833。分析其原因,是因为在小规模数据计算时,不能充分利用DCU加速器的并行资源,计算性能有一定幅度的提升,但不能达到最优。当器件数量增多时,DCU加速器在大规模密集计算的计算优势突出,加速效果明显提升。实验结果证明了CPU+DCU异构实现的供水管网模拟计算在“嵩山”超级计算机平台的单DCU加速器环境中,加速效果十分显著,在保证相同计算精度的前提下,计算速度提升5~10倍,且管网模型规模越大,DCU加速效果则越显著。
表 2所示是GPU异构平台上的运行结果与方法1进行对比,加速比提升了2~3倍。可以看出,在“嵩山”超级计算机上的移植相比显卡为GT 730的GPU异构平台仍有显著的优势。
![]() |
下载CSV 表 2 不同规模器件在GPU和方法1下的结果对比 Table 2 Comparison of results of different scale devices in GPU and method 1 |
本节实验验证了供水管网模拟仿真系统在不同平台的测试结果,表明“嵩山”超级计算机更适合于大规模仿真计算,且其相对于以往实施x86平台或GPU异构平台,计算性能都有明显提升。
4.1.2 多DCU(方法2)实现测试分析由于越来越多管道的建立,管网拓扑复杂,计算量大,单DCU的计算规模已经不能满足庞大的管网数据计算量。本节基于MPI+HIP模型选择供水管网仿真计算在多DCU上的实现进行实验,将在单DCU上管网模拟仿真运行的时间作为基准,测试该模拟程序在单节点内多个DCU上运行的并行效率,如表 3所示。
![]() |
下载CSV 表 3 不同规模器件在方法1和方法2下的结果对比 Table 3 Comparison of results of different scale devices under method 1 and method 2 |
在输入管器件数量分别为10 000、30 000时,DCU单卡加速与DCU多卡加速速度相当,多卡加速效果略优于单卡,但当面对超大规模管网模型时,多卡加速效果将明显优于单卡环境。原因是由于在MPI进行通信传输时,需要将管网中管道和非管道元件从设备端传输到主机端进行数据通信,然后再传回到设备端。在输入规模少的管道和非管道数据进行计算时,使用hipMemcpy()进行传输所占用的时间较长,核函数内密集计算占比较小,性能提升不明显,但是随着输入管网规模的增大,在核函数内计算占比远超过传输占比时,加速比取得大幅提升。
表 4所示是将在CPU加速器上的运行结果与DCU多卡加速结果进行对比,加速比提升了5~10倍。从表 4可以看出,将数据规模扩展到多块DCU中测试结果取得较优的性能,随着规模的扩大,加速比与规模的扩大成正比。
![]() |
下载CSV 表 4 不同规模器件在CPU和方法2下的结果对比 Table 4 Comparison of results of different scale devices under CPU and method 2 |
实验结果证明了基于HIP编程模型和MPI实现的供水管网模拟仿真计算在“嵩山”超级计算机系统的多DCU上具有良好的可拓展性,对供水管网在“嵩山”超级计算机平台上实现规模扩展具有重要的意义。
5 结束语本文利用HIP-C语言实现供水管网模拟仿真计算在“嵩山”超级计算机平台的移植,通过对管道和非管道元件的数据进行划分,并基于CPU+DCU异构架构,利用HIP编程模型和消息传递接口控制DCU的并发和多进程之间数据的通信传递,扩展管网仿真计算的规模,同时提升模拟实现的效率。实验结果验证了本文优化方法的有效性。下一步将进行管网内核函数计算部分的优化工作,研究扩展核函数内管道和非管道元件的并行特性,以达到提升管网仿真计算性能的目标。
[1] |
WANG H, MENG H, ZHU T. New model for onsite heat loss state estimation of general district heating network with hourly measurements[J]. Energy Conversion and Management, 2018, 157: 71-85. DOI:10.1016/j.enconman.2017.11.062 |
[2] |
WANG H, MENG H. Improved thermal transient modeling with new 3-order numerical solution for a district heating network with consideration of the pipe wall's thermal inertia[J]. Energy, 2018, 160: 171-183. DOI:10.1016/j.energy.2018.06.214 |
[3] |
FANG T T, KONTU K, LAHDELMA R. Estimation of the state of a district heating network based on consumption measurements[C]//Proceedings of the 21st International Conference on Power and Energy Systems and Applications. [S. 1. ]: ACTA Press, 2012: 1356-1367.
|
[4] |
黄凯锋, 刘文君. 北京某水厂模拟管网内部腐蚀特性分析[J]. 中国给水排水, 2007, 23(13): 63-65. HUANG K F, LIU W J. Analysis of internal corrosion characteristic of simulated pipe-loop systems in a waterworks in Beijing[J]. China Water & Wastewater, 2007, 23(13): 63-65. (in Chinese) |
[5] |
WOLDEYOHANNES A D, MAJID M A A. Simulation model for natural gas transmission pipeline network system[J]. Simulation Modelling Practice and Theory, 2011, 19(1): 196-212. DOI:10.1016/j.simpat.2010.06.006 |
[6] |
LAI J Q, YU H, TIAN Z Y, et al. Hybrid MPI and CUDA parallelization for CFD applications on multi-GPU HPC clusters[J]. Scientific Programming, 2020, 20: 1-15. |
[7] |
LIU S, ZOU B, ZHANG L M, et al. Heterogeneous CPU GPU-accelerated FDTD for scattering problems with dynamic load balancing[J]. IEEE Transactions on Antennas and Propagation, 2020, 68(9): 6734-6742. DOI:10.1109/TAP.2020.2990486 |
[8] |
SONG P T, ZHANG Z J, ZHANG Q, et al. Implementation of the CPU/GPU hybrid parallel method of characteristics neutron transport calculation using the heterogeneous cluster with dynamic workload assignment[J]. Annals of Nuclear Energy, 2020, 135: 106957. DOI:10.1016/j.anucene.2019.106957 |
[9] |
MENG W W, CHENG Y G, WU J Y, et al. GPU parallel acceleration of transient simulations of open channel and pipe combined flows[J]. Earth and Environmental Science, 2019, 240: 052025. |
[10] |
ALLEC S I, SUN Y J, SUN J N, et al. Heterogeneous CPU+GPU-enabled simulations for DFTB molecular dynamics of large chemical and biological systems[J]. Journal of Chemical Theory and Computation, 2019, 15(5): 2807-2815. DOI:10.1021/acs.jctc.8b01239 |
[11] |
YANG S C, WANG Y L. A hybrid MPI-CUDA approach for nonequispaced discrete Fourier transformation[J]. Computer Physics Communications, 2021, 258: 107513. DOI:10.1016/j.cpc.2020.107513 |
[12] |
SABER H, MAZAHERI H, RANJBAR H, et al. Utilization of in-pipe hydropower renewable energy technology and energy storage systems in mountainous distribution networks[J]. Renewable Energy, 2021, 172: 789-801. DOI:10.1016/j.renene.2021.03.072 |
[13] |
WANG H, WANG H Y, ZHU T, et al. A novel model for steam transportation considering drainage loss in pipeline networks[J]. Applied Energy, 2017, 188: 178-189. DOI:10.1016/j.apenergy.2016.11.131 |
[14] |
WANG H, WANG H Y, HAIJIAN Z, et al. Optimization modeling for smart operation of multi-source district heating with distributed variable-speed pumps[J]. Energy, 2017, 138: 1247-1262. DOI:10.1016/j.energy.2017.08.009 |
[15] |
郝正航, 张宏宇, 陈卓. 一种天然气管网与电网耦合系统的实时仿真模型与系统: 中国, 106707795A[P]. 2017-05-24. HAO Z H, ZHANG H Y, CHEN Z. Real-time simulation model and system of natural gas pipeline network and power grid coupling system: China, 106707795A[P]. 2017-05-24. (in Chinese) |
[16] |
RUAN Y, ZHANG X L, CHEN J N. Optimization of pipe network simulation algorithm for tree-shaped water injection system in large-scale oilfield[J]. International Journal of Pattern Recognition and Artificial Intelligence, 2021, 35(13): 156-167. |
[17] |
刘青昆, 马名威, 杨荣杰, 等. 基于MPI+CUDA环境的静电相互作用能并行求解[J]. 计算机应用与软件, 2012, 29(11): 35-38. LIU Q K, MA M W, YANG R J, et al. Parallel solving electrostatic interaction energy based on MPI+CUDA environment[J]. Computer Applications and Software, 2012, 29(11): 35-38. (in Chinese) |
[18] |
SHAFI A, HASHMI J M, SUBRAMONI H, et al. Efficient MPI-based communication for GPU-accelerated dask applications[C]//Proceedings of the 21st IEEE/ACM International Symposium on Cluster, Cloud and Internet Computing. Washington D.C., USA: IEEE Press, 2021: 277-286.
|
[19] |
SNIR M. MPI: the complete reference[M]. Cambridge, USA: MIT Press, 1996.
|
[20] |
JACOBSEN D, THIBAULT J, SENOCAK I. An MPI-CUDA implementation for massively parallel incompressible flow computations on multi-GPU clusters[C]//Proceedings of the 48th AIAA Aerospace Sciences Meeting Including the New Horizons Forum and Aerospace Exposition. [S. 1. ]: AIAA Press, 2010: 522.
|
[21] |
梁党卫, 张永哲, 李克文, 等. 子群分层的粗粒度粒子群优化算法[J]. 计算机工程与设计, 2019, 40(2): 389-393. LIANG D W, ZHANG Y Z, LI K W, et al. Coarse-grained particle swarm optimization algorithm for subgroup stratification[J]. Computer Engineering and Design, 2019, 40(2): 389-393. (in Chinese) |
[22] |
OYARZUN G, BORRELL R, GOROBETS A, et al. MPI-CUDA sparse matrix-vector multiplication for the conjugate gradient method with an approximate inverse preconditioner[J]. Computers & Fluids, 2014, 92: 244-252. |
[23] |
GAO T, GUO Y F, ZHANG B Y, et al. Memory-efficient and skew-tolerant MapReduce over MPI for supercomputing systems[J]. IEEE Transactions on Parallel and Distributed Systems, 2020, 31(12): 2734-2748. DOI:10.1109/TPDS.2019.2932066 |