编译cpp文件时,代码不是并行的,但c是并行的

Code is not paralleled when compiling cpp file, but c is paralleled

本文关键字:并行 代码 cpp 文件 编译      更新时间:2023-10-16

我正在运行这里的示例,它允许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的组合根本不起作用,还是我错过了什么?

我运行Ubuntu 14.04与Matlab 2014a和GCC 4.8.4。Mex编译器抱怨不支持的GCC版本(它支持GCC 4.7.x),但似乎无论如何都可以编译。这会是个问题吗?

指出,为了编译一个c++文件,我必须使用CXXFLAGS而不是CFLAGS。

运行
mex mex_sum_openmp.cpp CXXFLAGS="$CXXFLAGS -fopenmp" LDFLAGS="$LDFLAGS -fopenmp"

解决了问题