valgrind的安裝
- 執行
. pccompile
#!/bin/bash export CC=gcc export CXX=g++ ./autogen.sh ./configure --prefix=/home/jrf/tools/valgrind --with-mpicc=mpicc
- make && make install
PETSc的安裝
PETSc和SLEPc安裝的每一步完成後,都會給出下一步要做的指令
1 安裝步驟
- 執行
. pccompile
#!/bin/bash ./configure --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90 --with-openblas=1 --with-openblas-dir=/home/jrf/tools/openblas --with-valgrind-dir=/home/jrf/tools/valgrind --prefix=/home/jrf/tools/petsc3.15.1 #use default valuse as below # -with-precision=double with single may acquire better performance and less memory use # --with-scalar-type=real # --with-64-bit-indices=0
-
編譯
make all check
執行完這一步,會在軟體包所在目錄生成頭檔案和庫檔案,目錄為:
若是in-place安裝(安裝到安裝包所在位置,這樣有助于使用git 追蹤最新版本,重新編譯比較友善),則到這裡就可以停止了,但若是想out-place安裝(安裝到其他位置),還需要執行第3步$PETSC_DIR/$PETSC_ARCH/lib $PETSC_DIR/$PETSC_ARCH/include
-
安裝到指定位置
make PETSC_DIR=/home/jrf/package/petsc-3.15.1 PETSC_ARCH=arch-linux-c-debug install
注意,這條指令中的PETSC_ARCH可能會不同,最友善的方法是檢視第2步完成後的提示,會直接給出第3步運作需要的指令。
2 一些說明
-
PETSC_DIR 和 PETSC_ARCH
這兩個環境變量用于PETSc和SLEPc的多版本安裝,作用分别是(1)編譯時指定某個版本的安裝位置和(2)使用時指定用哪個版本。
a. PETSC_DIR 指定安裝根目錄
b. PETSC_ARCH 若在同一個根目錄中安裝多個版本,需要使用該參數指定某個版本安裝在根目錄的哪個檔案夾下。
若指定了PETSC_ARCH參數,在編譯完成後,會在安裝包根目錄生成一個名為
的檔案夾,裡面裝的就是編譯好的petsc程式,包括他的可執行程式、頭檔案和庫檔案等。這在需要同時安裝多個版本的PETSc(比如說用不同編譯器intel、gcc,或不同的MPI函數庫)時十分有用,可以在編譯的時候定義$PETSC_ARCH
為不同的值(如PETSc-intel、PETSc-gcc),編譯好後會自動把他們裝在安裝包根目錄下不同的檔案夾裡,檔案夾的名字就是PETSC_ARCH
PETSC_ARCH
的值。
編譯時若要裝在不同的檔案夾時,需要加上如下的編譯選項:
在安裝完成後,将以下指令寫在.bashrc檔案中,當有多個版本的時候,若是In-place安裝,同一個目錄下會有多個PETSc版本,這時候就可以通過指定環境變量./configure PETSC_ARCH=linux-gnu ...
的值來選擇使用哪個版本。PETSC_ARCH
export PETSC_DIR=/home/jrf/tools/petsc3.15.1 export PETSC_ARCH=arch-linux-c-debug #僅在in-place安裝下需要
在安裝SLEPc的時候同樣需要指定這兩個參數,以确定SLEPc基于哪個版本的PETSc安裝。如果in-place安裝隻有PETSc的一個版本或是out-place安裝的PETSc,則無需指定PETSC_ARCH。
官方介紹 Environmental variables PETSC_DIR and PETSC_ARCH
-
in-place和out-place的安裝說明
Installation Location: In-place or Out-of-place
- 使用PETSc 和SLEPc的庫編譯自己的程式時,在兩個庫的安裝包裡任意目錄執行如下指令,可以擷取編譯所需要的連結庫、頭檔案等資訊。但是注意,這裡面沒有SLEPc的任何資訊,需要手動添加。
手動添加SLEPc的資訊,示例如下make getlinklibs getincludedirs getcflags getcxxflags getfortranflags getccompiler getfortrancompiler getcxxcompiler
-Wl,-rpath,/home/jslo/software/slepc-3.15.1/linux-gnu-intel/lib -L/home/jslo/software/slepc-3.15.1/linux-gnu-intel/lib -lslepc -I/home/jslo/software/slepc-3.15.1/linux-gnu-intel/include -I/home/jslo/software/slepc-3.15.1/include
SLEPc的安裝
1.安裝步驟
1.configuration 編寫如下pccompile檔案,并且執行
. pccompile
#!/bin/bash
export PETSC_DIR=/home/jrf/tools/petsc3.15.1
./configure --prefix=/home/jrf/tools/slepc3.15.1 #--with-64-bit-indices=0 --with-scalar-type=real --with-precision=double --with-cc=mpiicc --with-cxx=mpiicpc --with-fc=mpiifort --with-blaslapack-dir=/opt/intel/oneapi/mkl/latest/lib/intel64 --with-valgrind-dir=/home/jslo/software/valgrind
#--with-64-bit-indices=1 to use 8 byte integers (long long) for indexing in vectors and matrices. This is only needed when working with over roughly 2 billion unknowns.
- make SLEPC_DIR=/home/jrf/package/slepc-3.15.1 PETSC_DIR=/home/jrf/tools/petsc3.15.1
- make SLEPC_DIR=/home/jrf/package/slepc-3.15.1 PETSC_DIR=/home/jrf/tools/petsc3.15.1 install
問題
- SLEPc
出錯make check
[[email protected] slepc-3.15.1]$ make SLEPC_DIR=/public/home/jrf/tools/slepc3.15.1/gcc7.3.1 PETSC_DIR=/public/home/jrf/tools/petsc3.15.1/gcc7.3.1 PETSC_ARCH="" check
Running test examples to verify correct installation
Using SLEPC_DIR=/public/home/jrf/tools/slepc3.15.1/gcc7.3.1, PETSC_DIR=/public/home/jrf/tools/petsc3.15.1/gcc7.3.1 and PETSC_ARCH=
Possible error running C/C++ src/eps/tests/test10 with 1 MPI process
[1628066969.257585] [login09:102328:0] ucp_context.c:735 UCX WARN network devices 'mlx5_1:1','mlx5_2:1','mlx5_3:1' are not available, please use one or more of: 'enp97s0f0'(tcp), 'enp97s0f1'(tcp), 'ib0'(tcp), 'mlx5_0:1'(ib)
Fiedler vector of a 2-D regular mesh, N=110 (10x11 grid)
Number of requested eigenvalues: 4
All requested eigenvalues computed up to the required tolerance:
7.82110, 7.58462, 7.53702, 7.30054
gmake[3]: *** [makefile:73:testtest10] 錯誤 1
gmake[2]: *** [makefile:110:check_build] 錯誤 2
gmake[1]: *** [makefile:106:check] 錯誤 2
make: *** [GNUmakefile:12:check] 錯誤 2