Linux下编译安装SuperLU

2024-08-30 16:28
文章标签 编译 linux 安装 superlu

本文主要是介绍Linux下编译安装SuperLU,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SuperLU用于求解大规模稀疏线性方程组,本文记录在远程Linux服务器下编译安装SuperLU的流程。

一、配置VS Code

2.1 安装VS Code Extensions

在本地打开VS Code, 安装以下扩展插件,

Task Explorer

Output Colorizer

Git Extension Pack

Remote Developement

Remote X11

C/C++ Extension Pack

C++ TestMate

Modern Fortran

FORTRAN InstelliSense

Fortran Breakpoint Support

Extension Pack for Intel Software Developer Tools

2.2 Remote SSH

通过"Remote Development"扩展插件登录远程Linux服务器,并安装以下插件

C/C++ Extension Pack

C++ TestMate

Modern Fortran

FORTRAN InstelliSense

Fortran Breakpoint Support

Extension Pack for Intel Software Developer Tools

二、安装与配置oneAPI

1.1 配置包管理器

wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
| gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/nullecho "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.listsudo apt update

1.2 安装

sudo apt -y install cmake pkg-config build-essential

1.3 安装oneAPI

sudo apt install intel-basekit
sudo apt install intel-hpckit

1.4 配置CMake Kits

打开VS Code, 执行"CMake: Edit User-Local CMake Kits",编辑“~/.local/share/CMakeTools/cmake-tools-kits.json”文件,

[{"name": "GCC 11.4.0 x86_64-linux-gnu","compilers": {"C": "/usr/bin/gcc","CXX": "/usr/bin/g++"},"isTrusted": true},{"name": "Intel(R) oneAPI DPC++/C++ Compiler 2024.2.1","compilers": {"C": "/opt/intel/oneapi/compiler/2024.2/bin/icx","CXX": "/opt/intel/oneapi/compiler/2024.2/bin/icpx"},"isTrusted": true}
]

1.5 oneAPI环境变量配置

编辑"~/.bashrc"文件,添加以下内容,

source /opt/intel/oneapi/setvars.sh --force

然后重启远程服务器,在本地重新通过"VS Code"连接远程Linux服务器。

三、编译安装SuperLU

3.1 下载SuperLU

git https://github.com/xiaoyeli/superlu.git
cd ./superlu
git checkout v7.0.0

3.2 编译安装SuperLU

可以使用CMake Kits或者CMake Presets来构建SuperLU,

方法1: 使用CMake Kits

选择"Intel(R) oneAPI DPC++/C++ Compiler 2024.2.1", 使用在VS Code中使用CMake Tools完成构建,同时做如下配置修改,

CMAKE_C_FLAGS-fPIC
CMAKE_BUILD_TYPE

Release

BUILD_SHARED_LIBSON
BUILD_TESTINGOFF
enable_testsOFF
CMAKE_INSTALL_PREFIX/data/3rdparty/install/intel-opt-dto
方法2: 使用CMake Presets

在superlu目录下,编辑CMakeUserPresets.json文件,

{"version": 4,"configurePresets": [{"name": "linux_default","hidden": true,"displayName": "Default Linux Config","description": "Default build using Unix Makefiles generator","generator": "Unix Makefiles","binaryDir": "${sourceDir}/out/build/${presetName}","cacheVariables": {"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}","CMAKE_BUILD_TYPE": "Debug"}},{"name": "linux_gcc","inherits": "linux_default","displayName": "GCC 11.4.0 x86_64-linux-gnu","description": "Using compilers: C = /usr/bin/gcc, CXX = /usr/bin/g++","cacheVariables": {"CMAKE_C_COMPILER": "/usr/bin/gcc","CMAKE_CXX_COMPILER": "/usr/bin/g++","CMAKE_MAKE_PROGRAM": "/usr/bin/make"}},{"name": "linux_intel","inherits": "linux_default","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"}}],"buildPresets": [{"name": "linux_gcc","description": "","displayName": "","configurePreset": "linux_gcc"},{"name": "linux_intel","description": "","displayName": "","configurePreset": "linux_intel"}]
}

然后在VS Code CMake Tools中,修改CMake Cache,

CMAKE_C_FLAGS-fPIC
CMAKE_BUILD_TYPE

Release

BUILD_SHARED_LIBSON
BUILD_TESTINGOFF
enable_testsOFF
CMAKE_INSTALL_PREFIX/data/3rdparty/install/intel-opt-dto

3.3 检查SuperLU连接引用

检查编译生成的libsuperlu.so是否正常链接到了oneAPI MKL,

ldd /data/3rdparty/install/intel-opt-dto/lib/libsuperlu.solinux-vdso.so.1 (0x00007ffc24be1000)libmkl_intel_lp64.so.2 => /opt/intel/oneapi/mkl/2024.2/lib/libmkl_intel_lp64.so.2 (0x00007dd914c00000)libmkl_intel_thread.so.2 => /opt/intel/oneapi/mkl/2024.2/lib/libmkl_intel_thread.so.2 (0x00007dd912800000)libmkl_core.so.2 => /opt/intel/oneapi/mkl/2024.2/lib/libmkl_core.so.2 (0x00007dd90e800000)libiomp5.so => /opt/intel/oneapi/compiler/2024.2/lib/libiomp5.so (0x00007dd90e200000)libimf.so => /opt/intel/oneapi/compiler/2024.2/lib/libimf.so (0x00007dd90dc00000)libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007dd915b88000)libsvml.so => /opt/intel/oneapi/compiler/2024.2/lib/libsvml.so (0x00007dd90c400000)libirng.so => /opt/intel/oneapi/compiler/2024.2/lib/libirng.so (0x00007dd914b07000)libintlc.so.5 => /opt/intel/oneapi/compiler/2024.2/lib/libintlc.so.5 (0x00007dd915b25000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007dd90c000000)libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007dd915b20000)libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007dd915b1b000)librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007dd915b16000)/lib64/ld-linux-x86-64.so.2 (0x00007dd915d2e000)

