我有一个在8核计算机上运行6个线程的OpenMP程序。如何从另一个程序(非openmp,普通C程序)中提取此信息(num_threads = 6)。我可以从底层内核获取此信息吗?
我使用“sar -q 1 0”使用run_queue长度,但这不会产生一致的结果。有时它会提供8次,或多或少的次数。
答案 0 :(得分:0)
在Linux中,线程是进程(请参阅第一篇文章here),因此您可以要求使用ps -eLf
的正在运行的进程列表。但是,如果机器有8个内核,则OpenMP可能会创建8个线程(即使它当前使用其中的6个进行计算);在这种情况下,您的代码必须存储有关正在使用的线程的某个地方(例如文件或FIFO)。