Введение в информатику процессов первичной переработки нефти. Новиков А.А - 221 стр.

UptoLike

Составители: 

Трудоемкость программирования c помощью MPI и альтернативы
Набор функций интерфейса MPI иногда называют «параллельным ассембле-
ром», так как это система программирования относительно низкого уровня. Для на-
чинающего пользователя-вычислителя может быть достаточно трудоемкой работой
запрограммировать сложный параллельный алгоритм с помощью MPI и отладить
MPI-программу.
Существуют и более высокоуровневые системы программирования, в частности
российские разработкиDVM и НОРМА, которые позволяют пользователю запи-
сать задачу в понятных для него терминах, а на выходе создают код с использовани-
ем MPI, и поэтому могут быть использованы практически на любом вычислитель-
ном кластере.
Ускорение вычислений на кластере
Во-первых, нужно максимально ускорить вычисления на одном процессоре, для
чего можно принять следующие меры.
1. Подбор опций оптимизации компилятора.
2. Использование оптимизированных библиотек. Если некоторые стандартные
действия, такие как умножение матриц, занимают значительную долю времени ра-
боты программы, то имеет смысл использовать готовые оптимизированные проце-
дуры, выполняющие эти действия, а не программировать их самостоятельно.
Для выполнения операций линейной алгебры над матричными и векторными
величинами была разработана библиотека BLAS (базовые процедуры линейной ал-
гебры). Интерфейс вызова этих процедур стал уже фактически стандартным, и сей-
час существуют несколько хорошо оптимизированных и адаптированных к процес-
сорным архитектурам реализаций этой библиотеки.
Одной из таких реализаций является свободно распространяемая библиотека
ATLAS, которая при установке настраивается с учетом особенностей процессора.
Компания Интел предлагает библиотеку MKL-оптимизированную реализацию BLAS
для процессоров Intel и SMP-компьютеров на их основе.
3. Исключение своппинга (автоматического сброса данных из памяти на диск).
Каждый процесс должен хранить не больше данных, чем для него доступно опера-
тивной памяти (в случае двухпроцессорного узла это примерно половина от физиче-
ской памяти узла).
В случае необходимости работать с большим объемом данных может быть це-
лесообразным организовать работу с временными файлами или использовать не-
сколько вычислительных узлов, которые в совокупности предоставляют необходи-
мый объем оперативной памяти.
4. Более оптимальное использование кэш-памяти. В случае возможности изме-
нять последовательность действий программы, нужно модифицировать программу
так, чтобы действия над одними и теми же или подряд расположенными данными
выполнялись также подряд, а не в произвольном порядке.
В некоторых случаях целесообразно изменить порядок циклов во вложенных
циклических конструкциях. В некоторых случаях возможно на базовом уровне ор-
ганизовать вычисления над такими блоками, которые полностью попадают в кэш-
память.
220