VScode+WSL编译PETSC
WIN10安装WSL并使用VScode连接WSL
WSL安装和VScode的配置参考以下链接:
https://blog.csdn.net/weixin_43876113/article/details/105261577
在WSL Ubuntu上编译PETSC
(1) 使用git clone下载petsc安装包
git clone -b release https://gitlab.com/petsc/petsc.git petsc
(2)进入petsc文件夹中,添加环境变量
export PETSC_DIR=安装地址
export PETSC_ARCH=test(PS:这里会自动在petsc文件 夹下新建test文件夹并安装好mpi环境)
若petsc中未出现test文件夹,则可用mkdir test的方式新建test文件夹
(3)进行configure
若未安装过MPI, blas, lapack,则可输入如下指令进行配置:
./configure --with-cc=gcc --with-cxx=g++ --with-fc=gfortran --download-mpich --download-fblaslapack
可通过在./configure后添加其他指令增加PETSC编译的功能,如openmp等,具体可参见PETSC的用户手册
(4)make并指定PETSC的目录
make PETSC_DIR=安装地址 PETSC_ARCH=arch-linux2-c-debug all
(5)通过运行示例测试是否安装成功
make PETSC_DIR=安装地址 PETSC_ARCH=arch-linux2-c-debug check
若一切顺利,最后出现“Completed test examples”,则安装成功
(6)测试例子
cd petsc/src/snes/tutorials
make ex1
mpirun -n 1 ./ex1
出现下图迭代信息代表编译成功
(7)在.bashrc中添加环境变量
在Ubuntu主目录中输入:
sudo vim .bashrc
在.bashrc添加PETSC的环境变量
在.bashrc末尾添加以下几行
export PETSC_DIR=/mnt/../petsc(petsc的安装地址)
export PATH=$PETSC_DIR:$PATH
export PETSC_ARCH=test
export PATH=$PETSC_DIR:$PATH
以上,PETSC的安装配置就完全结束了,接下来将介绍如何使用VScode和WSL编译PETSC代码
VScode+WSL编译PETSC代码
以下介绍两种方法使用VScode+WSL编译PETSC代码
编辑.vscode中的.json添加PETSC库目录
-
在c_cpp_properties.json添加PETSC库目录
在c_cpp_properties.json "includePath"中添加库目录/mnt/d/../petsc/include, (..为petsc的安装目录) /mnt/d/../petsc/test/include, (..为petsc的安装目录) /mnt/d/../petsc/test/lib (..为petsc的安装目录)
在c_cpp_properties.json “browse” 添加:
/mnt/../petsc/test/lib(..为petsc的安装目录)
2.在task.json中添加PETSC专用的编译器目录和库目录
在task.json 将"command":后的内容替换为PETSC的专用编译器(一定要替换,不然会报错)
/mnt/d/Mywork/Library/PETSC/petsc/test/bin/mpicxx (mpicxx为c++编译器)
在task.json 在"args":添加以下内容:
-I'/mnt/../petsc/include',(..为petsc的安装目录)
-I'/mnt/../petsc/test/include',(..为petsc的安装目录)
-L'/mnt../petsc/test/lib',(..为petsc的安装目录)
-lpetsc,(petsc/test/lib中的petsc.so动态库文件)
3. 使用断点调试
设置成功。
使用CMAKE编译项目
-
编辑CMakeLists.txt文件
cmake_minimum_required(VERSION 3.1.0) set (CMAKE_CXX_COMPILER "/mnt/../petsc/test/bin/mpicxx") (设置petsc专用编译器) project(ex1) INCLUDE_DIRECTORIES(/mnt/../petsc/include)(链接petsc库文件) INCLUDE_DIRECTORIES(/mnt/../petsc/test/include) (链接petsc库文件) LINK_DIRECTORIES(/mnt/../petsc/test/lib) add_executable(ex1 ex2.cpp) target_link_libraries(ex1 libpetsc.so)
-
使用cmake调试运行
cmake的安装可以自行百度一下,在此就不再赘述了。
点击界面底部的CMAKE:[Debug]选项,生成编译代码所需的文件。
点击CMAKE:[Debug]选项旁边No active kit 选项选择[Unspecifid]会在编译过程中使用用户自定义的编译器。
运行Build选项编译代码
在代码中设置断点,点击运行build旁边的debug按钮,程序会进行调试并在断点处停止。
以上就是本文的全部内容啦,由于笔者刚开始接触PETSC,上文还有很多不严谨的地方,各位大佬轻喷,感谢大家。