流场可视化工程dlb-dynamicdr部署日志:阶段一: 库安装部署

本文详细记录了流场可视化工程的依赖库安装过程,包括CMake、MPI、NetCDF、HDF5、Boost、Protobuf、Zoltan、METIS和Parallel_NetCDF的部署。在安装过程中遇到的问题,如环境变量配置、库文件查找、编译错误等,都得到了逐步解决。通过对/etc/profile和.bashrc文件的修改,确保了环境变量的正确设置,使得各库能够被正确识别和使用。

2022-02-21

工程依赖库下载

  • Boost:

    • Required:1.53.0 or later version
    • Current:1.78.0
    • Download Link:https://www.boost.org/users/download/
  • CMake:

    • Required:2.8.12 or later version
    • Current:3.23.0
    • Download Link:https://cmake.org/download/
  • GCC/G++:

    • Required:4.8.5
    • Current:11.2.0
    • Download Link:https://ftp.gnu.org/gnu/gcc/gcc-11.2.0/
  • METIS:

    • Required:5.1.0
    • Current:5.1.0
    • Download Link:http://glaros.dtc.umn.edu/gkhome/metis/metis/download
  • ParMETIS:

    • Required:4.0.3
    • Current:4.0.3
    • Download Link:http://glaros.dtc.umn.edu/gkhome/metis/parmetis/download
  • MPI(MPICH):

    • Required:2.1.9 or later version
    • Current:4.0
    • Download Link:https://www.mpich.org/downloads/
  • MPI(OpenMPI):

    • Required:2.1.9 or later version
    • Current:4.1.2
    • Download Link:https://www.open-mpi.org/software/ompi/v4.1/
  • NetCDF:

    • Required:4.4.0 or later version
    • Current:4.8.1
    • Download Link:https://www.unidata.ucar.edu/downloads/netcdf/
    • HDF5:
      • Current:1.12.0
      • Download Link:https://www.hdfgroup.org/downloads/hdf5/source-code/
  • Parallel NetCDF:

    • Required:1.6.0 or later version
    • Current:1.12.2
    • Download Link:http://cucis.ece.northwestern.edu/projects/PnetCDF/download.html
  • Zoltan:

    • Required:3.83
    • Current:3.83
    • Download Link:https://github.com/sandialabs/Zoltan/releases
  • Protobuf:

    • Required:2.6.1
    • Current:3.19.4(cpp version)
    • Download Link:https://github.com/protocolbuffers/protobuf/tags

2022-02-22

本地编译、部署 :

  • CMake(3.23.0)
  • MPI(OpenMPI 4.1.2)
  • NetCDF(4.8.1)
    • 依赖:HDF5

CMake部署

库源文件路径:/home/ctrtemp/Downloads/Lib/CppLib/dlb-lib/CMake/cmake-3.22.2
安装路径(默认):/usr/local

MPI部署

同上

NetCDF部署

同上,出现错误:需要hdf5依赖

2022-02-23

今天重新安装,将之前所有文件卸载,清除/usr/local文件夹下的所有安装过的文件

当前状况记录:

ctrtemp@ctrtemp-HP-Spectre-x360-Convertible-14-ea0xxx:/usr/local$ tree
.
├── bin
├── doc
├── etc
├── games
├── include
├── lib
├── sbin
├── share
└── src

可见全为空,之后我们开始我们的部署工作

CMake部署

在这里我们使用的版本号为:3.22.2

首先测试有没有删干净:

执行
$ cmake --version 
发现无该命令

进行安装,来到目标地址

cd /home/ctrtemp/Downloads/Lib/CppLib/dlb-lib/CMake
$ tar -zxvf cmake-3.22.2.tar.gz 
$ mkdir installed // 用于承接之后的CMake安装文件
$ cd cmake-3.22.2/
$ mkdir build
$ cd build/
$ ../configure --prefix=/home/ctrtemp/Downloads/Lib/CppLib/dlb-lib/CMake/installed
//指定安装目录,并等待几分钟
$ make 
//等待几分钟~十几分钟
$ make install
//等待几秒钟

之后进入安装目录进行查看

cd /home/ctrtemp/Downloads/Lib/CppLib/dlb-lib/CMake/installed
$ tree
.
├── bin
├── doc
└── share
//这里省略了内部细节

之后对环境变量进行设置,从而让我们可以使用cmake命令

$ code /etc/profile
//这里我安装了VScode作为文本编辑器,当然你也可以使用Ubuntu自带的vim进行编辑

在最后几行加入

export CMake=/home/ctrtemp/Downloads/Lib/CppLib/dlb-lib/CMake/installed

export PATH=$PATH:$CMake/bin

超级用户模式保存(sudo模式)后变量仍未生效,重启或注销用户重新登录后生效。
测试命令cmake,得到结果如下:

$ cmake --version
cmake version 3.22.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

可见与我们安装的版本号相同,CMake安装成功。

观察

这里之前我一直有一个困惑,关于CMakeLists中的find_package()语句需要寻找的FindXXX.cmake是否是在程序安装的时候动态生成的,实则不然,在我没有安装MPI、HDF5等库文件时,发现在CMake目录下的Modules中就已经有了这些FindMPI.cmake、FindHDF5.cmake等文件。

