Linux下编译安装PETSc

本文记录在Linux下编译安装PETSc的流程。

零、环境

操作系统Ubuntu 22.04.4 LTS
VS Code1.92.1
Git2.34.1
GCC11.4.0
CMake3.22.1
oneAPI2024.2.1

一、安装依赖

1.1 安装oneAPI

参见:Get the Intel® oneAPI Base Toolkit , Get the Intel® oneAPI HPC Toolkit 

1.2 安装CUDA

参见:NVIDIA CUDA Installation Guide for Linux 

二、编译安装

2.1 下载源码

git clone https://gitlab.com/petsc/petsc.git
cd ./petsc
git checkout v3.22.2

2.2 配置

export PETSC_ARCH=intel-zmo
export I_MPI_CC=icx 
export I_MPI_CXX=icpx
export I_MPI_F90=ifx
python3 ./configure --prefix=~/dev/3rdparty/install/intel-zmo --with-scalar-type=complex --with-debugging=0 --with-cc=mpiicx --with-cxx=mpiicpx --with-fc=mpiifx  --with-mpiexec='/opt/intel/oneapi/mpi/2021.13/bin/mpiexec'  --with-blaslapack-dir=$MKLROOT

2.3 编译安装

make PETSC_DIR=/home/nene/dev/3rdparty/src/petsc PETSC_ARCH=intel-zmo all
make PETSC_DIR=/home/nene/dev/3rdparty/src/petsc PETSC_ARCH=intel-zmo install
make PETSC_DIR=/home/nene/dev/3rdparty/install/intel-zmo PETSC_ARCH="" check

三、PETSc C++ Bindings

3.1 相关开源代码

MFEM
libMesh
DEAL.II
OOFEM
OpenFOAM

3.2 主要组件

附录I: VS Code CMakeUserPresets.json

{"version": 4,"configurePresets": [{"name": "linux_intel","inherits": "linux_gcc","displayName": "Intel(R) oneAPI DPC++/C++ Compiler 2024.0.2","description": "Using compilers: C = /opt/intel/oneapi/compiler/latest/bin/icx, CXX = /opt/intel/oneapi/compiler/latest/bin/icpx","cacheVariables": {"CMAKE_C_COMPILER": "/opt/intel/oneapi/compiler/latest/bin/icx","CMAKE_CXX_COMPILER": "/opt/intel/oneapi/compiler/latest/bin/icpx"},"environment": {"PETSC_DIR": "~/dev/3rdparty/install","PETSC_ARCH": "intel-zmo"}}],"buildPresets": [{"name": "linux_intel","description": "","displayName": "","configurePreset": "linux_intel"}]
}

附录II: CMake FindPETSc.cmake

