linux安装cuda版petsc和slpec

最近想求解超大稀疏矩阵的特征值,直接用pytorch自带的很容易爆显存,看到网上说slpec是求解特征值神器,依赖petsc,且petsc是支持gpu加速的,所以就尝试了一下,但网上的文档都比较少,自己也踩了不少坑,因此记录一下。

首先,要先安装petsc cuda版的

先来盘一下依赖:

make/python3/gcc/gfortran/cuda

1.根据自己的显卡选择合适的cuda,gcc等

我的对应的cuda版本是12.2 所以接下来我选择安装12.1的cuda(之前尝试了11.7的cuda,编译不成功),所以还是要选择合适的

2.安装上述各种依赖

配置环境本身也挺麻烦的,所以我选择了直接用pytorch的docker镜像:pytorch/pytorch:2.3.1-cuda12.1-cudnn8-devel

docker pull pytorch/pytorch:2.3.1-cuda12.1-cudnn8-devel

pytorch的镜像会根据cuda版本配置对应的依赖,如我下载的这个版本有:

make/python3(3.10)/gcc,g__:gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)/cuda 12.1

但还没有gfortran 但用apt install也很方便

3.根据docker镜像生成容器,且让容器启用GPU

生成docker:docker run --gpus all -itd --name=petsc_new pytorch/pytorch:2.3.1-cuda12.1-cudnn8-devel
进入docker:docker exec -it petsc_new/bin/bash
查看上述各种依赖是否满足

4.petsc编译安装

拉取源码:wget https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-3.21.3.tar.gz

解压:tar -zxvf petsc-3.21.3.tar.gz

配置环境变量:

vi ~/.bashrc

export PETSC_DIR=解压的位置

export PETSC_ARCH=test

source ~/.bashrc

设置configure并编译:

./configure --with-cc=gcc --with-cxx=g++ --with-fc=gfortran --with-cuda=1(启用cuda) --download-petsc4py --download-mpich --download-fblaslapack --with-cudac=/usr/local/cuda/bin/nvcc(cuda地址)

cuda gcc版本要是有问题

成功了会提示下一步进行make

执行上述的make命令,成功后会出现第二个make:

执行第二个make

至此安装成功

5.测试

安装过程中会提醒你,如果要用petsc4py(petsc的python接口)需要添加环境变量
添加环境变量
vi ~/.bashrc
export PYTHONPATH=$PYTHONPATH:/workspace/zhugejun/petsc-3.21.3/test/lib
source ~/.bashrc
打开python测试是否能使用
from petsc4py import PETSc
A = PETSc.Mat()
A=A.createDense((10,10))
A=A.createDenseCUDA((10,10))
如果不是cuda版本的话 创建densecuda的时候会报错 说没有这个类型
6.安装slepc
有点类似安装petsc,且依赖petsc
tar -zxvf   slepc-3.21.1.tar.gz
./configure --with-slepc4py=1 --have-petsc4py=1 【安装slepc4py 且petsc已安装】
configure成功
执行make
make成功,执行test
test成功,添加环境变量
vi  ~/.bashrc
export PYTHONPATH=$PYTHONPATH:/workspace/zhugejun/slepc-3.21.1/test/lib
source ~/.bashrc
安装成功
  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值