ZJUSCT HPC101 超算短学期 Lab 1
环境:搭载 Apple M1 Max 的 MacBook Pro,使用 Parallels Desktop 虚拟机运行 Debian 11.7.0 ARM64。
仅供参考。相关路径请自行修改。
(没有采用配好一台后克隆的做法,四台一起配。所以下面做成了类似部署脚本的东西。)
编译 OpenMPI
1 |
|
编译 BLAS
1 |
|
编译 CBLAS
1 |
|
编译 HPL
这里不手动指定 libgfortran.so
会链接失败…?
1 |
|
生成 SSH 密钥,复制到其他节点,创建 MPI Hostfile
1 |
|
运行 xhpl
1 |
|
常见问题
编译 CBLAS 报错:
1
2
3
4
5c_sblat1.f:218:48:
218 | CALL STEST1(SASUMTEST(N,SX,INCX),STEMP,STEMP,SFAC)
| 1
Error: Rank mismatch in argument ‘strue1’ at (1) (scalar and rank-1)
L214 和 L218 相同的错误。1
所指的 STEMP
改为 STEMP(1)
。不懂 Fortran,这里是参数的秩不匹配?c_dblat1.f
也是。见前文的 patch。
编译 HPL 错误:
1
2
3
4
5
6
7
8/usr/bin/ld: /home/45gfg9/CBLAS/lib/cblas_LINUX.a(cblas_dtrsv.o): in function `cblas_dtrsv':
cblas_dtrsv.c:(.text+0x130): undefined reference to `dtrsv_'
/usr/bin/ld: /home/45gfg9/CBLAS/lib/cblas_LINUX.a(cblas_dgemm.o): in function `cblas_dgemm':
cblas_dgemm.c:(.text+0xd0): undefined reference to `dgemm_'
/usr/bin/ld: cblas_dgemm.c:(.text+0x1ac): undefined reference to `dgemm_'
/usr/bin/ld: /home/45gfg9/CBLAS/lib/cblas_LINUX.a(cblas_dtrsm.o): in function `cblas_dtrsm':
cblas_dtrsm.c:(.text+0x1b0): undefined reference to `dtrsm_'
collect2: error: ld returned 1 exit status
CBLAS 找不到 BLAS。在 HPL Makefile 中指定 LAlib
时,确保有 blas_LINUX.a
,而且在 cblas_LINUX.a
后面。见前文 patch。
编译 HPL 错误:
1
2
3
4
5
6
7
8/usr/bin/ld: /home/45gfg9/BLAS-3.11.0/blas_LINUX.a(xerbla.o): in function `xerbla_':
xerbla.f:(.text+0x54): undefined reference to `_gfortran_st_write'
/usr/bin/ld: xerbla.f:(.text+0x60): undefined reference to `_gfortran_string_len_trim'
/usr/bin/ld: xerbla.f:(.text+0x7c): undefined reference to `_gfortran_transfer_character_write'
/usr/bin/ld: xerbla.f:(.text+0x8c): undefined reference to `_gfortran_transfer_integer_write'
/usr/bin/ld: xerbla.f:(.text+0x94): undefined reference to `_gfortran_st_write_done'
/usr/bin/ld: xerbla.f:(.text+0xa4): undefined reference to `_gfortran_stop_string'
collect2: error: ld returned 1 exit status
找不到 libgfortran。(为什么呢?)
确保已经安装 gfortran(当然的吧,编译 CBLAS 要用)。定位系统中的 libgfortran:
1 |
|
选择一个 .so
将其加入 Makefile 对应的位置。因为如果出现多个的话,它们大概率是同一个文件。
如果选了 .a
,会:
1 |
|
glibc,是不懂的领域呢。总之,还是见前文的 patch(…)。
ZJUSCT HPC101 超算短学期 Lab 1
https://heap.45gfg9.net/t/ZJU/2023-HPC101/43cc89f4f5ad/