在上一篇中我们介绍了一个非常实用的工具 mpipool,下面我们将简要地介绍并行分布式线性代数运算工具 ScaLAPACK,然后我们会介绍在 python 中使用 ScaLAPACK 的工具 scalapy。
简介
ScaLAPACK(Scalable LAPACK 简称)是一个并行计算软件包,适用于分布式存储的 MIMD (multiple instruction, multiple data)并行计算机。它是采用消息传递机制实现处理器/进程间通信,因此使用起来和编写传统的 MPI 程序比较类似。ScaLAPACK 主要针对密集和带状线性代数系统,提供若干线性代数求解功能,如各种矩阵运算,矩阵分解,线性方程组求解,最小二乘问题,本征值问题,奇异值问题等,具有高效、可移植、可伸缩、高可靠性等优点,利用它的求解库可以开发出基于线性代数运算的并行应用程序。
ScaLAPACK 的主要思想是:
- 以一种块状循环分布的方式在各个进程之间分布数据矩阵;
- 使用块状划分的算法以尽量保证数据的重用性;
- 设计良好的底层模块使得使用高层模块编写的并行编程和普通串行串行基本一致。
软件等级
ScaLAPACK 是建立在一系列软件基础之上的,其软件等级如下: