当前位置: 首页 > 工具软件 > PETSc > 使用案例 >

安装valgrind、petsc、slepc

公西飞鸾
2023-12-01

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 出错
[jrf@login09 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
 类似资料: