获取当前openmp线程池大小

时间:2014-10-23 15:34:24

标签: openmp

有没有办法在运行时确定当前的OpenMP线程池大小是多少?

我指的是OpenMP产生但尚未获得的实际线程数,不是允许的最大线程数(omp_get_num_procs),也不是默认情况下将使用的线程数。一个新的并行区域(omp_get_num_threads)。

动机:我有一个Python库,可以为某些计算分配子进程,包括一些通过扩展模块在引擎盖下使用OpenMP的库。如果有人在分叉之前调用任何基于OpenMP的函数,则该过程将停止。这是因为OpenMP isn't fork-safe:如果使用fork并且在使用OpenMP功能后使用#34},则进程将挂起。"我希望这个分叉库能够自动检测是否为时已晚,因为已经使用了OpenMP功能。在这样的检测中,它将引发异常而不是继续和挂起。想到的最佳方法是检测OpenMP线程池是否已经启动,并且不清楚最好的方法是什么。归结为pstack并抓取libgomp.so的堆栈跟踪感觉太过苛刻,我不知道它是否适用于其他OpenMP实施,如英特尔。

0 个答案:

没有答案