# FindPETSc
# ---------
#
# Locates the PETSc library using pkg-config module PETSc
#
# Imported Targets
# ^^^^^^^^^^^^^^^^
#
# This module defines the following IMPORTED target:
#
#  PETSc::PETSc        - the PETSc library
#
# Result Variables
# ^^^^^^^^^^^^^^^^
#
# This module will set the following variables in your project:
#
#  PETSc_FOUND          - if false, do not try to link to PETSc
#  PETSc_LIBRARIES      - a list of the full paths to all libraries
#  PETSc_INCLUDE_DIRS   - a list of all include directories
#  PETSc_VERSION        - the full version of PETSc MAJOR.MINOR.PATCH
#  PETSc_VERSION_MAJOR  - the MAJOR part of PETSc_VERSION
#  PETSc_VERSION_MINOR  - the MINOR part of PETSc_VERSION
#  PETSc_VERSION_PATCH  - the PATCH part of PETSc_VERSION
#
# Setting these changes the behavior of the search
#  PETSC_DIR - directory in which PETSc resides
#  PETSC_ARCH - build architecture
#
# Author: Frédéric Simonis @fsimonis
# Improver: Nene Lee
# 
# References:
# - https://petsc.org/release/faq/#can-i-use-cmake-to-build-my-own-project-that-depends-on-petsc
# - https://petsc.org/release/manual/getting_started/#sec-writing-application-codes
# - https://github.com/precice/precice/blob/develop/cmake/modules/FindPETSc.cmake
# - https://github.com/oofem/oofem/blob/master/cmake/Modules/FindPETSc.cmake
#cmake_policy(VERSION 3.10)set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)# set root of location to find PETSc's pkg-config
set(PETSC $ENV{PETSC_DIR}/$ENV{PETSC_ARCH})
set(ENV{PKG_CONFIG_PATH} ${PETSC}/lib/pkgconfig)# Remove the lines below if you do not wish to have PETSc determine the compilers
execute_process ( COMMAND pkg-config PETSc --variable=ccompiler COMMAND tr -d '\n' OUTPUT_VARIABLE C_COMPILER)
SET(CMAKE_C_COMPILER ${C_COMPILER})
execute_process ( COMMAND pkg-config PETSc --variable=cxxcompiler COMMAND tr -d '\n' OUTPUT_VARIABLE CXX_COMPILER)
if (CXX_COMPILER)SET(CMAKE_CXX_COMPILER ${CXX_COMPILER})
endif (CXX_COMPILER)
execute_process ( COMMAND pkg-config PETSc --variable=fcompiler COMMAND tr -d '\n' OUTPUT_VARIABLE FORTRAN_COMPILER)
if (FORTRAN_COMPILER)SET(CMAKE_Fortran_COMPILER ${FORTRAN_COMPILER})enable_language(Fortran)
endif (FORTRAN_COMPILER)find_package(PkgConfig REQUIRED)if(PKG_CONFIG_FOUND)pkg_search_module(PETSc REQUIRED IMPORTED_TARGET PETSc)# Extract version parts from the version informationif(PETSc_VERSION)set(_petsc_versions "")string(REGEX MATCHALL "[0-9]+" _petsc_versions ${PETSc_VERSION})list(GET _petsc_versions 0 _petsc_version_major)list(GET _petsc_versions 1 _petsc_version_minor)list(GET _petsc_versions 2 _petsc_version_patch)set(PETSc_VERSION ${PETSc_VERSION} CACHE STRING "Full version of PETSc")set(PETSc_VERSION_MAJOR ${_petsc_version_major} CACHE INTERNAL "Major version of PETSc")set(PETSc_VERSION_MINOR ${_petsc_version_minor} CACHE INTERNAL "Minor version of PETSc")set(PETSc_VERSION_PATCH ${_petsc_version_patch} CACHE INTERNAL "Patch version of PETSc")unset(_petsc_versions)unset(_petsc_version_major)unset(_petsc_version_minor)unset(_petsc_version_patch)endif()  
endif()include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (PETScREQUIRED_VARS PETSc_FOUND PETSc_INCLUDE_DIRS PETSc_LIBRARIESVERSION_VAR PETSc_VERSION)if(NOT TARGET PETSc::PETSc)add_library(PETSc::PETSc ALIAS PkgConfig::PETSc)
endif()mark_as_advanced(PETSc_INCLUDE_DIRS PETSc_LIBRARIES PETSc_VERSION_MAJOR PETSc_VERSION_MINOR PETSc_VERSION_PATCH VERSION_VAR PETSc_VERSION)

参考文献

  • Balay S. PETSc/TAO Users Manual, Revision 3.22. Argonne National Laboratory, 2025.
  • Bueler E. PETSc for Partial Differential Equations: Numerical Solutions in C and Python. 2020.
  • MPI Forum. MPI: a message-passing interface standard. International J. Supercomputing Appli-cations, 1994.
  • William Gropp. Using MPI: Portable Parallel Programming with the Message Passing Interface. MIT Press, 1994.

网络资料 

Configuring PETSc icon-default.png?t=O83Ahttps://petsc.org/release/install/install/

Get the Intel® oneAPI Base Toolkiticon-default.png?t=O83Ahttps://www.intel.cn/content/www/cn/zh/developer/tools/oneapi/base-toolkit-download.html?packages=oneapi-toolkit&oneapi-toolkit-os=linux&oneapi-lin=apt

