启用分析时禁用OpenMP

时间:2015-02-28 14:46:34

标签: c macros profiling openmp

在分析我的C代码时,我想禁用/减少OMP线程的数量为1.经过简短的搜索,我发现了这个question。因此我决定做类似

的事情
#ifdef foo
    #define omp_get_thread_num() 0
#endif

其中foo是一个宏,如果在使用GCC编译时设置了-pg标志,则为true。

我的问题是,foo的价值是什么,这个方法现在允许我获得合理的分析信息(通过强制OpenMP只使用一个线程)。

1 个答案:

答案 0 :(得分:3)

更改OpenMP的线程数的最简单方法是在程序启动期间使用环境变量OMP_NUM_THREADS。要获得a.out的单线程执行:

$> OMP_NUM_THREADS=1 ./a.out

这应该返回用于分析的合理数据。如果您完全删除了OpenMP,您将在某种程度上更改您的应用程序,因此分析可能不那么相关。