因工作需要,需要在linux系统配置多个不同环境的库,需要使用environment-modules工具管理环境变量,为保持配置方法的一致性,也使用modulefile文件加载Intel oneAPI软件。

以下参考自 https://software.intel.com/content/www/us/en/develop/documentation/oneapi-programming-guide/top/oneapi-development-environment-setup/use-modulefiles-with-linux.html

使用Linux的modulefile配置oneAPI开放环境

大多数组件工具文件夹包含一个或多个modulefile脚本,它们配置该组件环境变量。modulefile可以替代setvars.sh脚本去设置环境变量。

由于moudlefile不支持参数,对于支持多个配置(如32位和64位)的oneAPI工具和库,有多个modulefile

注意:Intel oneAPI工具提供的modulefile与Tcl Environment Modules (Tmod)和Lua Environment Modules (Lmod)兼容。以下是支持的最低版本

Tmod 4.1
Tcl version 8.4
Lmod version 8.2.10 输入以下命令,查看测试系统安装了哪个版本的文件:
module --version
每一个modulefile都可以自动验证系统的Tcl版本是否支持

oneAPI modulefile脚本存放在每个组件文件夹的moudulefiles文件夹下。例如,对于默认安装,ipp的modulefile脚本存放在 /opt/intel/ipp/latest/modulefiles/ 目录。

由于oneAPI组件文件夹在磁盘中的组织方式,直接在安装oneAPI模块文件的位置使用它们可能会很困难。oneAPI安装文件夹中提供了一个特殊的modulefiles-setup.sh脚本,以便于使用oneAPI modulefile。在默认安装中,该安装脚本位于此处:/opt/intel/oneapi/modulefiles-setup.sh

modulefile-setup.sh脚本查找oneAPI安装中的所有modulefile脚本,并将它们组织到单个文件夹目录中。这些文件夹是为包含一个或多个ModuleFile的每个已安装oneAPI组件命名的。

每个名为文件夹的组件都包含指向该oneAPI组件提供的所有modulefile的符号链接。这些符号链接被组织为版本化的modulefile文件。每个组件文件夹都包含(至少)一个“最新”版本的modulefile,默认情况下,在加载组件modulefile而不指定版本标签时将选中该文件。

oneAPI modulefiles顶级目录的默认名称为modulefiles,位于oneAPI安装文件夹中。例如:/opt/intel/oneapi/modulefile

创建modulefiles目录

运行modulefiles-setup.sh脚本

etvars.sh脚本去设置环境变量。

由于moudlefile不支持参数,对于支持多个配置(如32位和64位)的oneAPI工具和库,有多个modulefile:

注意:默认情况下,modulefiles-setup.sh脚本在oneAPI工具安装的目录下创建了一个名为modulefiles的文件夹。如果你的oneAPI安装文件夹不具有写权限,使用--output-dir=<path-to-folder>选项去在一个具有写权限的位置创建modulefiles文件夹。输入modulefiles-setup.sh --help查看更多信息。

在modulefiles-setup.sh脚本运行后,在modulefiles文件夹下创建了如下组织形式的文件。

[oneapi_root]
- [modulefiles] - - [compiler] - - - [1.0] -> [oneapi_root/compiler/1.0/modulefiles/compiler] # symlink named 1.0 points to compiler modulefile - - [compiler32] - - - [1.0] -> [oneapi_root/compiler/1.0/modulefiles/compiler32] # symlink named 1.0 points to compiler32 modulefile - - [ipp] - - - [1.1] -> [oneapi_root/ipp/1.1/modulefiles/ipp] - - - [1.2] -> [oneapi_root/ipp/1.2/modulefiles/ipp] - - [ipp32] - - - [1.1] -> [oneapi_root/ipp/1.1/modulefiles/ipp32] - - - [1.2] -> [oneapi_root/ipp/1.2/modulefiles/ipp32] etc…

现在,可以将MODULEFILESPATH进行更新,从而指向新的modulefiles目录。

在你的系统中安装module工具

以下指导可以帮助你迅速熟悉Ubuntu*环境下的Environment Modules 工具。想要关于module工具安装的完整细节,参见http://modules.sourceforge.net/.

$ sudo apt update
$ sudo apt install tcl
$ sudo apt install environment-modules

确保本地的tclsh的版本足够新(截止文章写的时候,需要8.4以上的版本)

$ tclsh
% puts $tcl_version
8.6
% exit

测试module安装,module别名

$ source /usr/share/modules/init/sh
$ module
注意:Bourne兼容Shell的初始化应使用上面显示的源命令。/usr/share/modules/init/文件夹中提供了其他特定shell的init 脚本。有关更多详细信息,请参阅man模块中的该文件夹和初始化部分。

