将OpenMP与Matlab mex文件链接

时间:2016-05-27 20:06:27

标签: matlab compilation fortran openmp mex

我试图用OpenMP编译和链接一些Fortran文件,以便在Matlab中使用mex编译器。目前我在Makefile中有编译和链接:

MEX=/usr/local/matlab/bin/mex
FORTRAN = gfortran
FFLAGS = -c -fpic -O3  -fopenmp
MEXLIB = -fopenmp

OBJS=\
file.o\
file2.o\

all: file1 file2 mex

mex: a.out $(OBJS)
$(MEX) -O a.out $(OBJS) $(MEXLIB)

file1: file1.f
$(FORTRAN) $(FFLAGS) file1.f

file2: file2.f
$(FORTRAN) $(FFLAGS) file2.f

编译器标志位于FFLAGS,链接标志位于MEXLIB。当我使用make all运行时,我收到错误:

Unknown MEX argument '-fopenmp'. 

这是一个链接问题,因为如果我从-fopenmp删除MEXLIB,则makefile不会出现任何错误(但代码似乎并不是并行运行)。我已经被告知here -fopenmp是要使用的正确链接标记。有没有人对确切的问题有任何想法?

编辑:正如下面的评论中指出的那样,我的问题与已经回答的其他问题相似,不同之处在于我尝试使用Makefile。

按照以下评论中的说明,我尝试了Matlab控制台

mex -v file1.f file2.f FFLAGS="\$FFLAGS -fopenmp" LDFLAGS="\$LDFLAGS -fopenmp" 

(注意FFLAGS而不是CFLAGS)。这有效。有没有办法将它合并到我的Makefile中?

0 个答案:

没有答案