ali*_*ali 5 c++ fortran openmp
我已经安装了 C++ 和 Fortran 编译器并测试了 (C++) 程序(串行和并行版本)。
在 Fortran 中编译(并行化)代码而不启用该-openmp选项时应以(默认)串行模式编译代码
但在 C++ 中,我收到了诸如未定义引用之类的错误 omp_get_thread_num
但是在 Fortran 中,当您编译没有 -fopenmp 标志的代码时,它会忽略任何以$!omp类似开头的代码
$!omp id = omp_get_thread_num()
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)