Педагогические науки/Современные методы преподования

Жунусова Л.Х.,

г.Алматы, КазНПУ им. Абая

Жумаханова А.С.

 г.Астана, КазАУ  им. С. Сейфуллина

 

ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ КАК ОПТИМИЗАЦИЯ ВЫЧИСЛИТЕЛЬНОГО ПРОЦЕССА

 

 

Современный подход к образованию в области параллельного программирования в России и Казахстана, по мнению авторов, имеет достаточно яркую «технологическую» направленность: основной упор при изложении учебного материала делается на аспекты параллельных вычислительных архитектур и практических технологий параллельного программирования (MPI, OpenMP, HPF, HPC). При этом прикладные возможности параллельных вычислений иллюстрируются в основном на хрестоматийных примерах 60-80х гг. прошлого века (матричные вычисления, обход графов). Несмотря на очевидную значимость этих алгоритмов при реализации ряда критических технологий, их бессистемное перечисление не приводит к развитию у слушателей творческих способностей в области разработки параллельных алгоритмов и программ для решения прикладных задач, диктуемых особенностями их собственной предметной области [1].

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

Проблемы исследовании. Следует отметить, что возможности функциональных языков и методов управления в них параллельными вычислениями недостаточно исследованы.

Параллельная программа содержит несколько процессов, работающих совместно над выполнением некоторой задачи. Каждый процесс — это последовательная программа, а точнее — последовательность операторов, выполняемых один за другим. Последовательная программа имеет один поток управления, а параллельная — несколько. Совместная работа процессов параллельной программы осуществляется с помощью их взаимодействия. Взаимодействие программируется с применением разделяемых переменных или пересылки сообщений. Если используются разделяемые переменные, то один процесс осуществляет запись в переменную, считываемую другим процессом. При пересылке сообщений один процесс отправляет сообщение, которое получает другой [2-3].

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

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

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

Под производительностью (performance) понимают количество операций, выполняемых на данной вычислительной системе в единицу времени. Быстродействие(speed) – величина, обратная среднему времени выполнения одной операции.

Производительность измеряется в миллионах команд в секунду MIPS (millionsinstructionspersecond) или миллионах операций с плавающей запятой в секунду MFLOPS (millionsfloatingpointoperationspersecond).

Кроме производительности важными характеристиками вычислительных систем являются масштабируемость вычислительной системы (scalability) - способность вычислительной системы к наращиванию и сокращению ресурсов (прежде всего, производительности и оперативной памяти), реконфигурируемость вычислительной системы (programmability) – варьирование числа узлов и графа их связей, надежность и живучесть вычислительной системы (reliabilityandrobustness). Хорошо масштабируемая система обеспечивает линейный рост производительности с ростом количества процессоров в ней.

Для выполнения операции сложения векторов http://bigor.bmstu.ru/?frm/?doc=Parallel/ch010105.mod/?n=3/?k=10, http://bigor.bmstu.ru/?frm/?doc=Parallel/ch010105.mod/?n=4/?k=10 требуется время 

http://bigor.bmstu.ru/?frm/?doc=Parallel/ch010105.mod/?n=5/?k=10

 (1)

где http://bigor.bmstu.ru/?frm/?doc=Parallel/ch010105.mod/?n=6/?k=10 - фиксированное время запуска конвейера, http://bigor.bmstu.ru/?frm/?doc=Parallel/ch010105.mod/?n=7/?k=10 - время "разгона" конвейера.

После запуска конвейера и его "разгона" конвейер выдает результат через каждый такт http://bigor.bmstu.ru/?frm/?doc=Parallel/ch010105.mod/?n=2/?k=10. Т.е. максимальная скорость выдачи результатов конвейером  равна 

http://bigor.bmstu.ru/?frm/?doc=Parallel/ch010105.mod/?n=8/?k=10

 (2)

Быстродействие конвейера   принято называть асимптотическим быстродействием. Быстродействие конвейера приближается к асимптотическому быстродействию в случае, когда в формуле (1) можно пренебречь слагаемыми s , l . Эта ситуация имеет место когда длина обрабатываемых векторов s  много больше величин  l. При этом предполагается, что отсутствуют конфликты при обращении к памяти.

Аналогичная ситуация имеет место для конвейеров любых операций. Условно принято говорить, что асимптотическое быстродействие конвейера операций достигается на векторах бесконечной длины.

При работе конвейера в последовательном режиме, очевидно, максимальная скорость выдачи результатов равна

http://bigor.bmstu.ru/?frm/?doc=Parallel/ch010105.mod/?n=12/?k=10

(3)

Таким образом, конвейерная обработка увеличивает производительность вычислительной системы в   раз (на векторах бесконечной длины).

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

Относительная производительность различных алгоритмов на данной параллельной вычислительной системе определяется длиной полупроизводительности.

Введем в рассмотрение величину 

http://bigor.bmstu.ru/?frm/?doc=Parallel/ch010105.mod/?n=31/?k=10

где http://bigor.bmstu.ru/?frm/?doc=Parallel/ch010105.mod/?n=10/?k=10 – средняя длина обрабатываемых векторов. Тогда http://bigor.bmstu.ru/?frm/?doc=Parallel/ch010105.mod/?n=32/?k=10 означает, что данный алгоритм может быть эффективно распараллелен для решения на данной вычислительной системе, http://bigor.bmstu.ru/?frm/?doc=Parallel/ch010105.mod/?n=33/?k=101 - означает противоположное.

Заключение. Быстродействие векторно-параллельной системы и MIMD-системы приближается к асимптотическому быстродействию в случае, когда в формуле (4) можно пренебречь коммуникационной составляющей и когда величина n кратна количеству процессоров в системе  . Заметим, что пренебрежение коммуникационными расходами предполагает также, что команды не конфликтуют между собой при доступе к памяти. Смыслы асимптотического быстродействия и длины полупроизводительности различны. Асимптотическое быстродействие, главным образом, характеризует технологию изготовления ЭВМ, в то время как длина полупроизводительности представляет собой критерий степени параллелизма системы.

Литература

1. Топорков В.В. Совместное планирование и назначение процессов как метод оптимизации архитектурных решений вычислительных систем // Автоматика и телемеханика. — 2001. — № 12. — С. 107—116.

2. Котляров Д.В., Кутепов В.П., Осипов М.А. Граф-схемное потоковое параллельное программирование и его реализация на кластерных системах // Известия РАН. Теория и системы управления. — 2005, — № 1. —С. 75—96.

3. Message Passing Interface Forum www.mpi-forum.org.