Get the Intel® oneAPI HPC Toolkiticon-default.png?t=O83Ahttps://www.intel.cn/content/www/cn/zh/developer/tools/oneapi/hpc-toolkit-download.html?packages=hpc-toolkit&hpc-toolkit-os=linux&hpc-toolkit-lin=apt

NVIDIA CUDA Installation Guide for Linuxicon-default.png?t=O83Ahttps://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/502708.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初学vue3心得

这几年经济形势不好,国外对程序员的要求一直都是全栈,国内也慢慢要求通才,作为一名后端算法工程师,最近在学vue3,以下是最近学习的一点心得: 所有的npm install命令前面一定要改成cnpm install,提高速度 在main.js中引入了import "element-plus/dist/index.css";这…

【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 4:MHE表示能力

目录 1 MHE的表示能力2 基于Frobenius-范数的低秩逼近3 基于CE的低秩近似 论文:Multi-Head Encoding for Extreme Label Classification 作者:Daojun Liang, Haixia Zhang, Dongfeng Yuan and Minggao Zhang 单位:山东大学 代码:h…

SRS 服务器入门:实时流媒体传输的理想选择

在当今视频流媒体需求爆炸式增长的时代,如何选择一款高效、稳定且功能强大的流媒体服务器成为了许多开发者和企业关注的焦点。而 SRS(Simple Realtime Server)作为一款开源的流媒体服务器,以其卓越的性能和灵活的功能,…

IoC设计模式详解:控制反转的核心思想

前言:在软件开发中,设计模式是一种经过验证的、在特定场景下能有效解决问题的解决方案。控制反转(Inversion of Control,IoC) 作为一种设计模式,通过让程序的控制流和对象管理反转,从而使得代码…

Swift White Hawkstrider

