Ubuntu下装备装置Sundials微分方程求解器
Chapter 1 获取Sundials及装置环境装备
Section 1.1 获取Sundials
(1) Linux体系下运用指令git clone https://github.com/LLNL/sundials
从github获取Sundials库房,或许转到[https://github.com/LLNL/sundials]下载对应的压缩文件。
(2) 从SUNDIALS发行网页[https://computing.llnl.gov/projects/sundials/sundials-software]下载压缩文件。以Sundials-7.1.1版别为例,下载后对应的压缩包名称为> sundials-7.1.1.tar.gz。
Section 1.2 Linux下Sundials运转环境装备
Sundials支撑C++,C,Fortran串行或并行计算,也支撑Cuda并行。要运用Sundials完结串行或并行计算有必要对运转环境进行装备,对应的,假如需求运用第三方库,也需求提早装置好第三方库文件。以串行,openmp并行,mpi并行,第三方库以lapack(有必要一起装置blas)和Suitesparse库为例进行环境装备。
(1) 首要用指令sudo apt install gcc gfortran
装置gcc,gfortran(或Intel-fortran).假如运用Intel-fortran,则转到[https://www.intel.cn/content/www/cn/zh/developer/tools/oneapi/hpc-toolkit-download.html?operatingsystem=linux&linux-install-type=offline]下载Linux版的HPC Toolkit装置即可。HPC装置今后在.bashrc文件中设置其环境变量。增加结束后source .bashrc
更新环境变量。
假如装置了Intel-Hpc-toolkit,那么也主动包含了mpi并行库,后续无需别的装置mpi库。假如装置的是gfortran,还需求装置openmpi以完结mpi并行。
从openmpi官网[https://www.open-mpi.org/software/ompi/v5.0/]下载对应的压缩文件。
下载后解压tar -xvzf openmpi-xxx.tar.gz
,解压后cd openmpi-xxx
,然后装备./configure --prefix=/path/to/openmpi
(留意记住这儿的装置途径),接着编译sudo make
和装置sudo make install
。装置完结后增加环境变量。
(2) lapack和blas库直接sudo apt-get install libblas-dev liblapack-dev
装置;Suitesparse库sudo apt-get install libsuitesparse-dev
装置;装置好suitesparse库后增加到环境变量中。
完结上述装备后开端Sundials装置。
Chapter 2 Sundials装置
Sundials详细装置进程能够参阅其运用阐明书,以下进程与阐明书中进程相似。
Linux下SUNDIALS 构建需求运用3.18.0版别以上的CMake和gcc编译器,运用以下指令对CMake进行装置:sudo apt install cmake cmake-qt-gui cmake-curses-gui
。
Win体系需求CMakeSetup(CMake.exe)和Visual Studio。
指令行tar -xvzf sundials-7.1.1.tar.gz
解压下载好的> sundials-7.1.1.tar.gz,假如是git直接下载的目录则不必解压。
Cmake构建时不要在解压后的文件夹如上图中> sundials-7.1.1中直接构建,这会污染源代码。能够在家目录下创立一个sundials目录,在该文件夹内再创立builtdir和instdir及examples目录.builtdir是构建sundials的目录,instdir是构建sundials导出的头文件和库文件的目录,examples是存储测验程序的目录。
进入builtdir目录运用指令 ccmake /home/xinhua/Down loads/sundials-7.1.1
后回车。
按> c键开端装备。之后会有如下选项:
以上选项均为默许选项,变量详细含义能够参阅Sundials装置阐明书。这儿只提我自己修正的部分有(按> e能够修正变量):
(1)BENCHMARKS_INSTALL_PATH=/home/.../sundials/benchmarks
(2)BUILD_FORTRAN_MODULE_INTERFACE=ON
(3)CMAKE_C_EXTENSIONS=OFF
(4)CMAKE_INSTALL_PREFIX=/home/.../sundials/instdir
(5)ENABLE_KLU=ON
(6)ENABLE_LAPACK=ON
(7)ENABLE_MPI=ON
(8)ENABLE_OPENMP=ON
(9)EXAMPLES_INSTALL_PATH=/home/.../sundials/examples
(10)EXAMPLES_ENABLE_CXX=ON
变量修正好今后按> c重新装备,此刻检查装备日志有报错,
按> e回来,此刻呈现了新的变量值
我第2次修正的变量值有(变量值依照自己需求修正)
(1)CMAKE_CXX_EXTENSIONS=OFF
(2)F2003_FOUND=OFF
(3)KLU_INCLUDE_DIR=/usr/include/suitesparse
(4)KLU_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu
(5)LAPACK_LIBRARIES=/usr/lib/x86_64-linux-gnu/lapack/liblapack.so;/usr/lib/x86_64-linux-gnu/blas/libblas.so
修正后按> c装备,此刻装备文件没有报错,装备正常完结。
装备完结后按> g生成,然后仍在builtdir目录下进行make
,make进程中假如装备有过错,则make进程会中止,假如没有过错,则会正常构建。
接着make install
装置进行装置,装置完结后即可开端测验。
Chapter 3 Sundials比如测验
以Cvode求解器为例,对C和Fortran串行和并行程序进行测验。
测验最好运用Cmake对源文件进行编译,直接用make有些比如无法编译。
C_mpimanyvector 测验:
C_openmp测验:
F2003_parallel测验:
CXX_parallel测验:
经过测验后,根本就能够对常微分方程组等进行并行或串行计算了。更多信息参阅Sundials阐明书。
创造不易,点赞重视支撑一下!