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返回,此时出现了新的变量值





我第二次修改的变量值有(变量值按照自己需求修改)
(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说明书。
创作不易,点赞关注支持一下!