Профилирование подпрограммы на Фортране построчно - PullRequest
0 голосов
/ 18 октября 2019

Я написал большую программу на Фортране (используя новый стандарт), и сейчас я пытаюсь заставить ее работать быстрее. Мне удалось упростить большинство процедур с помощью gprof, но у меня есть очень большая подпрограмма, которая организует вычисления, которые теперь занимают почти 50% процессорного времени. Я уверен, что в этой подпрограмме есть несколько узких мест, но мне не удалось установить какие-либо параметры при компиляции или запуске программы, чтобы я мог видеть, сколько времени затрачивается внутри этой подпрограммы. Я хотел бы, по крайней мере, просто посчитать, сколько времени вычисляется каждая строка или сколько процессорного времени затрачивается на выполнение каждой строки. Может быть, Valgrind - лучший инструмент? Было очень полезно устранить утечки памяти.

1 Ответ

0 голосов
/ 14 ноября 2019

Инструмент "gcov" в GCC предоставляет хороший обзор отдельной подпрограммы в моем коде, чтобы узнать, сколько раз выполняется каждая строка. Файл с подпрограммой, которая должна быть "покрыта", должна быть скомпилирована с помощью
gfortran -fprofile-arcs -ftest-покрытие -g subr.F90 и для связи с программой я должен связать -lgcov в качестве библиотеки LAST.
Послезапустив программу, я могу использовать gcov "subr.F90", чтобы создать файл "subr.F90.gcov" с информацией о количестве выполнений каждой строки в подпрограмме. Это позволит обнаружить узкие места в подпрограмме. Это хорошее дополнение к gprof, которое дает время для каждой подпрограммы, но, поскольку моя программа имеет более 50000 строк кода, было бы неплохо иметь возможность выбрать всего несколько подпрограмм для этого исследования «строка за строкой».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...