使用和不使用fopenmp标志编译c ++代码

时间:2016-08-10 09:10:21

标签: c++ fortran openmp

我安装了C ++和Fortran编译器并测试了(C ++)程序 (串行和并行版本)。

在没有启用$!omp选项的情况下编译(并行化)代码时,Fortran中的

应该在(默认)串行模式下编译代码

但是在C ++中我得到的错误就像 对$!omp id = omp_get_thread_num()

的未定义引用

但是在Fortran中编译没有-fopenmp标志的代码时,它会忽略任何以r开头的代码,如

cell

在C ++中是否有类似的选项?

1 个答案:

答案 0 :(得分:2)

您可以使用_OPENMP定义保护C / C ++代码。这样,您可以避免在应用程序未链接到OpenMP运行时时引入对OpenMP运行时的调用。

例如,您可以拥有以下代码

void foo (void)
{
#ifdef _OPENMP
   printf ("I have been compiled with OpenMP support\n");
#else
   printf ("I have been compiled without OpenMP support\n");
#endif
}