天天看點

安裝valgrind、petsc、slepcvalgrind的安裝PETSc的安裝SLEPc的安裝問題

valgrind的安裝

  1. 執行

    . pccompile

    #!/bin/bash
    export CC=gcc
    export CXX=g++
    ./autogen.sh
    ./configure --prefix=/home/jrf/tools/valgrind --with-mpicc=mpicc
               
  2. make && make install

PETSc的安裝

PETSc和SLEPc安裝的每一步完成後,都會給出下一步要做的指令

1 安裝步驟

  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
               
  2. 編譯

    make all check

    執行完這一步,會在軟體包所在目錄生成頭檔案和庫檔案,目錄為:

    $PETSC_DIR/$PETSC_ARCH/lib 
    $PETSC_DIR/$PETSC_ARCH/include
               
    若是in-place安裝(安裝到安裝包所在位置,這樣有助于使用git 追蹤最新版本,重新編譯比較友善),則到這裡就可以停止了,但若是想out-place安裝(安裝到其他位置),還需要執行第3步
  3. 安裝到指定位置

    make PETSC_DIR=/home/jrf/package/petsc-3.15.1 PETSC_ARCH=arch-linux-c-debug install

    注意,這條指令中的PETSC_ARCH可能會不同,最友善的方法是檢視第2步完成後的提示,會直接給出第3步運作需要的指令。

2 一些說明

  1. PETSC_DIR 和 PETSC_ARCH

    這兩個環境變量用于PETSc和SLEPc的多版本安裝,作用分别是(1)編譯時指定某個版本的安裝位置和(2)使用時指定用哪個版本。

    a. PETSC_DIR 指定安裝根目錄

    b. PETSC_ARCH 若在同一個根目錄中安裝多個版本,需要使用該參數指定某個版本安裝在根目錄的哪個檔案夾下。

    若指定了PETSC_ARCH參數,在編譯完成後,會在安裝包根目錄生成一個名為

    $PETSC_ARCH

    的檔案夾,裡面裝的就是編譯好的petsc程式,包括他的可執行程式、頭檔案和庫檔案等。這在需要同時安裝多個版本的PETSc(比如說用不同編譯器intel、gcc,或不同的MPI函數庫)時十分有用,可以在編譯的時候定義

    PETSC_ARCH

    為不同的值(如PETSc-intel、PETSc-gcc),編譯好後會自動把他們裝在安裝包根目錄下不同的檔案夾裡,檔案夾的名字就是

    PETSC_ARCH

    的值。

    編譯時若要裝在不同的檔案夾時,需要加上如下的編譯選項:

    ./configure PETSC_ARCH=linux-gnu ... 
               
    在安裝完成後,将以下指令寫在.bashrc檔案中,當有多個版本的時候,若是In-place安裝,同一個目錄下會有多個PETSc版本,這時候就可以通過指定環境變量

    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

  2. in-place和out-place的安裝說明

    Installation Location: In-place or Out-of-place

  3. 使用PETSc 和SLEPc的庫編譯自己的程式時,在兩個庫的安裝包裡任意目錄執行如下指令,可以擷取編譯所需要的連結庫、頭檔案等資訊。但是注意,這裡面沒有SLEPc的任何資訊,需要手動添加。
    make getlinklibs getincludedirs getcflags getcxxflags getfortranflags getccompiler getfortrancompiler 	getcxxcompiler  
               
    手動添加SLEPc的資訊,示例如下
    -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.  
           
  1. make SLEPC_DIR=/home/jrf/package/slepc-3.15.1 PETSC_DIR=/home/jrf/tools/petsc3.15.1
  2. make SLEPC_DIR=/home/jrf/package/slepc-3.15.1 PETSC_DIR=/home/jrf/tools/petsc3.15.1 install

問題

  1. 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
           

繼續閱讀