Под высокопроизводительными вычислениями (HPC) понимается использование суперкомпьютеров и компьютерных кластеров для решения широкого круга задач, требующих большого объема вычислений.

Системы с эталонной производительностью в сотни терафлопс обычно считаются суперкомпьютерами. Типичной особенностью этих суперкомпьютеров является то, что они имеют большое количество вычислительных узлов, обычно в диапазонеO(10^3) к O(10^6)). Это отличает их от вычислительных кластеров малого и среднего размера, которые обычно имеютO(10) к O(10^2) узлы.

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


Требуется более высокая степень распараллеливания

Согласно оригинальной формулировке "классического" закона убывающей отдачи -ака- закона Амдала в сентябре 1966 г. максимальное ускорение, которого можно достичь с помощью параллельных компьютеров, ограничено долей последовательных процессов в вашем коде (т. Е. Частей, которые не могут быть распараллеливание). Это означает, что чем больше у вас процессоров, тем лучше должна быть ваша концепция распараллеливания. Современная переформулировка, не игнорирующая дополнительные затраты на накладные расходы, связанные с порождением процессов, затраты на параметры / результаты SER/DES и дополнительные затраты на связь и, наконец, что не менее важно, факты уважения ресурсов, атомарности работы эффекты в новой формулировке накладных расходов строго пересмотренном Законе Амдала, сравнения с поправкой на дополнительные расходы более точно отражают фактические чистые преимущества ускорения True-[PARALLEL] выполнение кода, не игнорируя соответствующие классы дополнительных затрат, связанных со способом подготовки и выполнения таких разделов.


Специализированное оборудование и программное обеспечение

Большинство суперкомпьютеров изготавливаются по индивидуальному заказу и используют специализированные компоненты для оборудования и / или программного обеспечения, т.е. вам нужно много узнать о новых типах архитектур, если вы хотите получить максимальную производительность. Типичными примерами являются сетевое оборудование, файловая система или доступные компиляторы (включая параметры оптимизации компилятора).


Параллельный файловый ввод-вывод становится серьезным узким местом

Хорошие параллельные файловые системы довольно хорошо обрабатывают несколько запросов параллельно. Однако у него есть предел, и большинство файловых систем не поддерживают одновременный доступ тысяч процессов. Таким образом, чтение / запись в один файл внутренне снова становится сериализованным, даже если вы используете концепции параллельного ввода-вывода, такие как ввод-вывод MPI.


Отладка приложений с массовым параллелизмом - это боль

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


Балансировка нагрузки и модели взаимодействия имеют значение (даже больше)

Это похоже на первый пункт. Предположим, что одному из ваших вычислительных узлов требуется немного больше времени (например, одна миллисекунда), чтобы достичь определенной точки, в которой все процессы должны быть синхронизированы. Если у тебя есть101 узлы, вы только тратите 100 * 1 миллисекунда = 0.1 sвычислительного времени. Однако, если у вас есть 100 001 узел, вы уже тратите впустую100 s. Если это происходит неоднократно (например, каждая итерация большого цикла) и если у вас много итераций, использование большего количества процессоров вскоре станет неэкономичным.


И последнее, но не менее важное: сила

Тепловые потолки и стратегии ограничения мощности - еще одно измерение в точной настройке HPC. арена. Сквозные правила производительности. Ограничение по температуре и / или ограничению мощности представляет собой еще один набор параметров, которые определяют, как эффективно вычислять рабочие нагрузки высокопроизводительных вычислений в рамках физической вычислительной инфраструктуры высокопроизводительных вычислений с ограничениями по времени и ограниченному количеству электроэнергии. Из-за многократных различий сценарии не подчиняются легко понятному выбору, в основном наоборот (противоречиво интуитивно понятно, какова оптимальная конфигурация распределения нагрузки HPC по вычислительной инфраструктуре по температуре и ограничению мощности), повторяющиеся рабочие нагрузки обычно адаптируют эти настройки по мере накопления опыта (например, в погодном моделировании), поскольку не было возможности провести достаточно обширное (чтобы стать решающим) предварительное тестирование.