我正在从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/

10-11 15:45
查看更多