编译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"
解决了问题。
我正在 运行使用 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"
解决了问题。