在分析我的C代码时,我想禁用/减少OMP线程的数量为1.经过简短的搜索,我发现了这个question。因此我决定做类似
的事情#ifdef foo
#define omp_get_thread_num() 0
#endif
其中foo
是一个宏,如果在使用GCC编译时设置了-pg
标志,则为true。
我的问题是,foo
的价值是什么,这个方法现在允许我获得合理的分析信息(通过强制OpenMP只使用一个线程)。
答案 0 :(得分:3)
更改OpenMP的线程数的最简单方法是在程序启动期间使用环境变量OMP_NUM_THREADS。要获得a.out的单线程执行:
$> OMP_NUM_THREADS=1 ./a.out
这应该返回用于分析的合理数据。如果您完全删除了OpenMP,您将在某种程度上更改您的应用程序,因此分析可能不那么相关。