linux安装cuda版petsc和slpec

weixin_42037886 2024-09-03 13:01:08 阅读 59

最近想求解超大稀疏矩阵的特征值,直接用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()

comm =

PETSc.COMM_WORLD

A=A.createDense((10,10))

A=A.createDenseCUDA((10,10))

如果不是cuda版本的话 创建densecuda的时候会报错 说没有这个类型

6.安装slepc

有点类似安装petsc,且依赖petsc

获取安装包 wget https://slepc.upv.es/download/distrib/slepc-3.21.1.tar.gz

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

安装成功



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。