Как узнать количество существующих потоков Openmp

У меня есть программа OpenMP, работающая, скажем, с 6 потоками на 8-ядерной машине. Как я могу извлечь эту информацию (num_threads = 6) из другой программы (не openmp, простая программа C). Могу ли я получить эту информацию из базового ядра.

Я использовал длины run_queue с помощью «sar -q 1 0», но это не дает согласованных результатов. иногда дает 8, в несколько раз больше или меньше.


person marc    schedule 21.02.2012    source источник


Ответы (1)


В Linux потоки — это процессы (см. первое сообщение здесь), поэтому вы можете запросить список запущенных процессов с ps -eLf. Однако, если машина имеет 8 ядер, возможно, что OpenMP создал 8 потоков (даже несмотря на то, что в настоящее время он использует 6 из них для ваших вычислений); в этом случае именно ваш код должен хранить где-то (например, в файле или FIFO) информацию об используемых им потоках.

person gfour    schedule 25.04.2012