Контрольные вопросы к лабораторной работе №3

1. Методы распараллеливания и модели программ, поддерживаемые OpenMP.
2. Пояснить основные принципы выполнения ниже указанных директив.

Главная директива задания нитей:

#pragma omp parallel [clause clause ...]
  {
   . . .
  }

clause:    if(условие) 
           private(list)
           shared(list) 
           firstprivate(list)
           copyin(list)
           reduction(operator:list)

Директивы разделения работ по нитям

#pragma omp for [clause clause ...]
  {
    . . .
  }

clause:    schedule(type[,chink])
           ordered
           private(list)
           shared(list)
           firstprivate(list)
           lastprivate(list)
           reduction(operator:list)
           nowait

Параллельные секции
#pragma omp sections [clause clause ...]
  { . . .
    . . .
#pragma omp section
  { . . .
    . . .
  }
#pragma omp section
   { . . .
    . . .
   }
  }     // – end sections

clause: private(list)
           firstprivate(list)
           lastprivate(list)
           reduction(operator:list)
           nowait

Исполнение одной нитью

#pragma omp single [clause clause ...]
  {
    . . .
  }

clause:    private(list)
              firstprivate(list)
              nowait

Явное управление распределением работы

Директивы синхронизации

#pragma omp master
  {
   . . .
  }

#pragma omp critical[name]
  {
   . . .
  }

#pragma omp barrier

#pragma omp atomic

3. Как задаются параллельные процессы при умножении матрицы на вектор и матрицы на матрицу в OpenMP?