Swift White Hawkstrider 迅捷白色陆行鸟 Swift White Hawkstrider - Item - 魔兽世界怀旧服TBC数据库_WOW2.43数据库_70级《燃烧的远征》数据库 Kaelthas Sunstrider (1) <Lord of the Blood Elves> 凯尔萨斯逐日者. 掉落 [80圣骑士][Alonsus-加丁][诺森德冒险补给品…

2025 年前端新技术如何塑造未来开发生态?

开发领域&#xff1a;前端开发 | AI 应用 | Web3D | 元宇宙 技术栈&#xff1a;JavaScript、React、ThreeJs、WebGL、Go 经验经验&#xff1a;6 年 前端开发经验&#xff0c;专注于图形渲染和 AI 技术 开源项目&#xff1a;AI智简未来、晓智元宇宙、数字孪生引擎 大家好&#x…

2024 年 MySQL 8.0.40 安装配置、Workbench汉化教程最简易(保姆级)

首先到官网上下载安装包&#xff1a;http://www.mysql.com 点击下载&#xff0c;拉到最下面&#xff0c;点击社区版下载 windows用户点击下面适用于windows的安装程序 点击下载&#xff0c;网络条件好可以点第一个&#xff0c;怕下着下着断了点第二个离线下载 双击下载好的安装…

在大型语言模型LLM中使用私有数据

目录 一、说明 二、训练&#xff1f; 三、及时工程 四、构建系统提示 五、数据人性化 六、我的数据安全吗&#xff1f; 一、说明 随着 2023 年大型语言模型的大规模兴起&#xff0c;许多“基于对话”的服务应运而生&#xff0c;使用户能够通过自然对话与数据和其他产品进行交互…

字玩FontPlayer开发笔记6 Tauri2设置菜单

字玩FontPlayer开发笔记6 Tauri2设置菜单 字玩FontPlayer是笔者开源的一款字体设计工具&#xff0c;使用Vue3 ElementUI开发&#xff0c;源代码&#xff1a; github: https://github.com/HiToysMaker/fontplayer gitee: https://gitee.com/toysmaker/fontplayer 笔记 字玩目…

Chapter4.1 Coding an LLM architecture

文章目录 4 Implementing a GPT model from Scratch To Generate Text4.1 Coding an LLM architecture 4 Implementing a GPT model from Scratch To Generate Text 本章节包含 编写一个类似于GPT的大型语言模型&#xff08;LLM&#xff09;&#xff0c;这个模型可以被训练来生…

linux-centos-安装miniconda3

参考&#xff1a; 最新保姆级Linux下安装与使用conda&#xff1a;从下载配置到使用全流程_linux conda-CSDN博客 https://blog.csdn.net/qq_51566832/article/details/144113661 Linux上删除Anaconda或Miniconda的步骤_linux 删除anaconda-CSDN博客 https://blog.csdn.net/m0_…

Speech Recognition vs. Voice Recognition | 语音识别工作原理 | 模型训练 | 应用

注&#xff1a;机翻&#xff0c;未校。 Speech Recognition 与 Voice Recognition 剑桥词典 speech recognition&#xff0c;语音识别 voice recognition&#xff0c;声音识别 Speech vs. Voice - What’s the Difference? | This vs. That https://thisvsthat.io/speech-vs…

外网访问本地部署的 VMware ESXi 服务

本文将详细的介绍如何在本地部署的 VMware ESXi 以及结合路由侠内网穿透技术&#xff0c;实现外网远程访问和管理本地 ESXi 服务器的具体步骤和配置方法。 第一步&#xff0c;本地部署 VMware ESXi 1&#xff0c;先去官网下载 ESXI &#xff1a;网址&#xff1a;Home - Suppor…

如何配置【Docker镜像】加速器+【Docker镜像】的使用

一、配置Docker镜像加速器 1. 安装/升级容器引擎客户端​ 推荐安装1.11.2以上版本的容器引擎客户端 2. 配置镜像加速器​ 针对容器引擎客户端版本大于1.11.2的用户 以root用户登录容器引擎所在的虚拟机 修改 "/etc/docker/daemon.json" 文件&#xff08;如果没有…

基于Spring Boot的车辆违章信息管理系统(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

如何提高软件研发效率?

如何提高软件研发效率&#xff1f; 概述 莫等闲&#xff0c;白了少年头&#xff0c;空悲切。近些年来在大家眼里形成了“卷王”的印象&#xff0c;第一次听到这一的评价感觉有点不好意思&#xff0c;之后回想感觉挺自豪的&#xff0c;说明现在的我没有浪费光阴&#xff0c;我一…

jenkins入门--安装jenkins

下载地址https://www.jenkins.io/ jdk 安装 &#xff1a;Jenkins需要安装对应版本的jdk,我在安装过程中显示需要21,17 Java Downloads | Oracle jenkins安装过程参考全网最清晰Jenkins安装教程-windows_windows安装jenkins-CSDN博客 安装完成后&#xff0c;浏览器输入127.0.…

单片机-独立按键矩阵按键实验

1、按键介绍 按键管脚两端距离长的表示默认是导通状态&#xff0c;距离短的默认是断开状态&#xff0c; 如果按键按下&#xff0c;初始导通状态变为断开&#xff0c;初始断开状态变为导通 我们开发板是采用软件消抖&#xff0c;一般来说一个简单的按键消抖就是先读取按键的状…

一文详解YOLOv8多模态目标检测(可见光+红外图像,基于Ultralytics官方代码实现),轻松入门多模态检测领域!

目录 1. 文章主要内容2. 相关说明3. 基于YOLOv8的多模态目标检测3.1 启动运行YOLOv8多模态代码3.2 详解代码流程&#xff08;重点&#xff09;3.2.1 train.py文件&#xff08;入口&#xff09;3.2.2 engine\model.py文件3.2.3 engine\trainer.py文件3.2.4 models\yolo\detect\t…

【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 3:算法实现

目录 1 三种多头编码&#xff08;MHE&#xff09;实现1.1 多头乘积&#xff08;MHP&#xff09;1.2 多头级联&#xff08;MHC&#xff09;1.3 多头采样&#xff08;MHS&#xff09;1.4 标签分解策略 论文&#xff1a;Multi-Head Encoding for Extreme Label Classification 作者…