2012-02-21 23 views
0

我有一個運行在8核心機器上的說6線程的OpenMP程序。如何從另一個程序(非openmp,純C程序)中提取此信息(num_threads = 6)。我可以從底層內核獲取這些信息嗎?如何知道現有的Openmp線程的數量

我正在使用run_queue長度使用「sar -q 1 0」,但這不會產生一致的結果。有時它會提供8次,或多或少的幾次。

回答

0

在Linux中,線程是進程(請參閱第一個文章here),因此您可以使用ps -eLf要求列出正在運行的進程。但是,如果機器有8個內核,則OpenMP可能會創建8個線程(儘管它目前在您的計算中使用了6個線程)。在這種情況下,它是您的代碼必須存儲有關它正在使用的線程的某處(例如文件或FIFO)的信息。