вычислительных ядер, способных одновременно выполнять расчеты в
рамках решения одной задачи. Выделение независимых частей алго-
ритма, исполняемых на различных ядрах, называется распараллелива-
нием. К настоящему времени получили развитие два подхода к орга-
низации взаимодействия вычислительных ядер на аппаратном уровне,
реализованные в системах с общей и распределенной памятью [2].
Развитие компьютерных сетей привело к появлению в конце
1970-х годов систем с распределенной памятью — кластеров. Кластер
— это группа компьютеров, объединенных высокоскоростными кана-
лами связи и представляющих с точки зрения пользователя единый
вычислительный ресурс [3]. С этого момента начинает развиваться
новая сфера профессиональной деятельности, направленная на ре-
шение задач математического моделирования на таких системах —
параллельное программирование, главная задача которого — достиже-
ние максимальной производительности вычислительного алгоритма,
в частности, путем параллельного выполнения операций над векто-
рами и матрицами. Формируется международное сообщество специ-
алистов, занимающихся высокопроизводительными вычислениями, в
1993 г. запущен проект Top-500, дважды в год публикующий список
самых мощных компьютерных систем мира [4].
На современном этапе параллельное программирование — как в
свое время программирование последовательное — перестает быть
“уделом избранных”. Достаточно указать на тот факт, что параллель-
ные программы нужны теперь для проведения вычислений не только
на суперкомпьютерах, но и на вполне обычных персональных ком-
пьютерах: современные процессоры являются многоядерными, и про-
водить расчеты на них с максимальной производительностью мож-
но лишь используя параллельные вычислительные алгоритмы. К на-
стоящему времени получили развитие такие технологии разработки
параллельных программ, как MPI [5] (с целым набором свободных
реализаций — OpenMPI, MPICH, LamMPI), OpenMP [6], shmem и др.
Использование параллельных вычислительных технологий стано-
вится неотъемлемой частью деятельности современного специалиста
в области прикладной математики, программиста, инженера, иссле-
дователя. Для разработки параллельных программ специалист дол-
жен обладать знаниями о современном уровне развития программно-
го и аппаратного инструментария и способностью применять эти зна-
ния на практике. Все звенья классической триады “модель–алгоритм–
программа” тесно связаны между собой, поэтому наиболее эффек-
тивны те программы, которые изначально создаются с учетом их па-
раллельного исполнения, что во многом меняет подход к разработке
ISSN 1812-3368. Вестник МГТУ им. Н.Э. Баумана. Сер. “Естественные науки”. 2011. № 4
29