Параллельная реализация одиночных циклов

#include <stdio.h>

#include <omp.h>

#define N 1000

#define CHUNKSIZE 100

 

void main () 

{

  int i, chunk;

  float a[N], b[N], c[N];

 

  /* Some initializations */

  for (i=0; i < N; i++)

        a[i] = b[i] = i * 1.0;

  chunk = CHUNKSIZE;

 

  #pragma omp parallel for shared(a,b,c,chunk) private(i) schedule(static,chunk)

  for (i=0; i < n; i++)

        c[i] = a[i] + b[i];

}

Критические секции

#include <omp.h>

 

void main()

{

  int x;

  x = 0;

  #pragma omp parallel shared(x)

  {

        #pragma omp critical

        x = x + 1;

  } /* end of parallel section */

}

Редуцируемые операции  

#include <omp.h>

#include <stdio.h>

 

void main () 

{

  int i, n, chunk;

  float a[100], b[100], result;

 

  /* Some initializations */

  n = 100;

  chunk = 10;

  result = 0.0;

  for (i=0; i < n; i++)

  {

        a[i] = i * 1.0;

        b[i] = i * 2.0;

  }

 

#pragma omp parallel for default(shared) private(i) schedule(static,chunk)  \ reduction(+:result) 

  for (i=0; i < n; i++)

        result = result + (a[i] * b[i]);

  printf("Final result= %f\n",result);

}

 

Задание.

1. В соответствии с вариантом задания реализовать алгоритм с использованием интерфейса OpenMP (Дополнительное задание: варианты 1,2 и 3 – 20 баллов, вариант 4 – 30 баллов).

2. Защита лабораторной работы (Дополнительное задание – 10 баллов). 

3. Крайний срок сдачи – 20 мая 2011 года.   

4. Крайний срок защиты – 25 мая 2011 года.

Варианты.

1. Скалярное произведение двух векторов.

2. Умножение матрицы на вектор.

3. Умножение матрицы на матрицу.

4. Решение системы линейных алгебраических уравнений методом Гаусса.

 

Литература

1. Спецификация инструкции cpuid для процессоров Intel http://www.intel.com/Assets/PDF/appnote/241618.pdf

2. Спецификация инструкции cpuid для процессоров AMD http://support.amd.com/us/Embedded_TechDocs/25481.pdf

3. Корнеев В.Д. Параллельное программирование кластеров // Новосибирск. НГТУ. 2008. – 312 с.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: