内容描述
本实验指导书通过在华为鲲鹏上,编译运行WordCount程序。完成实验操作后,读者会掌握简单的程序编写,如WordCount中的getWords、countWords、treeMerge。
实验环境
- 华为鲲鹏云主机、openEuler 20.03操作系统;
- 安装mpich-3.3.2.tar.gz;
- 安装OpenBLAS-0.3.8.tar.gz
实验过程(含环境配置)
注:所有文件直接上传本地下载好的到云服务器,不用vim编辑。
上传数据文件
创建存放文件夹(四台主机都执行)
sudo mkdir -p project_file/small_file
sudo mkdir -p project_file/big_file
对于run.sh,需要运行:
sed -i 's/\r$//' run.sh
转化其格式
安装mpich-3.3.2
实验用的C++程序,需要mpic++,上个实验只配置了C的,所以要安装g++(sudo dnf install gcc-c++)后,重新配置mpic++
进入 MPICH 的源代码目录,在home目录下(cd mpich-3.3.2)
make clean
重新配置 MPICH: 使用以下命令重新配置 MPICH,这次不要使用 --disable-cxx 选项,以便编译和安装 MPI C++ 绑定:
./configure --prefix=/home/mpich-install --disable-fortran
执行以下命令来编译和安装 MPICH:
make
make install
再根据指导书运行命令生成相关文件后,查看:
安装openblas:
先手动创建安装目录:
sudo mkdir -p /usr/local/openblas
解压(该安装包可在网上下载)
tar -zxvf OpenBLAS-0.3.8.tar.gz
cd OpenBLAS-0.3.8
make -j2
sudo make PREFIX=/usr/local/openblas install
sudo chmod -R 777 /usr/local/openblas/
注意:实验文档可能格式有错,s前的符号不对,下面是正确的
sudo ln -s /usr/local/openblas/lib/libopenblas.so /usr/lib/libopenblas.so
设置环境变量
vim ~/.bashrc
原文档CPLUS_ 和 _INCLUDE_PATH 之间有一个空格,这导致了问题。
正确的:
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/openblas/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openblas/lib
source ~/.bashrc
运行
bash run.sh wordcount 4
bash run.sh wordcount 6
bash run.sh wordcount 8
出现问题Fatal error in PMPI_Barrier: Unknown error class, error stack
解决:
MPI 并行计算出现的问题!!!(已解决)_process manager error waiting for completion-CSDN博客
https://blog.csdn.net/liu_feng_zi_/article/details/108483591
简单来说:
删除host文件本机对应的服务器名称 比如127.0.0.1 ecs-hw-0001删除,四台服务器都要删除
结果
分别执行以下命令,查看wordcount运行结果(只需要在ecs-hw-0001上执行)
bash run.sh wordcount 2
bash run.sh wordcount 4
bash run.sh wordcount 6
bash run.sh wordcount 8
2、4、6、8数字表示启动处理的进程数量。
通过上述运行,可以看出wordcount算法程序已经在集群中并行运行起来。其中第一行输出代表的是大文件统计耗时,第二行输出代表的是小文件统计耗时。