2016-01-26 6 views
0

Существует множество статей и книг по проблемам HPC, но я чувствую, что мне не хватает диагностировать проблемы масштабирования и эффективности. Например, я читаю книги под названием «Введение в высокопроизводительных вычислений для ученых и инженеров» Хорст Саймон, где он обсуждает широкий спектр проблем и решений, таких как,Идентификация и диагностика проблем эффективности в HPC

  • промаха
  • Load Дисбаланс
  • Бедной векторизации кода
  • т.д.

Но если бы я передал кусок кода, даже отдаленно сложного (то есть более чем вложенная для петель) Я бы очень трудное время discove что было узким местом или было доказано, что код достиг пределов данного аппаратного обеспечения.

В аналогии с медициной я могу в настоящее время перечислить кучу возможных заболеваний, которые делают людей «менее эффективными», но это вряд ли полезно. Мне нужно выяснить, как диагностировать моих «пациентов», а затем назначить «лечение».

Могу ли я обратиться к литературе, которая учит, как диагностировать проблемы HPC (эффективность, масштабируемость и т. Д.)? Почти пошаговое руководство. Как положить стетоскоп сундука, а затем послушать ...

+0

Интересная тема, но поставленный вопрос является [слишком широким для StackOverflow] (http://stackoverflow.com/help/on-topic). –

+0

Могу ли я спросить, где я могу задать такие вопросы? В запросах MathOverflow ссылки были достаточно типичными. Возможно, ссылки позволят людям решать больше проблем самостоятельно. Однако я не обсуждаю правила. Есть ли эквивалент уровня исследования StackOverflow? –

+0

Мое лучшее предположение - http://programmers.stackexchange.com, которое охватывает концепции и методологии программирования. –

ответ

1

Этот вопрос состоит из двух вопросов: один из них - как найти узкие места, а другой - как узнать пределы моего оборудования, и если я на них.

Первое, что вы должны запустить код внутри профилировщика. Любой профайлер с представлением «сверху вниз» вашего кода в зависимости от времени показывает вам узкие места.

Попробуйте профайлеры, предлагаемые здесь (ответ относится к C++ и Fortran): Good profiler for Fortran and MPI - как Allinea MAP, так и HPC Toolkit имеют вид презентации, в которой вы нуждаетесь. (NB я работаю для Allinea).

Второй вопрос - самая «открытая» часть. Для этого нужна ваша книга или руководство по оптимизации. Тем не менее, хороший старт - посмотреть, сколько у вас векторизации (некоторые из примеров профайлера могут показать это), так как здесь можно найти самую вычислительную мощность.

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