Меню Закрыть

VI ЗАДАНИЕ ПО OPEN MP

image_pdfimage_print

В данном раздели приведены задания для закрепления полученных знаний по технологии программирования параллельных компьютеров OPEN MP.

Задание 1. В коде допущена ошибка. Необходимо исправить данный код.

int a = 0;
#pragma оmр parallel private(a)
{
a++;
}

Задание 2. Определить ожидаемый результат, если число потоков по умолчанию равно 3.

int a;
#pragma оmр parallel private(a)
{
а = 0;
#pragma omp for
for (int i = 0; i < 10; i++)
{
#pragma omp atomic
a++;
}
#pragma omp critical
{
Cout<<«a=« << a;
}
}

Задание 3. Определить результат выполнения.

int a;
#pragma оmр parallel private(a)
{
а = 0;
#pragma оmр barrier
#pragma оmр sections
{
#pragma оmр section
{
#pragma оmр atomic
a+= 100;
}
#pragma оmр section
{
#pragma оmр atomic
a+=1;
}
}
#pragma оmр critical
{
cout<< «a = «<<a << endl;
}
}

Задание 4. Найти ошибку в коде:

int a[4096], b [4096];
int i;
#pragma оmр parallel sections
{
#pragma оmр section
{
for (i = 0; i < 4096; ++i) a [i] = 1;
}
#pragma оmр section
{
for (i = 0; i < 4096; ++i) b [i] = 2;
}
}
for (i = 0; i < 4096; i++)
{
if (a [i] != 1|| b [i]!= 2)
{
printf («Error\n»);
break;
}
}
if(i == 4096) printf («OK\n»);

Задание 5. Объяснить участок программы и результаты ее выполнения.

#pragma opm parallel for num_threads(4)
for (int i = 0;i<a*a; i++)
{
int b = i + i;
printf («thread # = %d\ti = %d\tb= %d\n»,
omp_get_thread_num (), i, b);

Связанные записи