在运行时检测 OPENMP 是否正在 C++ 程序中使用
Detect at runtime if OPENMP is being used in a C++ program
我想在 运行 时知道是否在启用 OPENMP 的情况下编译了 C++ 程序。有些事情 OPENMP 2.0 不能轻易做到,所以我想用另一种机制来伪造它们。但是,如果代码是在禁用 OPENMP 的情况下编译的,那么我还想禁用我的其他机制和 运行 串行的所有内容。
例如
if( isOpenMPEnabled() )
runFakeParallelAlgorithm();
else
runSequentialAlgorithm();
我该如何实现
bool isOpenMPEnabled()
我应该说我们使用的是 OPENMP 2.0
如果 /openmp 标志被传递给编译器并且编译成功,将添加一个预处理器指令,您可以使用它在运行时进行检查:
#if defined(_OPENMP)
#pragma omp ...
#endif
我想在 运行 时知道是否在启用 OPENMP 的情况下编译了 C++ 程序。有些事情 OPENMP 2.0 不能轻易做到,所以我想用另一种机制来伪造它们。但是,如果代码是在禁用 OPENMP 的情况下编译的,那么我还想禁用我的其他机制和 运行 串行的所有内容。
例如
if( isOpenMPEnabled() )
runFakeParallelAlgorithm();
else
runSequentialAlgorithm();
我该如何实现
bool isOpenMPEnabled()
我应该说我们使用的是 OPENMP 2.0
如果 /openmp 标志被传递给编译器并且编译成功,将添加一个预处理器指令,您可以使用它在运行时进行检查:
#if defined(_OPENMP)
#pragma omp ...
#endif