启用分析时禁用 OpenMP
Disabling OpenMP when Profiling Enabled
在分析我的 C 代码时,我想 disable/reduce OMP 线程数为 1。经过简短搜索后,我找到了 question。因此,我决定做类似
的事情
#ifdef foo
#define omp_get_thread_num() 0
#endif
其中 foo
是一个宏,如果在使用 GCC 编译时设置了 -pg
标志,则该宏为真。
然后我的问题是,foo
的值是多少?此方法现在是否允许我获得合理的分析信息(通过强制 OpenMP 仅使用一个线程)。
更改 OpenMP 线程数的最简单方法是在程序启动期间使用环境变量 OMP_NUM_THREADS。要获得 a.out 的单线程执行:
$> OMP_NUM_THREADS=1 ./a.out
这应该是 return 用于分析的合理数据。如果您完全删除 OpenMP,您的应用程序将有所改变,因此分析可能不那么相关。
在分析我的 C 代码时,我想 disable/reduce OMP 线程数为 1。经过简短搜索后,我找到了 question。因此,我决定做类似
的事情#ifdef foo
#define omp_get_thread_num() 0
#endif
其中 foo
是一个宏,如果在使用 GCC 编译时设置了 -pg
标志,则该宏为真。
然后我的问题是,foo
的值是多少?此方法现在是否允许我获得合理的分析信息(通过强制 OpenMP 仅使用一个线程)。
更改 OpenMP 线程数的最简单方法是在程序启动期间使用环境变量 OMP_NUM_THREADS。要获得 a.out 的单线程执行:
$> OMP_NUM_THREADS=1 ./a.out
这应该是 return 用于分析的合理数据。如果您完全删除 OpenMP,您的应用程序将有所改变,因此分析可能不那么相关。