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

我已经安装了C和Fortran编译器并测试了(C)程序

(串行和并行版本).

在Fortran中编译(并行化)代码时不启用-openmp选项应该在(默认)串行模式下编译代码

但在C中我得到的错误就像
未定义的对omp_get_thread_num的引用

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

$!omp id = omp_get_thread_num()

在C中有这样的选择吗?

最佳答案 您可以使用_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
}
点赞