1.1 Области применения параллельного программирования

Как и большинство других замечательных изобретений человечества, компьютеры были созданы для нужд военных. Сначала это были лишь “быстрые счеты”, которые использовались для расшифровки перехваченных сообщений противника. Со временем, когда их вычислительная мощность несколько выросла, стало возможным применение компьютеров в бизнесе и промышленности. С этого момента эволюция компьютерной техники стала подчиняться закону Мура: “число транзисторов на кристалле (а следовательно, и производительность компьютеров) удваивается каждые два года” (Рис. 1.1).

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

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


PIC


Рис. 1.1: Зависимость числа транзисторов на кристалле микропроцессора от времени.


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

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

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

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

Параллельные вычисления применяются в областях, связанных с проведением больших расчетов:

Мы привели лишь некоторые из многочисленных применений параллельного программирования. Следует также отметить, что список сфер применения параллельного программирования неуклонно расширяется последнее время.