包括sourcing module别名初始化脚本 ( .../modules/init/sh) 在以下设置脚本中,用以确保module命令通常可用。之后,系统可以准备好使用module命令了。

modulefiles-setup.sh脚本入门

以下例子均假设你已经:
  • 在Linux开发系统中安装了tclsh
  • 在系统中安装了Environment Modules工具 (i.e., module)
  • 已经sourced了.../modules/init/sh (或等价的) module 初始化命令
  • 安装了oneAPI开发所需的oneAPI工具包
$ cd <oneapi-root-folder>        # cd to the oneapi_root install directory
$ ./modulefiles-setup.sh # run the modulefiles setup script
$ module use modulefiles # use the modulefiles folder created above
$ module avail # will show tbb/X.Y, etc.
$ module load tbb # loads tbb/X.Y module
$ module list # should list the tbb/X.Y module you just loaded
$ module unload tbb # removes tbb/X.Y changes from the environment
$ module list # should no longer list the tbb/X.Y env var module

在unload步骤之前,使用env命令检查环境并查找您加载的modulefile所做的更改。例如,如果加载了tbb modulefile,该命令将显示该modulefile所做的一些环境更改(检查modulefile以查看它将进行的所有更改): 

 

$ env | grep -i "intel"
注意:modulefile是一个脚本,但它不需要设置“x”(可执行)权限,因为它由最终用户安装和维护的“模块”解释器加载和解释。oneAPI产品的安装不包括modulefile解释器。它必须单独安装。同样,ModuleFile不要求设置“w”权限,但必须可读(理想情况下,为所有用户设置“r”权限)。

 

Versioning

oneAPI工具包安装程序将version文件夹应用于各个oneAPI工具和库,其形式为每个工具或库的顶级目录中的版本化的子目录。这些版本化组件文件夹用于创建版本化模块文件。这就是modulefiles-setup.sh脚本的基本功能;它将在顶级$(ONEAPI_ROOT)/modulefiles文件夹中创建的符号链接组织为<modulefile name>/version,因此在使用module命令时,可以按版本引用相应的modulefile。

$ module avail
---------------- modulefiles -----------------
ipp/1.1 ipp/1.2 compiler/1.0 compiler32/1.0

多个modulefiles

一个工具或库可以在其modulefiles文件夹中提供多个modulefiles。每个模块都成为可加载的模块。将根据提取它们的零部件文件夹为它们分配一个版本。

 

了解使用oneAPI时如何编写模块文件

modulefiles-setup.sh脚本使用符号链接将所有可用的工具和库modulefiles收集到oneAPI的一个顶级modulefiles文件夹中。这意味着不会移动或触摸oneAPI的ModuleFile。作为这种方法的结果,${ModulesCurrentModulefile}变量指向每个modulefile的符号链接,而不是指向各个安装文件夹中的实际modulefile。因此,由于符号链接,这些模块文件无法引用模块文件的组件文件夹中的其他文件夹或文件。

因此,oneAPI的每个modulefile都使用如下语句以获取对相应安装目录中原始modulefile的引用:

[ file readlink ${ModulesCurrentModulefile} ]

为了更好地理解,请查看安装附带的模块文件。大多数注释包括解释如何解析对真实文件的符号链接引用,以及解析版本号(和版本目录)。它们还包括检查以确保安装的TCL是适当的版本级别,并包括检查以防止您无意中加载同一modulefile的两个版本。

通过ModuleFile使用module load命令

几个modulefile使用module load命令来确保也加载了所有必需的依赖模块。没有尝试指定这些依赖ModuleFile的版本。这意味着,在加载需要依赖模块的模块之前,可以手动预加载特定的依赖模块。如果未预加载从属模块,则会加载最新的可用版本。
这是设计的,因为它提供了控制环境的灵活性。例如,您可能已经安装了一个库的更新版本,您希望根据以前版本的编译器进行测试。也许更新后的库有一个bug修复,而您对更改构建中任何其他库的版本不感兴趣。如果依赖ModuleFile被硬编码为需要此库的特定依赖版本,则无法执行此类测试。

注意:如果无法满足从属模块加载,则当前加载的模块文件将被终止,并且不会对您的环境进行任何更改。

