Fortran:在Linux下配置并调用mkl库(前提:安装好了oneAPI)

最近借用了师兄的服务器,得在Linux下运行fortran。今天花了点时间找资料,配置成功了。在这里记录一下怎样在Linux下配置mkl库。首先,在装好oneAPI的情况下,oneAPI是自动包含mkl库的,无需另外下载。要是用mkl库,只需要配置环境变量即可!具体操作请看下文。

配置环境变量分为两步。

第一步:找到mkl库,以及mkl库中intel64的位置。具体操作如下:

先进入终端,使用whereis ifort命令找到oneAPI的安装路径:

 从上面可以看到oneAPI的安装路径,这样我们就可以使用cd /opt/intel/oneapi命令切换到oneapi目录下,再使用ls命令看看oneapi下装了哪些文件:

 可以看到oneAPI里确实有mkl,接着使用cd /opt/intel/oneapi/mkl命令进入mkl,再使用ls命令看看mkl有什么:

 再使用cd /opt/intel/oneapi/mkl/2022.0.2进入2022.0.2,再使用ls命令看看这个文件夹有什么:

 

找到了lib文件夹,我们使用cd /opt/intel/oneapi/mkl/2022.0.2/lib和ls命令看看lib里面有啥:

 好了,终于找到我们需要的interl64了!它的位置是/opt/intel/oneapi/mkl/2022.0.2/lib/intel64。

第一步就完成了,找到了mkl库中intel64的位置。

然后是第二步:我们需要在主目录下的bashrc里添加我们第一步找到的路径:

使用cd ~命令切换到主目录,再使用ls -a命令查看主目录下的所有文件(包括隐藏文件):

 我们可以看到有个 bashrc文件,我们使用vim ~/.bashrc命令进入bashrc文件,然后在最后面按以下格式添加我们第一步找到的mkl中intel64的路径:

export LD_LIBRARY_PATH=/opt/intel/oneapi/mkl/2022.0.2/lib/intel64:$LD_LIBRARY_PATH

 然后保存并退出vim,再使用一下source ~/.bashrc命令,第二步就完成了!

终于,mkl的环境变量配置成功了!

接下来简单记录一下怎样编译并且运行需要调用mkl的fortran文件。

假设name1.f90需要调用mkl,那么为了方便可以写一个makefile文件对其进行编译:

使用vim name2进入文本编辑,将以下内容添加到name2(此处参考文末链接):

mkllib=/opt/intel/oneapi/mkl/2022.0.2/lib/intel64
mklinc=/opt/intel/oneapi/mkl/2022.0.2/include
FCCFLAG= -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lmkl_lapack95_lp64 -liomp5 -lpthread
FCC = ifort
name1: name1.o
        $(FCC) -o a a.o -I$(mklinc) -L$(mkllib) $(FCCFLAG) -g
name1.o: name1.f90
        $(FCC) name1.f90 -c -g -qmkl
clean: 
        rm -rf *.o name1

你需要把上述代码第一行和第二行的路径改成你的安装路径(查找步骤可以参照文章开头的第一步),并且把name1改成你的文件名。注意上述代码倒数第1、3、5行的空位使用Tab键打,不是用空格。如果需要使用并行计算将上述代码倒数第三行改成如下:

$(FCC) name1.f90 -c -g -qmkl -qopenmp

写好这个vim文本后,保存退出,然后使用make -f name2命令make一下,就编译好了。

然后使用ls命令查看,你会看到这时生成了一个名为name1的可执行文件:

然后使用./name1即可运行

注意,如果你重复make该文本时,会出现:

 这时你只需要使用make -f name2 clean(这是因为name2文本最后加上了clean),再make -f name2就行。

 参考:
Linux和windows下,安装intel fortran编译器及MKL(Intel Math Kernel Library)的环境配置问题 - 知乎 (zhihu.com)icon-default.png?t=M276https://zhuanlan.zhihu.com/p/353582430

MKL程序编译与连接:Lapack篇_weixin_30451709的博客-CSDN博客icon-default.png?t=M276https://blog.csdn.net/weixin_30451709/article/details/95318367?utm_medium=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v29-17.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v29-17.nonecase

你可能感兴趣的:(oneapi)