我已经安装了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
}