Linux下编译安装SuperLU

news2024/11/27 9:51:03

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/null

echo "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.list

sudo 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.so
        linux-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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stirling-PDF:基于Web的开源PDF处理工具

PDF文件进行各种各样的操作,比如合并、拆分、加密、解密、旋转、压缩等等,功能超全,而且开源免费,简直是神器! GitHub - Stirling-Tools/Stirling-PDF: #1 Locally hosted web application that allows you to perfor…

【JAVA开源】基于Vue和SpringBoot的历史学习网站

本文项目编号 T 004 ,文末自助获取源码 \color{red}{T004,文末自助获取源码} T004,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

IDEA主题的设置

目录 一、更换皮肤: 二、设置背景图片: 1.点击 File -> Settings ; 2.选择 Appearance & Behavior -> Appearance ; 一、更换皮肤: 1. Theme: 点击下拉框打开; 白色皮肤: inteIIiJ light Windows 10 Lig…

VirtualLab Fusion Installer-7.6.1.18 安装包 永不过期 永久使用 下载

下载地址(资源制作整理不易,下载使用需付费,不能接受请勿浪费时间下载) 链接:https://pan.baidu.com/s/14yJGZAosK_ftJhHD0D4VHA?pwd00zn 提取码:00zn

Lua:条件断点

如果有很多方式都要经过这个函数,但是你只需要满足其中例如参数等于Test的这一种,可以在断点处右键点击编辑断点打上条件断点,只有参数EventName等于Test的才会断上。

如何打造高校实验室预约系统?Java SpringBoot助力高效管理,MySQL存储数据,Vue前端展现,四步实现学生轻松预约!

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

【机器学习-神经网络】循环神经网络

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…

Graylog配置用户权限以及常用搜索语法

文章目录 一、Graylog配置用户管理1、用户创建2、角色权限管理 二、搜索语法 基于Docker搭建Graylog的具体步骤: https://blog.csdn.net/weixin_44876263/article/details/141638739?spm1001.2014.3001.5502 一、Graylog配置用户管理 1、用户创建 2、角色权限管理…

Linux--实现简易shell

文章目录 shell定义和功能myshell.cGetCwd()GetUsrName()GetHostName()MakeCommandLineAndPrint()GetUserCommand()SplitCommand()Die()ExecuteCommand()GetHome()Cd()CheckBuildin()CheckRedir()myshell.c完整代码 makefile测试函数和进程之间的相似性 Shell是一个功能强大的工…

LVS之net模式实验

总结: lvs #配置环境,两个网卡 [rootlvs ~]# cd /etc/NetworkManager/system-connections/ [rootlvs system-connections]# ls ens160.nmconnection eth0.nmconnection eth1.nmconnection [rootlvs system-connections]# vim eth0.nmconnection [co…

华为OD机试 - 猜数字 - 穷举搜索(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(E卷D卷A卷B卷C卷)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加…

【RabbitMQ之一:windows环境下安装RabbitMQ】

目录 一、下载并安装Erlang1、下载Erlang2、安装Erlang3、配置环境变量4、验证erlang是否安装成功 二、下载并安装RabbitMQ1、下载RabbitMQ2、安装RabbitMQ3、配置环境变量4、验证RabbitMQ是否安装成功5、启动RabbitMQ服务(安装后服务默认自启动) 三、安…

Vue2转Vue3学习历程

选项式API>组合式API vue3和vue2的差别就是选项式api改为组件式api,就是以前vue2要定义data、method、mounted,在vue3就变为了更模块化的,并且我感觉vue3设计思路更多是以调用方法的方式实现,比如我实现一个方法,并…

C语言深入理解指针2

1.数组名的理解 #include <stdio.h> int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf("&arr[0] %p\n", &arr[0]);printf("arr %p\n", arr);return 0; }可以发现数组名和数组首元素地址的打印结果一样&#xff0c;因此&#xf…

研究生深度学习入门的十天学习计划------第七天

第7天&#xff1a;自然语言处理&#xff08;NLP&#xff09;中的深度学习 目标&#xff1a; 掌握自然语言处理的基础知识与深度学习模型&#xff0c;理解如何应用RNN、LSTM、Transformer等模型处理文本数据。 7.1 自然语言处理的基础概念 自然语言处理&#xff08;NLP&#…

Vue学习笔记 二

4、Vue基础扩展 4.1 插槽 组件的最大特性就是复用性,而用好插槽能大大提高组件的可复用能力在Vue中插槽是很重要的存在,通过插槽,我们可以把父组件中指定的DOM作用到子组件的任意位置,后面我们坐项目用到的组件库比如element-ui,vant-ui都频繁用到的插槽,Vue的插槽主要有…

【hot100篇-python刷题记录】【在排序数组中查找元素的第一个和最后一个位置】

R7-二分查找篇 目录 双指针 二分优化 ps: 思路&#xff1a; 双指针 直接用双指针回缩啊 class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:ret[-1,-1]left,right0,len(nums)-1while left<len(nums):if nums[left]target:ret[0]…

可解释性与公平性的关系

可解释模型更有可能公平的三个原因 可解释性和公平性似乎是相辅相成的。可解释性涉及理解模型如何进行预测。公平性涉及理解预测是否偏向某些群体。负责任的人工智能框架和机器学习会议始终将这两个特征一起提及。然而&#xff0c;可解释性并不一定意味着公平。 话虽如此&…

[米联客-XILINX-H3_CZ08_7100] FPGA程序设计基础实验连载-26浅谈XILINX FIFO的基本使用

软件版本&#xff1a;VIVADO2021.1 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用 XILINX A7/K7/Z7/ZU/KU 系列 FPGA 实验平台&#xff1a;米联客-MLK-H3-CZ08-7100开发板 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 http…

9、Django Admin优化查询

如果你的Admin后台中有很多计算字段&#xff0c;那么你需要对每个对象运行多个查询&#xff0c;这会使你的Admin后台变得非常慢。要解决此问题&#xff0c;你可以重写管理模型中的get_queryset方法使用annotate聚合函数来计算相关的字段。 以下示例为Origin模型的中ModelAdmin…