Разработка высокоэффективных алгоритмов для крупномасштабных задач: различия между версиями

Перейти к навигации Перейти к поиску
м
Строка 18: Строка 18:




Другая причина заключается в том, что библиотеки средств коммуникации и среды параллельного программирования (например, MPI [12], OpenMP [16] и высокопроизводительный Фортран [10]), а также пакеты параллельных алгоритмов (например, быстрые преобразования Фурье с использованием FFTW [6] или распараллеленные процедуры линейной алгебры в ScaLAPACK [4]) нередко демонстрируют совершенно разную эффективность на различных типах параллельных платформ. Если для одной и той же задачи существует несколько пакетов библиотек, пользователь может наблюдать разное время выполнения различных версий библиотеки – даже на одной и той же платформе. Таким образом, анализ времени выполнения должен четко отделять время, затрачиваемое на пользовательский код, от времени, затрачиваемого на различные вызовы библиотечных функций. И в самом деле, если отдельные вызовы библиотечных функций вносят значительный вклад во время выполнения, то количество таких вызовов и время работы для каждого вызова следует фиксировать и анализировать, тем самым помогая разработчикам библиотек уделять больше внимания наиболее экономически эффективным улучшениям. Например, в простой программе, выполняющей передачу сообщений, можно охарактеризовать проделанную работу при помощи отслеживания последовательного выполнения, объема коммуникаций и количества переданных сообщений. Программа более общего вида, использующая коллективные коммуникационные процедуры библиотеки MPI, могла бы также подсчитать количество вызовов этих процедур. Для инструментовки кодов MPI с целью сбора таких данных доступно несколько пакетов (например, MPICH nupshot [8], Pablo [17] и Vampir [15]). Эталонный пакет SKaMPI [18] позволяет прогнозировать время работы на основе подобных измерений даже в случае, если целевая машина недоступна для разработки программы. Пакет SKaMPI был разработан для обеспечения надежности, точности, переносимости и эффективности; в частности, он позволяет адаптивно контролировать частоту выполнения измерений, адаптивно уточнять длину сообщения и ширину шага в интересующих точках, способен восстанавливаться после аварийных остановок и автоматически генерировать отчеты.
Другая причина заключается в том, что библиотеки средств коммуникации и среды параллельного программирования (например, MPI [12], OpenMP [16] и высокопроизводительный Фортран [10]), а также пакеты параллельных алгоритмов (например, быстрые преобразования Фурье с использованием FFTW [6] или распараллеленные процедуры линейной алгебры в ScaLAPACK [4]) нередко демонстрируют совершенно разную эффективность на различных типах параллельных платформ. Если для одной и той же задачи существует несколько пакетов библиотек, пользователь может наблюдать разное время выполнения различных версий библиотеки – даже на одной и той же платформе. Таким образом, анализ времени выполнения должен четко отделять время, затрачиваемое на пользовательский код, от времени, затрачиваемого на вызовы библиотечных функций. И в самом деле, если отдельные вызовы библиотечных функций вносят значительный вклад во время выполнения, то количество таких вызовов и время выполнения каждого вызова следует фиксировать и анализировать, тем самым помогая разработчикам библиотек уделять больше внимания наиболее экономически эффективным улучшениям. Например, в простой программе для передачи сообщений можно охарактеризовать проделанную работу при помощи отслеживания последовательного выполнения, объема коммуникаций и количества переданных сообщений. Программа более общего вида, использующая коллективные коммуникационные процедуры библиотеки MPI, могла бы также подсчитать количество вызовов этих процедур. Для инструментовки кодов MPI с целью сбора таких данных доступно несколько пакетов (например, MPICH nupshot [8], Pablo [17] и Vampir [15]). Эталонный пакет SKaMPI [18] позволяет прогнозировать время работы на основе подобных измерений даже в случае, если целевая машина недоступна для разработки программы. Пакет SKaMPI был разработан для обеспечения надежности, точности, переносимости и эффективности; в частности, он позволяет адаптивно контролировать частоту выполнения измерений, адаптивно уточнять длину сообщения и ширину шага в интересующих точках, а также способен восстанавливаться после аварийных остановок и автоматически генерировать отчеты.


== Применение ==
== Применение ==
4430

правок

Навигация