scaLAPACK 学习笔记

进程分块和数据布局

 对于现在的电脑,在分等级的内存中数据设计布局对于并行化的代码的表现十分重要,scaLAPACK对与数据的储存和进程的设计都有他自己的方案

  • 进程网格
     一般的并行化代码的进程池都是一维的,但是在这里会从一维映射到二维,映射的顺序可以是以行优先排列或者以列优先排列,但是大多数情况下是使用行优先的规则。程序接口BLACS_GRIDMAP可以帮助用户定义进程的映射。
0123
4567
  • 上下文
     每一个进程网格都包含在一个上下文(context ) 中,每一个上下文又与全局矩阵联系在一起。每个上下文可以分别通信并且互不影响,而一个上下文也可以包含一个或多个进程,我们可以有一维进程网格、二维进程网格以及一小块进程网格和它周围的网格,因此,上下文可以帮助我们
    1. 创造任意组合的进程
    2. 创造不确定数目的重叠的或者是不重叠的进程组合
    3. 分离线程网格所以他们可以不互相影响
程序的分级
  • 这里的程序分为三个等级,每一个等级都对应着不同的问题:
    1. driver routine :可以解决一个完整的问题,比如说 AX=B A X = B 方程的求解
    2. compution routine: 解决独立的计算任务,比如说矩阵的因式分解等,一个driver routine 会引用一系列的compution routine 来完成任务,有时候当driver routine 解决一个问题不太方便的时候用户可以直接引用一个compution routine.
    3. Auxiliary routines:处理更小的操作,矩阵的缩放等
程序命名规则
  • 对于driver routinecompution routine
    命名采取PXYYZZZ规则

    1. p是scalapack的缩写,没有特殊意义
    2. x代表计算精度
      x对应的字母含义
      如果就取x,那么就代表任意精度
    3. YY代表对应的矩阵类型
      这里写图片描述
    4. ZZ代表计算类型
  • 对于Auxiliary routine
    仅仅是YY与上面有一些不同

引用SCALAPACK步骤
  1. 初始化 进程网格

    • CALL SL_INIT( ICTXT, NPROW, NPCOL )
      输入二维网格进程的维度,输出上下文

    • CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
      获取该进程的对应网格坐标

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
SCALAPACK的安装步骤如下: 1. 首先,确保已经安装了MPI和LAPACK库,并且它们的路径已经统一。MPI和LAPACK可以通过相应的官方网站下载并按照说明进行安装。 2. 下载SCALAPACK库并解压缩。你可以从SCALAPACK的官方网站上下载最新版本的库文件。 3. 进入解压缩后的SCALAPACK目录,在其中找到SLmake.inc文件并编辑它。在编辑这个文件时,你需要注意以下几点: a. 确保FC变量指定了正确的Fortran编译器,例如mpif90,并且这个编译器已经成功安装。 b. 确保CC变量指定了正确的C编译器,例如mpicc,并且这个编译器已经成功安装。 c. 根据你的需求,可以设置优化级别,例如将FCFLAGS和CCFLAGS设置为-O3。 d. 确保SCALAPACKLIB变量指定了生成的SCALAPACK库的名称,例如libscalapack.a。 e. 确保BLASLIB变量指定了BLAS库的链接方式,例如-lblas。如果你使用的是refblas或者librefblas.a库,可以将其替换为相应的绝对路径,例如/usr/local/lib/librefblas.a。 f. 确保LAPACKLIB变量指定了LAPACK库的链接方式,例如-llapack。如果你使用的是liblapack库,可以保持不变或者替换为相应的绝对路径。 4. 保存SLmake.inc文件并退出编辑器。 5. 在SCALAPACK目录中运行make命令进行编译。这个过程可能需要一些时间,请耐心等待。 6. 编译完成后,运行make install命令将库文件安装到相应的位置。如果之前使用了root权限来进行安装,请使用sudo make install命令。 7. 至此,SCALAPACK库已经成功安装。你可以在安装目录中找到生成的libscalapack.a文件,该文件包含了SCALAPACK库的函数实现。 总结: 安装SCALAPACK库的步骤包括下载、解压缩、编辑SLmake.inc文件、编译和安装。编译和安装过程中需要确保MPI和LAPACK库的路径已经统一,并根据需要进行相应的配置和优化。完成上述步骤后,你将获得一个功能完备的SCALAPACK库可供使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [关于linux安装mpich/openmpi+lapack+scalapack实现并行计算安装过程以及遇到的一些坑](https://blog.csdn.net/weixin_44385985/article/details/129950996)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值