Lab1-简单集群搭建
Lab1-简单集群搭建
实验简介
1 | 本次实验要求使用四台虚拟机搭建一个简易的集群,并对该集群进行性能测试,最后提交测试结果和实验报告。 |
虚拟机安装与镜像文件下载
- 在 Virtual Box 官网下载 windows hosts
- 在镜像站下载 Linux 光盘映像文件(debian-live-11.7.0-amd64-standard.iso)
创建虚拟机
选择发行版(Linux),分配内存(2GB)、磁盘空间(5GB)
插入发行版映像文件和配置网络(一开始使用的是网络地址转换(NAT))
完成图形安装程序并重启
下载并安装OpenMPI
下载 openmpi-4.1.5.tar.gz
1
wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.5.tar.gz
进行解压
1
tar -xzvf openmpi-4.1.5.tar.gz
安装 OpenMPI
1
2
3./configure --prefix=/usr/local
make
sudo make install配置环境变量
或许是装在
/usr/local
下的原因,这里没有进行环境变量的配置也能通过which mpicc
命令找到mpicc
下载并安装HPL
- 检查
gcc
/gfortran
环境- 通过
gcc -v
和gfortran -v
检查安装情况 gcc
已经安装,使用sudo apt-get install gfortran
命令安装gfortran
- 通过
- BLAS
- 下载 blas-3.11.0.tgz 并解压得到 BLAS-3.11.0
- 使用
make
命令进行编译,得到blas_LINUX.a
库文件
- CBLAS
下载 cblas.tgz 并解压得到 CBLAS
阅读
README
和INSTALL
文件使用
mv Makefile.LINUX Makefile.in
进行重命名进入
Makefile.in
文件,修改BLLIB
路径为../lib/blas_LINUX.a
使用
make
命令进行编译,得到cblas_LINUX.a
库文件
- HPL
下载 hpl-2.3.tar.gz 并解压得到 hpl-2.3
进入根目录的
setup/
文件夹下,选择 Makefile 相关文件的模板(这里选择的是Make.LINUX_PII_CBLAS
),再将模板文件复制到根目录并重命名为Make.test
修改
Make.test
文件的参数使用
make arch=test
进行编译,得到HPL.dat
和xhpl
两个文件
克隆节点
Virtual Box 管理器中复制(但忘记更改mac地址)
测试集群
网络再配置
- 使用 Virtual Box 管理器工具创建 NatNetwork(NAT 网络)
- 进入 VM1 ~ VM4 虚拟机网络配置,将连接方式选为 NAT网络 ,并选择 NatNetwork
- 重置 MAC 地址
ping
配置 ssh
- 在 VM1 上使用
ssh-keygen
命令创建一个密钥 (一直 Enter ,无需设置密码) - 使用
sudo apt-get install ssh
命令来安装 ssh 服务 - 使用
ssh-copy-id -i ~/.ssh/id_rsa.pub zsh@10.0.2.15
来拷贝公钥到 VM3
- 在 VM1 上使用
mpirun
OpenMPI hostfile
编写 MPI 的 hostfile 并保存:
1
2localhost slots=2 //VM1
10.0.2.15 slots=2测试程序
1
mpirun --hostfile hostfile uptime
运行 HPL
1
mpirun --hostfile hostfile ./xhpl
写在最后
超算的Lab1,花费了我三个晚上来完成。第一个晚上做到环境变量的添加,在Windows下做过环境变量的添加,但是在Linux虚拟机下的操作基本借助互联网,但这个问题在将
openmpi 安装在 /usr/local
下莫名其妙解决了。第二个晚上卡在了 hpl 的 Makefile 修改,正确写出这个
Makefile 中遇到了三种报错:一、Make.inc 未被找到,后来发现是 hpl 更名成
hpl-2.3 而 Makefile 中仍是 hpl 导致的😓;二、 permission denied
,这个比较好解决,是 libmpi.so
在 /usr
下的原因; 三、 找不到 gfortran.xxx
, 于是我把 Makefile 中的
LINKER
改成指向 gfortran
的路径。第三个晚上前面一直在调不同虚拟机的 IP 相同😭,在 HPC-101
群u帮助下换了 NAT 网络,这一步到最后的结果输出过程就比较顺利了。