可以看到,SuperLU实际上是链接到了LP64接口的MKL。若想SuperLU链接到ILP64接口的MKL,需要做如下CMake配置,

BLA_SIZEOF_INTEGER8
BLA_VENDORIntel10_64ilp

四、FAQs

Q. 在主程序中同时引用oneMKL、SuperLU,运行时调用oneMKL API报错。

A. 这个可能是由于libmkl_intel_lp64.so/libmkl_intel_ilp64.so混合调用所致。可考虑将CMake Cache “MKL_INTERFACE”设置为"lp64",这样会在主程序中使用"LP64"接口的MKL。

网络资料

Intel® oneAPI Toolkits Installation Guidesicon-default.png?t=N7T8https://www.intel.com/content/www/us/en/developer/articles/guide/installation-guide-for-oneapi-toolkits.html

Get Started with the Intel® oneAPI Base Toolkit for Linux*icon-default.png?t=N7T8https://www.intel.com/content/www/us/en/docs/oneapi-base-toolkit/get-started-guide-linux/2024-0/overview.html

Get Started with the Intel® HPC Toolkit for Linux*icon-default.png?t=N7T8https://www.intel.com/content/www/us/en/docs/oneapi-hpc-toolkit/get-started-guide-linux/2024-0/overview.html

Using Visual Studio Code with Intel® oneAPI Toolkits User Guideicon-default.png?t=N7T8https://www.intel.com/content/www/us/en/docs/oneapi/user-guide-vs-code/2024-2/overview.html

How to use CMake with Intel® oneAPI Toolkiticon-default.png?t=N7T8https://www.intel.com/content/www/us/en/developer/articles/technical/how-to-use-cmake-with-intel-oneapi-toolkits.html?wapkw=cmake

SuperLU: Home Page (nersc.gov)icon-default.png?t=N7T8https://portal.nersc.gov/project/sparse/superlu/#superluUsing the ILP64 Interface vs. LP64 Interfaceicon-default.png?t=N7T8https://www.intel.com/content/www/us/en/docs/onemkl/developer-guide-windows/2023-0/using-the-ilp64-interface-vs-lp64-interface.html

这篇关于Linux下编译安装SuperLU的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1121337

相关文章

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Windows环境下安装达梦数据库的完整步骤

《Windows环境下安装达梦数据库的完整步骤》达梦数据库的安装大致分为Windows和Linux版本,本文将以dm8企业版Windows_64位环境为例,为大家介绍一下达梦数据库的具体安装步骤吧... 目录环境介绍1 下载解压安装包2 根据安装手册安装2.1 选择语言 时区2.2 安装向导2.3 接受协议

IDEA与JDK、Maven安装配置完整步骤解析

《IDEA与JDK、Maven安装配置完整步骤解析》:本文主要介绍如何安装和配置IDE(IntelliJIDEA),包括IDE的安装步骤、JDK的下载与配置、Maven的安装与配置,以及如何在I... 目录1. IDE安装步骤2.配置操作步骤3. JDK配置下载JDK配置JDK环境变量4. Maven配置下

jdk21下载、安装详细教程(Windows、Linux、macOS)

《jdk21下载、安装详细教程(Windows、Linux、macOS)》本文介绍了OpenJDK21的下载地址和安装步骤,包括Windows、Linux和macOS平台,下载后解压并设置环境变量,最... 目录1、官网2、下载openjdk3、安装4、验证1、官网官网地址:OpenJDK下载地址:Ar

linux本机进程间通信之UDS详解

《linux本机进程间通信之UDS详解》文章介绍了Unix域套接字(UDS)的使用方法,这是一种在同一台主机上不同进程间通信的方式,UDS支持三种套接字类型:SOCK_STREAM、SOCK_DGRA... 目录基础概念本机进程间通信socket实现AF_INET数据收发示意图AF_Unix数据收发流程图A

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

Ubuntu 22.04 服务器安装部署(nginx+postgresql)

《Ubuntu22.04服务器安装部署(nginx+postgresql)》Ubuntu22.04LTS是迄今为止最好的Ubuntu版本之一,很多linux的应用服务器都是选择的这个版本... 目录是什么让 Ubuntu 22.04 LTS 变得安全?更新了安全包linux 内核改进一、部署环境二、安装系统

从零教你安装pytorch并在pycharm中使用

《从零教你安装pytorch并在pycharm中使用》本文详细介绍了如何使用Anaconda包管理工具创建虚拟环境,并安装CUDA加速平台和PyTorch库,同时在PyCharm中配置和使用PyTor... 目录背景介绍安装Anaconda安装CUDA安装pytorch报错解决——fbgemm.dll连接p

linux打包解压命令方式

《linux打包解压命令方式》文章介绍了Linux系统中常用的打包和解压命令,包括tar和zip,使用tar命令可以创建和解压tar格式的归档文件,使用zip命令可以创建和解压zip格式的压缩文件,每... 目录Lijavascriptnux 打包和解压命令打包命令解压命令总结linux 打包和解压命令打