Опция -log_summary после завершения программы выводит данные профилирования в стандартный вывод. Данные профилирования могут быть выведены также и в любое время, если программа вызовет функцию PetscLogPrintSummary(). Данные о производительности выводятся для каждой процедуры, организованной в библиотеки PETSc, а затем для всех определенных пользовательских событий. Для каждой процедуры выводимые данные включают максимальное время и скорость операций с плавающей точкой (flop) для всех процессоров. Включается также информация о параллельной производительности. Для подсчета операций с плавающей точкой в PETSc определяется единица flop как одна из операций следующего типа: умножение, деление, сложение или вычитание. Например, одна операция VecAXPY (), вычисляющая для векторов длины N, требует 2N flops (состоящих из N сложений и N умножений). Обратите внимание, что скорость flop представляет только ограниченную характеристику производительности, поскольку извлечение и запись в память также влияют на показатели. Для упрощения остальная часть обсуждения посвящена интерпретации данных профилирвания для библиотеки SLES, предоставляющей линейные решатели для всего пакета PETSc. Вспомните иерархическую организацию библиотеки PETSc, показанную на рис. 69. Каждый решатель SLES состоит из предобработчика PC и части KSP (подпространств Крылова), котрые в свою очередь используют модули Mat (матрицы) и Vec (векторы). Поэтому операции в модуле SLES состоят из низкоуровневых операций нижележащих модулей. Отметьте также факт, что библиотека нелинейных решателей SNES построена на базе библиотеки SLES, а библиотека временного интегрирования TS построена на базе SNES . Линейный решатель SLES содержит две основных фазы SLESSetUp () и SLESSolve (), каждая из которых включает множество действий, зависящих от определенной техники решения. Для использования предобработчика PCILU и метода подпространств Крылова KSPGMRES последовательность процедур PETSc приведена ниже. Как указано в иерархии, операции в SLESSetUp () включают все операции внутри PCSetUp (), которые в свою очередь включают MatILUFactor () и т.д.:
Итоги, выводимые через -log_summary, отражают эту иерархию процедур. Например, показатели производительности для такой высокоуровневой процедуры, как SLESSolve, включают итоги всех операций, накопленные в низкоуровневых компонентах, составляющих эту процедуру.
Очевидно, что в настоящее время вывод не может быть представлен через -log_summary так, чтобы иерархия процедур PETSc была полностью ясна, в основном потому, что не был определен ясный и единообразный способ сделать это для всей библиотеки. В дальнейшем возможны улучшения. Для определенной задачи пользователь должен иемть представление об основных операциях, требуемых для ее реализации (т.е., какие операции выполняются при использовании GMRES и ILU), чтобы интерпретация данных от -log_summary была относительно прозрачной.