可扩展线性代数计算软件包ScaLAPACK及其实现

  • 格式:pdf
  • 大小:136.49 KB
  • 文档页数:3

5计算实例
分块大小和进程网格结构对计算性能都有影响。下面给出计算实例ChoIesI(y分解(双精度)。 (I)分块大小对计算性能的影响
260
为全局模块。由同步运行的并行程序组成,其变量(包括矩阵和向量)循环分布在一维或:二维进程
网格上。主要的ScaLAPACK程序(驱动和计算程序)一般只调用PBLAS,但辅助程序可能需要调
用BLAs进行本地计算,调用BLAcS进行处理机间的通信。图中的虚线表示辅助程序的调用关
系。

,|
scaLAPAcK
序包LAPACK和基于消息传递方式的可扩展线性代数库ScaL舳ACK。
ScaLAPACK功能介绍

可扩展线性代数计算软件包(ScaLAPACK,Scalable Linear AIgebra PACKage)是基于MPI或 PVM的高性能、可扩展的线性代数计算软件包.它用于并行求解线性代数问题。此库有实型、 复型、双精度型、双精度复型四种类型计算程序。包括一般线性代数方程组的LU分解和求解;

ScaLAPAcK的数据分布
对于具有不同存储器层次结构的并行计算机,数据布局对并行程序的性能和可扩展性非常重 要。scaLAPAcK采用分块算法,充分利用存储器层次结构,减少数据在主存和cache巾的移动,
259
大大增加了数据重用牢,使性能有很大提高。同时通过对数据合理布局.保证了计算的负载jF衡, 并大大减少了数据在处理机蚓的通信频率.减少了通信时闻。下面叙述并种数据分布方法。 (1)块分布

; 、、

// /
///。
,●J L冀 // ;

队委步爱蕊tocat k型
BLAcs

PBLAs
II\
脚ob他
Il
¨

《通讯踉语(PVM・MPf等J 8
图l ScaLAP_ACK的层次结构
BLAS、BLACS是开发更高层ScaLAPACK程序的最基本模块.它们对计算机体系结构依赖 性很大,ScaLAPACK不包含BLAS、BLACS,因而不依赖于具体机器,可以在任何支持MPI与 PVM的环境下运行。PBLAs是实现ScaLAPACK库的最高层模块,使ScaLAPACK模块化,结 构溃晰,易于阅读和使用。ScaLAPACK有很好的可移植性。
一维块分布用于计算负载均匀分布的全局数据,把全局数据长度为N的向量X=(x,)分布在 一维进程网格上。这种分布方法分配出大小为NB的块给连续的进程。每个进程只收到向量的一 块。如有一个长度为N=9的向量,块大小为NB=4.分布到3个进程(NPROCS=3)的网格上.分
布情况见表l。 表l 3个进程向量分布
258

ScaLAPACK的结构
BLAs(Basic LineaLrAlgebrasubprograms):基本线性代数计算(向量一向量运算、矩阵一向鼍运 算和矩阵一矩阵运算等)的子程序集合,包括一级、二级、三级BLAS。
LAPACK(LinearAlgebra PACKage):一个求解线性代数、最小二乘法和特征值问题的程序集
可扩展线性代数计算软件包ScaLAPACK及其实现
晏益慧 国防科大六院,长沙410003
摘要:ScaLAPACK是一个可扩展线性代数计算软件包,实现各类线性代数问题的分布式并行 计算。ScaLAPACK采用分块算法,其数据采用块分布和块循环分布方案,既充分利用存储 器层次结构,又保证了计算的负载平衡,是一个实用又高效的线性代数计算软件包. 关键词:分布式并行计
我们知道,并行计算的主要领域是大型工程与科学计算,而大型工程与科学计算主要与线性代 数计算有关。据统计。大型工程与科学计算80%左右的时间花在与线性代数有关的计算上。因此。 拥有一个功能完善、计算高效、使用方便的线性代数库对大型工程与科学计算至关重要。 随着科学技术的发展,对计算速度的要求越来越高。受各种条件的限制,单处理机性能的提高 是有限的,而共享主存方式下处理机个数也是有限的。不能满足大规模工程计算的要求。为了适用 科学计算中对处理机速度的要求,计算机体系结构朝着分布主存体系结构发展。随着计算机体系结 构的发展。对线性代数库的研究也在不断地进行。相继出现了基于无存储层次结构单机的第一代线 性代数程序包LⅢPACK和EISPACK、基于存储分层共享主存多处理机系统的第二代线性代数程
表3 5×5矩阵A=(a11)分解成2×2的块映射到2×2进程网格
ScaLAPACK要求所有全局数据(向量或矩阵)在调用ScaLAPACK程序之前都必须分布到各个 进程。对求解稠密线性方程组和求特征值问题的ScaLAPACK程序,假定所有全局数据调用前已经 按二维块循环数据分布方法分配到了各进程:对求解带状和三对角线性方程组的ScaLAPACK程 序,假定所有全局数据已按一维块分布法分配到了各进程,带状系数矩阵按列块分布,右端矩阵 按行块分布。
对称或Hemite正定线性代数方程组的Cholesky分解和求解:一般带状线性代数方程组的LU分
解和求解;对称正定带状线性代数方程组的Cholesl(y分解和求解:一股三对角线性代数方程组 的LU分解和求解:对称正定三对角线性代数方程组的Cholesl(y分解和求解:一般超定线性代数 方程组的奇异值分解和最小二乘解:一般矩阵的QR、RQ、LQ、QL分解:一般矩阵和对称矩阵 的条件数估计;求对称矩阵的特征值和特征向量;求非对称矩阵的特征值和特征向量;三对角矩 阵的特征值和特征向量和广义特征值求解等,还包括了基本线性代数计算,如向量一向量运算、 矩阵一向量运算、矩阵一矩阵运算等,实现了各类线性代数问题的分布并行计算。 ScaLAPACK包括求解各种类型线性代数方程组和特征值问题的驱动程序、执行不同计算任 务的计算程序以及执行某些子任务或者一般低层计算任务的辅助程序。每一个驱动程序一般调用 一系列计算程序,计算程序又调用一系列的牟『{j助程序。驱动程序主要用于测试ScaLAPACK库程 序的正确性和效率。而计算程序和辅助程序可供各类数值分析人员或软件开发者使用。
合,基本上是通过调用BLAS实现。LAPACK是基于分块算法的程序,可适用于共享存储的机器。
BLACS(BaSic LinearAlgebra Communication Subprogr姗s):为线性代数设计的消息传递界面。
BLACS包括同步发送/接收程序,完成从一个处理机到另一个处理机传送一个矩阵或子矩阵,向多 个处理机广播子矩阵,或者计算全局归约(求和、求最大值和求最小值);还有一些程序用于构成、 改变或查询进程网格。BLACS允许~个处理机分属几个重叠的或不相交的进程网格,每个都有上
下文标识。
PBLAS:在BLAS的基础上开发研制的一个并行子集PBLAS。它通过调用BLACS执行消息 传递,调用BLAs进行线性代数计算。 如图l所示,描述了ScaLAPACK软件的层次结构和各模块的调用关系。LAPACK、BLAS、
BLACS为本地模块,只在一个进程上运行,其变量存储在一个进程中。ScaLAPACK、PBLAS
如果把一维块分布扩展到矩阵,则把矩阵的一个行块或一个列块分配给每一个进程。把每一 个进程分配一个行块的分布叫做行块分布。列块分布是每个进程分配矩阵的一个列块。如有一个 5×5矩阵A2(%),块大小为NB=2,列块分布到3个进程的网格上。见表2。
表2列块分布
(2)块循环分布 循环分布也口q做分散分布。当计算负载在进程网格上分布不均匀时用于改善负载平衡。块循 环分布是块分布和循环分布的结合。在一维网格情况下,大小为MB的行块或大小为N白的列块 被循环分布到进程网格上。在二维网格情况下,大小为MB×NB的块被循环分布到进程网格上。 对一个M×N矩阵,先从其左上角开始把它分解成MB×NB的块,并均匀分布在进程网格 上。每一个进程拥有若干块的集合,这些块以二维列主顺序数组被局部地、连续地存储,见表3。