Информационно-аналитический портал
Высокопроизводительные
вычисления на WINDOWS-кластерах
   

 
 
  Главная
  Новости
  Как создать Windows-кластер
  Компьютеры
  Технологии
  Параллельное программирование
  Проектирование  
  Отладка  
  Профилирование и оптимизация  
  Библиотеки, пакеты, приложения
  Метакомпьютинг, GRID
  Обучение
  Исследования
 
  
Логин:    
Пароль:    
Запомнить:
 Забыли пароль? Регистрация 
  
 
Microsoft HPC RussiaПараллельное программированиеПрофилирование и оптимизация
 

Профилирование и оптимизация

Профилирование параллельных программ

Центральная идея ускорения последовательных приложений достаточно проста. Необходимо выявить участки кода, в которых приложение проводит основную часть времени и оптимизировать их. Известен эвристический закон «20/80», утверждающий, что приложение проводит 80% времени работы в 20% кода. Таким образом, за счет оптимизации именно этих 20% кода можно добиться значительного повышения производительности. Как раз для поиска таких узких мест используются специальные средства, называемые профилировщиками. Под профилированием обычно понимается процесс анализа производительности приложения и учета потребляемых им ресурсов. Тем самым, профилировщик – это инструмент, при помощи которого осуществляется профилирование.

Профилировщики исследуют поведение программы в процессе ее выполнения. В частности, собирается такая информация, как частота вызовов функций, продолжительность их работы, число потоков, время ожидания – любая информация, способная помочь при оптимизации производительности. Для сбора информации профилировщики используют такие техники как инструментация кода, аппаратные прерывания, внедрение счетчиков производительности и многие другие. Выходной информацией профилировщика является трасса – список событий, произошедших в приложении (исполненные инструкции, вызовы функций, вызовы операционной системы). После получения трассы профилировщик обрабатывает собранную информацию и строит профиль приложения – статистическую сводку о работе приложения. Затем профиль представляется в графическом виде, удобном для анализа. Разработчик изучает его, определяет проблемные места и ищет способы оптимизации своего приложения.

Ситуация с многопоточными приложениями существенно другая, поскольку в силу вступают новые аспекты производительности, связанные с взаимодействием потоков, затратами на их создание и синхронизацию. Ускорение отдельных участков кода может не дать никакого прироста производительности, если, например, разработчик построил свое приложение таким образом, что основную часть времени потоки ожидают освобождения разделяемого ресурса. Также можно упомянуть такие распространенные в многопоточных приложениях проблемы как неравномерное распределение нагрузки и неэффективное использование примитивов синхронизации. Эти факторы могут привести к катастрофически низкой производительности приложения, вплоть до того, что многопоточная версия будет медленнее последовательной. Таким образом, для анализа новых аспектов программной оптимизации, присущих именно многопоточным приложениям, необходимы специальные инструменты, ориентированные на обнаружение проблемных ситуаций и последующей помощи программистам в их разрешении.

Ниже представлены некоторые приложения, использующиеся для профилировки параллельных программ


<< вернуться  |   Документ от: 26.11.2007 18:42
 

Новости

26.12.2007
25.12.2007
24.12.2007
17.12.2007
17.12.2007
 

   

© ННГУ, Центр компетенции в области высокопроизводительных вычислений на основе технологий Майкрософт, 2007