Почему вы не можете использовать cprofile? Ты пробовал?
Для MPICH, я побежал, как это:
$ mpiexec -l -np 4 python -m cProfile ./simple-io.py doodad
Это дает мне 4 набора выходных данных, но «-l» аргумент перечисляет ранг MPI перед каждым битом продукции. Обратите внимание: аргумент '-l' является специфичным для MPICH. OpenMPI использует --tag-output
. Другие реализации могут использовать что-то еще.
Я вижу, что cprofile может принимать аргумент имени файла. сделать выходной файл для каждого-ранга, а затем обработать его с Показателями
% python
Python 2.7.10 (default, Oct 14 2015, 16:09:02)
[GCC 5.2.1 20151010] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pstats
>>> pstats.Stats("simple-io.cprofile").sort_stats('cumulative').print_stats()
дает мне много информации Cprofile ... но моя игрушка программа была слишком мала, чтобы дать мне что-нибудь полезное.
Мой 'mpiexec' (1.10.2 от менеджера пакетов Ubuntu 16.04) похоже, не имеет переключателя '-l'. Без него я получаю только один выходной файл, очевидно, для ранга 0. Учитывая, что моя установка более новая, чем ваш ответ, может быть, ваш ответ устарел? – NichtJens
Спасибо. 1.10.2 поступает из OpenMPI. Я обновил свой ответ, чтобы понять, что способ получить ранжирование впереди - это конкретная реализация и документировать две основные реализации. –
Отлично. Немного странно, что, по-видимому, стандартизированный 'mpiexec' делает это таким непоследовательным образом. Я думал, что его целью было заменить «mpirun», который страдает именно от этих несоответствий из-за того, что они не стандартизированы ... – NichtJens