我正在从here运行示例,该示例允许Matlab运行C函数,在其中执行一些并行处理(在OpenMP的支持下)。
编译:
mex mex_sum_openmp.c CFLAGS="\$CFLAGS -fopenmp" LDFLAGS="\$LDFLAGS -fopenmp"
在Matlab中:
>> tic;mex_sum_openmp(x);toc
Elapsed time is 0.186795 seconds.
示例可以正确运行,但是如果我将文件扩展名重命名为cpp,则代码不会并行。
编译:
mex mex_sum_openmp.cpp CFLAGS="\$CFLAGS -fopenmp" LDFLAGS="\$LDFLAGS -fopenmp"
在Matlab中:
>> tic;mex_sum_openmp(x);toc
Elapsed time is 0.466988 seconds.
CPP + OpenMP + MEX的组合根本无法使用,还是我错过了一些东西?
我使用Matlab 2014a和GCC 4.8.4运行Ubuntu 14.04。 Mex编译器抱怨不支持GCC版本(它支持GCC 4.7.x),但似乎仍然可以编译。这可能是个问题吗?
最佳答案
如@ n.m。指出为了编译c++文件,我必须使用CXXFLAGS而不是CFLAGS。
跑步
mex mex_sum_openmp.cpp CXXFLAGS="\$CXXFLAGS -fopenmp" LDFLAGS="\$LDFLAGS -fopenmp"
解决了问题。
关于c++ - 编译cpp文件时代码未并行,但c已并行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31427069/