原理解释——山威高性能计算课程HPL & HPCC软件快速安装脚本的实现

之前给女朋友写了一个 HPL&HPCC 软件快速安装脚本,然后发到了网上给大家用==> 链接在这里
在这里记录一下编写的过程,以及一些收获。

1. HPCC or HPL 是啥?

这两个东西本质上就是 benchmark(跑分工具),用来测试计算机的性能的。只不过这两个东西和“娱乐大师”的区别在于,这两个东西主要衡量高性能计算机的并行计算能力。
这两者也是联系很密切的,我理解HPCCHPL的拓展包,HPCC在库上就直接使用了HPL,最新的HPCC-1.5.0使用的是HPL-2.0(2016 年推出,之后HPCC没有继续更新,猜测是出现了更好的 benchmark 软件。

HPL:High Performance Linpack

其中表示意义的一词 LINPACK(Linear system package),线性系统软件包,是通过让计算机使用高斯消元法求解 N 元一次稠密线性方程组来评估计算机的浮点运算性能。

HPCC: HPC Challenge

顾名思义,是一个打包好的,集成了一些其他评估方式在内的 benchmark 工具

2. 怎么安装?

我们可以在互联网上获取两者的源代码,之后需要对代码自行编译,才能得到可执行文件。这时候就产生了一个问题——

为什么不直接打包好,像我们平常使用的软件那样,直接发行可执行文件?

这是因为这两者都是为了评估计算机的运算性能的软件,专用性很强,必须和计算机的环境紧密结合,才能发挥最好的效果。其实,HPL解压后,我们可以发现在根目录下存在一个configure文件,这个文件可以自动检测环境并完成编译。但是有个条件,即所处的操作系统必须配置好了HPL所需要的所有环境变量。

在我们的机群上运行该文件时,它会检测到机群 CPU 为Intel Xeon E5-2620,从而使用 Make.Linux_Intel64 模板尝试进行编译,但它没有找到需要的MKL库,编译失败。实际上并不是我们的环境变量中没有MKL,而是因为版本不同,导致以版本号作为目录的情况下无法识别到。举个例子来说,就是模板中认为应该去找SOFTWARE,而我们机群中目录为SOFTWARE-2.0

我们都知道,HPL软件包要想编译成功,需要系统拥有MPI环境,且底层有线性代数子程序包 BLAS 的支持(或者向量信号图像处理库 VSIPL),以及一些基础工具如gccgcc-gfortran等。

所需环境

对于编译环境,常见的组合有

  • HPL + Intel® Parallel Studio XE(intel 编译器 + intel mkl + intel-mpi)
    intel 套件包含了数学库(mkl)、各种编译器(如 icc、gcc)和 intel mpi。
    此外,安装 Intel 套件后,在其安装目录下的 mkl/benchmarks/linpackmkl/benchmarks/mp_linpack 文件夹下有编译好的 linpack 及测试脚本,可直接使用;
  • HPL + ACML + GNU 编译器 + openmpi
    ACML 由 AMD 推出,用于 AMD 的 cpu。
  • HPL + GNU 编译器+ blas 或 lapack 等数学库 + openmpi
    数学库:blas/lapack 等
    上述中的 openmpi 也可用 mpich

由于我们机群是Intel Xeon E5-2620的 CPU,因此采用Intel的解决方案最合适。
我们所在的目录是/home/train/stuxx,在/train目录下,可以发现存在一个bashrc文件

# .bashrc
# source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

# User specific aliases and functions

source /opt/intel/composer_xe_2015.1.133/bin/compilervars.sh intel64
source /opt/intel/impi/5.0.2.044/bin64/mpivars.sh
source /opt/intel/mkl/bin/intel64/mklvars_intel64.sh

查看文件内容可知,该文件在我们启动终端的时候,执行了三个.sh文件,查看这三个文件可知,他们将基础运行库、MPIMKL分别写入了环境变量。
这意味着什么呢我的好兄弟?
这意味着我们就不用了去网上下载乱七八糟搞不懂的BLAS,CBLAS,这个 mpi 那个 mpi 了,我们只要使用机群现有的就可以了。

插入一条信息,我早期尝试使用 Intel 官方的MKL-2020,结果2020版竟然不能在RHEL 6(我们机群的操作系统)上运行,只能在红帽 7 以后的版本运行。2019可以,但是既然机器上有了,也就没必要下载了。

编译文件修改

既然知道了这些,只要根据setup/目录下的模板Make.Linux_Intel64,稍微修改路径所在位置,就可以编译了(前面说过了,因为我们是E5-2620(差不多是那个时候的服务器专用 U 了),所以选择Intel64
这一部分网络上教程很多,讲得也都很细致,这里在随便说一点,只列出修改的部分:

ARCH         = sduwhhpl     #改成你想取的名字,随便什么都行
TOPdir       = $(HPL_HOME)  #HPL的目录,这个HPL_HOME变量是我定义的,下面有详细讲解
MPdir        = $(I_MPI_ROOT)#MPI的目录
LAdir        = $(MKLROOT)   #MKL的目录,其实这个不用改,本来就是这个,我只是放在这说明比较重要

真的就改这几个,所以不要看着网上的教程就跟着手把手做,建议弄懂每一步是为什么,然后结合自己机器的环境去做。因为我们的环境很多都配置好了,照着网上修改反而弄错(发现有一些账号操作导致环境变量变化,因此在脚本第二版本中加入了环境变量重导入语句)

这里面比较有意思的就是这个TOPdir,这个目录是HPL的目录,下面的很多操作都会调用这个目录。我们知道他的运行目录是在../stuxx/201800xxxxxx/下,可是每个人的学号不一样,我又不想让大家每次用的时候都输入一个学号作为参数传进来。后来想了想,就增加了一个临时环境变量HPL_HOME,如下:

HPL_HOME=$(pwd)     #以当前所在目录作为值,其实就是你学号的目录
export HPL_HOME
source /etc/profile

unset HPL_HOME      #销毁变量

HPCC 的小坑

HPCC的编译过程其实就是编译一个HPL-2.0的过程,只需要注意几个点:

TOPdir       = ../../..     # HPL的目录不要改动,就用这个(因为本身是集成了HPL,它自己知道在哪

# 下面这两个需要注意,后面加上-std=c99,见下方解释
CCFLAGS  = $(HPL_DEFS) -O3 -w -ansi-alias -i-static -z noexecstack -z relro -z now -nocompchk -Wall -std=c99
LINKFLAGS    = $(CCFLAGS) $(OMP_DEFS) -mt_mpi -std=c99

第一次编译错误,提示STREAM/stream.c(178): error: expected a ";",这是哪门子的错误嘛?总不能是程序写错了?还是这种缺一个;的错误?
后来查资料发现,HPCC-1.5.0对流进行了修改,对其中的数组加入了关键字限制,要想编译stream,必须使用c99,因此加上-std=c99

3. 一些其他

总体来说,折腾的过程还是挺爽的。文件使用了FTP协议传输,在脚本中用wget获取,最后把中间下载的源码压缩包删除,使得结果干净。总体感觉还不错,写作业去了。

最后说一句,这个东西刚开始确实是为了帮女朋友装才搞的。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
HPL高性能集群性能测试是一种用于评估并行计算机系统浮点性能的标准测试程序。它是基于Linpack Benchmark的并行版本,通过对集群的计算能力进行全面、系统的评价,来衡量系统的性能水平。 HPL测试通常是在一个8节点的PC集群上进行的,使用HPL软件计算集群的性能指标。测试结果会给出集群的运行时间、计算速度以及可靠性等参数,从而评估集群在处理大规模计算任务时的性能表现。 HPL测试的步骤一般包括以下几个方面:首先,需要在集群上进行HPL软件的编译和安装,确保配置正确。然后,在测试目录对应的文件夹中找到HPL.dat和xhpl等文件,这表示HPL编译成功。接下来,可以运行测试程序,通过测试结果来评估集群的性能。 需要注意的是,HPL测试的版本与HPCC有一定的关联。HPCC集成了HPL,但在配置上有所不同。HPCC不需要在配置中指定HPL目录,因此在编译文件时会有一些区别。然而,本质上两者都是用于并行计算高性能测试软件。 总结来说,HPL高性能集群性能测试是一种用于评估并行计算机系统性能的标准测试程序,通过对集群的计算能力进行全面的评价,来衡量系统的性能水平。测试过程包括软件的编译安装和运行,最终得出集群的性能指标。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [论文研究-一个实用高性能PC集群的Linpack测试与分析.pdf](https://download.csdn.net/download/weixin_39840924/11400432)[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_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [山威高性能计算课程HPL & HPCC软件快速安装脚本](https://blog.csdn.net/duchenhe/article/details/104853404)[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_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值