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

相关文章

jdk1.8的Jenkins安装配置实践

《jdk1.8的Jenkins安装配置实践》Jenkins是一款流行的开源持续集成工具,支持自动构建、测试和部署,通过Jenkins,开发团队可以实现代码提交后自动进行构建、测试,并将构建结果分发到测... 目录Jenkins介绍Jenkins环境搭建Jenkins安装配置Jenkins插件安装Git安装配

python版本切换工具pyenv的安装及用法

《python版本切换工具pyenv的安装及用法》Pyenv是管理Python版本的最佳工具之一,特别适合开发者和需要切换多个Python版本的用户,:本文主要介绍python版本切换工具pyen... 目录Pyenv 是什么?安装 Pyenv(MACOS)使用 Homebrew:配置 shell(zsh

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

windows下安装Nginx全过程

《windows下安装Nginx全过程》文章介绍了HTTP和反向代理服务器的概念,包括正向代理和反向代理的区别,并详细描述了如何安装和配置Nginx作为反向代理服务器... 目录概念代理正向代理反向代理安装基本属性nginx.conf查询结构属性使用运行重启停止总结概念是一个高性能的HTTP和反向代理we

Linux内核定时器使用及说明

《Linux内核定时器使用及说明》文章详细介绍了Linux内核定时器的特性、核心数据结构、时间相关转换函数以及操作API,通过示例展示了如何编写和使用定时器,包括按键消抖的应用... 目录1.linux内核定时器特征2.Linux内核定时器核心数据结构3.Linux内核时间相关转换函数4.Linux内核定时

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

Linux下屏幕亮度的调节方式

《Linux下屏幕亮度的调节方式》文章介绍了Linux下屏幕亮度调节的几种方法,包括图形界面、手动调节(使用ACPI内核模块)和外接显示屏调节,以及自动调节软件(CaliseRedshift和Reds... 目录1 概述2 手动调节http://www.chinasem.cn2.1 手动屏幕调节2.2 外接显