流场可视化工程dlb-dynamicdr部署日志:阶段一 : 库安装部署
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:

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

被折叠的 条评论
为什么被折叠?



