我想在运行时知道 C++ 程序是否已在启用 OPENMP 的情况下编译。有些事情 OPENMP 2.0 无法轻易做到,所以我想用另一种机制来伪造它们。但是,如果代码是在禁用 OPENMP 的情况下编译的,那么我还想禁用其他机制并串行运行所有内容。
例如
if( isOpenMPEnabled() )
runFakeParallelAlgorithm();
else
runSequentialAlgorithm();
Run Code Online (Sandbox Code Playgroud)
我怎样才能实施
bool isOpenMPEnabled()
Run Code Online (Sandbox Code Playgroud)
我应该说我们正在使用 OPENMP 2.0
小智 7
如果 /openmp 标志已传递给编译器并且编译成功,则会添加一个预处理器指令,您可以使用它在运行时检查这一点:
#if defined(_OPENMP)
#pragma omp ...
#endif
Run Code Online (Sandbox Code Playgroud)