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就行。
更多推荐
所有评论(0)