Вперед: 1.4.1. Программирование для систем с общей памятью
Назад: 1.3.3. Системы с распределенной памятью
К содержанию: Оглавление


1.4. Краткий обзор средств программирования параллельных вычислений

Арсенал средств, предназначенных для программирования параллельных вычислений, довольно широк и многообразен. Он включает в себя коммуникационные библиотеки, распараллеливающие компиляторы (автоматические и полуавтоматические), специализированные параллельные библиотеки, специализированные прикладные пакеты. Часть этих средств являются узкоспеци┐ализированными, предназначенными для решения конкретных задач, как например, специализированные прикладные пакеты (ANSYS, GAUSSIAN), а часть предоставляет универсальные средства для разработки параллельных программ.

В данном подразделе кратко рассматривается применение различных технологий для разработки параллельных программ на примере решения простейшей задачи - вычисления числа π по приближенной формуле:

Формула для вычисления числа пи

Эта формула представляет собой вычисление определенного интеграла простейшим методом прямоугольников. Графическая интерпретация этого способа вычисления числа π представлена на Рис.1.4.

Графическая интерпретация вычисления числа

Рис.1.4. Графическая интерпретация вычисления числа π.

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

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

Программа pi.с

#include 
int main(int argc, char **argv)
{
 int n, i;
 double d, s, x, pi;
 n = atoi(argv[1]);
 d = 1.0/n;
 s = 0.0;
 for (i=1; i<=n; i++){
  x = (i-0.5)*d;
  s += 4.0/(1.0+x*x);
 }
 pi = d*s;
 printf("pi=%.15f\n", pi);
}

Рассмотрим, как усложнится эта простая программа при использовании различных способов организации параллельных вычислений.



Вперед: 1.4.1. Программирование для систем с общей памятью
Назад: 1.3.3. Системы с распределенной памятью
К содержанию: Оглавление