Multithreading 如何知道多核系统上现有OpenMP线程的数量

Multithreading 如何知道多核系统上现有OpenMP线程的数量,multithreading,linux-kernel,openmp,multicore,Multithreading,Linux Kernel,Openmp,Multicore,我有一个8核的系统,我在其中运行一个程序,比如说,a有8个线程,然后我调用另一个有4个线程的程序B,从而使系统过载(假设应用程序和处理器之间有一对一的线程映射) 我想分析CPU过载的这种行为,因此需要准确地确定系统上正在运行的线程数。在上面的例子中,我需要得到总共有12(A,8+B,4)个线程在运行的信息。我可以从内核或OpenMP运行时获取此信息吗 我试图使用“sar-q10”获取运行队列长度,但q长度可能因内核而异 一个OpenMP实例不知道其他运行OpenMP的程序。无法从其中一个程序查询

我有一个8核的系统,我在其中运行一个程序,比如说,a有8个线程,然后我调用另一个有4个线程的程序B,从而使系统过载(假设应用程序和处理器之间有一对一的线程映射)

我想分析CPU过载的这种行为,因此需要准确地确定系统上正在运行的线程数。在上面的例子中,我需要得到总共有12(A,8+B,4)个线程在运行的信息。我可以从内核或OpenMP运行时获取此信息吗


我试图使用“sar-q10”获取运行队列长度,但q长度可能因内核而异

一个OpenMP实例不知道其他运行OpenMP的程序。无法从其中一个程序查询全局线程使用情况。您可以做的是让每个omp程序将omp_get_num_线程的结果写入文件或管道,并让另一个程序读取此输出;我不想从一个程序中获得线程数。我计划使用第三方软件来实现这一点。一个好的OpenMP运行时实现(或台式机的任何其他并行运行时)将使用一个共享库,跟踪线程的数量并防止超额订阅。要从操作系统获取线程数,您可能需要尝试