ТГТУ каф.Программного обеспечения (ПОВТ)  
           Адрес: (г.Тверь, просп. Ленина, 25)  
Телефон / факс: (4822) 44-93-94  
e-mail:common@tstu.tver.ru  
     ИССЛЕДОВАНИЕ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ 
        НА КЛАСТЕРЕ
ТГТУ

Вычисление экспоненты

#include <stdio.h>

#include <mpi.h>

double exponenta (double x, double n, double p)

{

       double s = 0,Sp = 0, N = n, A = 1;

       do

       {

              Sp = s;

              s += A;

              N++;

              A = A * x/N; 

       }      while (N < p);

       return s;

}

int main (int argc, char* argv[])

Скриншот вычислений

Вычисление на кластере

Пояснение......

Применим полученные знания для переработки ранее рассмотренной программы суммирования: как можно увидеть, весь программный код ("Сборка частичных сумм на процессе с рангом 0"), может быть теперь заменен на вызов одной лишь функции MPI_Reduce:

// Сборка частичных сумм на процессе с рангом 0

MPI_Reduce(&ProcSum, &TotalSum, 1, MPI_DOUBLE, MPI_SUM, 0,

 MPI_COMM_WORLD);

Синхронизация вычислений

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

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

 

Перечень работ

  • Вычисление экспоненты
  • Вычисление синуса
  • Вычисление косинуса
  • Вычисление тангенса
  • Вычисление катангенса