Intel oneAPI 环境变量设置的更多相关文章

  1. jdk1.8.0环境变量设置

    jdk1.8.0环境变量设置 1.jdk安装完毕 打开如下链接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloa ...

  2. SQL*Plus环境变量设置浅析

    SQL*Plus的使用环境是可以通过login.sql 或 glogin.sql脚本来设置的,可能很多初学者或不习惯使用SQL*Plus的老鸟都不知道.因为在如今UI工具(Toad.PL/SQL De ...

  3. [Java] Tomcat环境变量设置

    @echo off title Tomcat环境变量设置 color 0a set /p inputTH=D:\Work\024_Tomcat if /i "%inputTH%"= ...

  4. java环境变量设置

    java环境变量设置 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Program Files\Ja ...

  5. AIX系统的环境变量设置

    AIX系统的环境变量设置 用户环境的定义是通过设置环境变量来实现的.AIX系统主要使用两大类profile文件来定义用户环境.一类是用来为所有用户定制环境,另一类是为个人定义自己的环境. 登录时,sh ...

  6. tomcat配置及使用 环境变量设置

    Tomcat的配置及测试: 第一步:下载tomcat,然后解压到任意盘符 第二步:配置系统环境变量 我这里是tomcat5.5,解压到的D盘 (路径为: D:\Program Files\tomcat ...

  7. jdk-tomcat环境变量设置

    1.export命令直接在shell下设置 export JAVA_HOME=/home/yn4a/jdk1.6.0_16export PATH=$JAVA_HOME/bin:$PATHexport ...

  8. 【转】linux环境变量设置

    1. 显示环境变量HOME $ echo $HOME /home/terry 2. 设置一个新的环境变量WELCOME $ export WELCOME="Hello!" $ ec ...

  9. linux 学习:环境变量设置

    一.临时环境变量 临时环境变量,只对当前打开的shell生效,shell关闭后,环境变量失效. 设置方法一: 分两步 MYPARA=hello export MYPARA 设置方法二:一步完成 exp ...

  10. 【Linux】环境变量设置

    在Windows中环境变量设置是非常easy的事情.例如以下图.仅仅要右键我的电脑->高级系统设置->环境变量,选择Path之后,点击"编辑"就能够输入你要加入的内容. ...

随机推荐

  1. 极速编程体验:VsCode和webstorm插上ChatGPT

    ChatGPT走入了千家万户,而她最适合的用法之一就是进行编程辅助,特别是对一些常规开发,有比较好的引导作用. 很多主流编辑器都有相关的插件支持接入ChatGPT,而VsCode和webstorm是我 ...

  2. video.js没有显示已播放时间、总时间?

    我们在JS中设置了显示两个时间,但是没有显示. 经过查找,有的博文说或许是JS版本太高?我们没有换JS.另一篇博文给了我们启发,修改下样式就好了,我们一看,真的是样式问题 都改成block后就看到时间 ...

  3. vscode的python开发环境搭建,环境变量支持终端命令行(执行当前

    vscode的python开发环境设置 安装vscode,这里不介绍了 安装插件 在${workspaceFolder}的目录下,新建.vscode文件夹(或者修改一下配置,也可以自动生成该文件夹) ...

  4. Python语言课程实验报告

    Python语言基础实验 一.实验目的和要求 1.了解Python的基本数据类型: 2.学习了解变量的定义与使用: 3.学会使用Python运算符: 4.掌握数据类型的实际应用. 二.实验环境 软件版 ...

  5. centos6 编译安装 mysql5.6----------centos7编译安装MySQL5.7

     centos6 编译安装 mysql5.6 安装依赖包 yum install -y ncurses-devel libaio-devel 安装cmake编译工具 cmake 定制功能:存储引擎.字 ...

  6. Mybaties中的报错 Tag name expected解决

    有些时候一些小小的报错可能会没有注意到,等到报错的时候才发现,一个小小的细节也是很重要的,毕竟我们是bug生产员 来看报错的代码 when round((UNIX_TIMESTAMP(DATE_ADD ...

  7. rocketmq-exporter部署(干货)

    简单介绍 rocketmq_exporter是prometheus提供的用于监控rocketmq运行状态的exporter 环境 系统 版本 CentOS 7.6.1810 (Core) CPU/内存 ...

  8. python_异常处理(try except)

    1,异常捕获 异常捕获的字段为python解释报错的最后一行的第一个单词.使用try方法,程序报错时,可以使用except方法匹配报错的异常关键字,继续except下方定义的代码,从而保证代码可以正常 ...

  9. IDEA隐藏.idea

  10. javase_note

    我上班摸鱼重新学习java基础做的笔记,从面向对象开始 面向对象基础 类与对象 人类.鸟类.鱼类...所谓类,就是对一类事物的描述 对象是某一类事物实际存在的每个个体,因此也称为实例 类是抽象概念,对 ...