之后在你安装其他库文件的时候可以尽量注意一下这个问题。

/home/ctrtemp/Downloads/Lib/CppLib/dlb-lib/CMake/installed/share/cmake-3.22/Modules
//以上是Modules路径,里面存储着各种FindXXX.cmake的找包程序,可以写成如下形式
/你的CMake的安装路径(configure阶段prefix之后的值)/shared/cmake-(版本号)/Modules

MPI部署

在这里我们使用OpenMPI

版本号为:4.1.2

同样先进行测试,命令是否删除干净:

$ mpirun --version
Command 'mpirun' not found, but can be installed with:
......

命令不存在,可以开始我们的安装,安装步骤与之前的CMake基本一致,如下:

cd /home/ctrtemp/Downloads/Lib/CppLib/dlb-lib/MPI/OpenMPI
$ tar -zxvf openmpi-4.1.2.tar.gz 
$ mkdir installed // 用于承接之后的CMake安装文件
$ cd openmpi-4.1.2/
$ mkdir build
$ cd build/
$ ../configure --prefix=/home/ctrtemp/Downloads/Lib/CppLib/dlb-lib/MPI/OpenMPI/installed
//指定安装目录,并等待几分钟
$ make 
//等待几分钟~十几分钟
$ make install
//等待几秒钟

之后进入安装目录进行查看

cd /home/ctrtemp/Downloads/Lib/CppLib/dlb-lib/MPI/OpenMPI/installed
$ tree
.
├── bin
├── etc
├── include
├── lib
└── share
//这里省略了内部细节

安装完毕后同样进行测试,流程与以上的CMake基本一致,需要修改/etc/profile文件:

$ code /etc/profile
//这里我安装了VScode作为文本编辑器,当然你也可以使用Ubuntu自带的vim进行编辑

在最后几行加入(这里与CMake略有不同的是需要为库文件和头文件添加路径)

export MPI=/home/ctrtemp/Downloads/Lib/CppLib/dlb-lib/MPI/OpenMPI/installed

export PATH=$PATH:$MPI/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MPI/lib
export CPATH=:$CPATH:$MPI/include
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:$MPI/include

同样注销账户后重新登录,使变量生效,进行对mpi的测试如下:

$ mpirun --version
mpirun (Open MPI) 4.1.2

Report bugs to http://www.open-mpi.org/community/help/

进一步测试1

打开test工程(就是一个简单的用cmake编译的hello-world程序),测试CMake,在CMakeLists.txt中使用find_package()命令寻找MPI。已知的前提是在CMake自带的Module路径下有FindXXX.cmake文件。CMakeLists.txt文件如下:

cmake_minimum_required(VERSION 3.5 FATAL_ERROR)

project(PRJ_Name_Any LANGUAGES CXX)

add_executable(test_exe_name test.cpp)

find_package(MPI REQUIRED)

执行cmake直接报错信息如下:

//反正就是类似于以下的错误吧,具体报错跳过了,现在已经无法找到了
xxxx(missing CXX_FLAGS)xxxx
CMake Error at /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake

进一步测试2

打开之前RayTracing相关的并行程序,进行实际工程测试:

$ mpirun -np 4 ./runable/MPI_Ligtht

报错如下:

./MPI_Lights: error while loading shared libraries: libmpi.so.40: cannot open shared object file: No such file or directory
./MPI_Lights: error while loading shared libraries: libmpi.so.40: cannot open shared object file: No such file or directory
./MPI_Lights: error while loading shared libraries: libmpi.so.40: cannot open shared object file: No such file or directory
./MPI_Lights: error while loading shared libraries: libmpi.so.40: cannot open shared object file: No such file or directory
--------------------------------------------------------------------------
Primary job  terminated normally, but 1 process returned a non-zero exit code. Per user-direction, the job has been aborted.
--------------------------------------------------------------------------

报错信息是缺少libmpi.so.40库文件,显然是没有检测到这个路径,已知的是在系统默认路径下的文件是一定可以被检测到的。

问题处理:阶段一

根据以上库缺少的问题,我们将这个文件(libmpi.so.40)copy到/usr/local/lib/目录下,看看是否可以实现相关功能。

$ sudo cp libmpi.so.40 /usr/local/lib/

再次执行以上命令后代码成功运行,未报错,说明是库没有被检测到,对其进行进一步修改。

问题处理:阶段二

检测并修改在/etc/profile中的书写方式之后发现无效。

进一步检测,输入env命令查看环境变量:

$ env
PATH=
/home/ctrtemp/Documents/cpp_code_Lib/cmake/cmake-3.21.0-linux-x86_64/bin/:
/home/ctrtemp/Documents/cpp_code_Lib/cmake/cmake-3.21.0-linux-x86_64/bin/:
/home/ctrtemp/.local/bin:/home/ctrtemp/Documents/cpp_code_Lib/cmake/cmake-3.21.0-linux-x86_64/bin:
/usr/local/sbin:
/usr/local/bin:
/usr/sbin:/usr/bin:
/sbin:/bin:
/usr/games:
/usr/local/games:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值