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

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

我正在 运行使用 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.

示例 运行s 是正确的,但是如果我将文件扩展名重命名为 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 组合根本不起作用,还是我遗漏了什么?

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

作为@n.m。指出为了编译 c++ 文件我必须使用 CXXFLAGS 而不是 CFLAGS。

运行

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

解决了问题。