Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

все

.doc
Скачиваний:
299
Добавлен:
05.03.2016
Размер:
6.35 Mб
Скачать

Це модель паралельного програмування в рамках якої тільки для деяких паралельних потоків використовується один і той же код.

Це модель паралельного програмування в рамках якої тільки для деяких паралельних потоків використовується різний код.

Запитання 8: Множина варіантів

Директива компілятору про початок паралельного коду на C/C++

#pragma omp directive-name [опція[[,] опція]...]

#pragma mpi directive-name

#pragma mpi directive-name [опцiя[[,] опцiя]..

#pradma omp directive-name [опція[[,] опція]...]]

Запитання 9: Множинна відповідь

Директива компілятору про початок паралельного коду на Fortran

!$OMP directive-name [опція[[,] опція]...]

С$OMP directive-name [опція[[,] опція]...]

*$OMP directive-name [опція[[,] опція]...]

*$COMP directive-name [опція[[,] опція]...]

Запитання 10: Множинна відповідь

Всі директиви можна розділити на наступні категорії :

Визначення паралельної ділянки

Розподіл роботи

Синхронізації

Виявлення ефективних частин коду

Запитання 11: Множинна відповідь

Щоб задіяти функції бібліотеки OpenMР в програму потрібно включити файл заголовку:

omp.h (C)

omp_lib.h (Fortran)

omp.h (Fortran)

omp_lib.h (C)

Запитання 12: Множина варіантів

Всі функції що використовуються в OpenMР починаються з префіксу

omp_

parallel

parallel_opm_

parallel_ streams

Запитання 13: Множина варіантів

Для задання кількості потоків на яких буде виконуватися програма, в командній оболонці bash потрібно записати наступну команду:

export OMP_NUM_THREADS=n

export OMPI_NUMB_THREADS=n

import OMP_NUM_THREADS=n

export OPEN_MP_NUM_THREADS=n

Запитання 14: Множина варіантів

Для визначення часу виконання паралельної програми на мові “С” використовується функція:

double omp_get_wtime(void);

double omp_set_wtime(void);

double open_mp_get_wtime(void);

double open_mp_set_wtime(void);

Запитання 15: Множина варіантів

Для визначення часу виконання паралельної програми на мові “Fortran” використовується функція:

double precision function omp_get_wtime()

double function omp_get_wtime()

double detect function open_mp_get_wtime()

double function open_mp_get_wtime()

Запитання 16: Множина варіантів

Функція omp_get_wtick():

Повертає час у повному форматі

Повертає час в хвилинах

Повертає час в викликаному потоці у секундах

Повертає час з урахуванням часового діапазону

Запитання 17: Відповідність (графічне)

Поставити у відповідність

A. omp_get_wtime()

B. omp_get_wtick()

B. OMP_NUM_THREADS=n

A. визначення часу виконання паралельної програми

B. Повертає час в викликаному потоці у секундах

C. Задає кількість потоків на яких буде виконана програма

Запитання 18: Множинна відповідь

      В результаті виконання наступного коду на екран виводиться

#include <stdio.h>

#include <omp.h>

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

{

   double start_time, end_time, tick;

   start_time = omp_get_wtime();

   end_time = omp_get_wtime();

   tick = omp_get_wtick();

   printf("Time to time measurement %lf\n", end_time-start_time);

   printf("The accuracy of the timer %lf\n", tick);

}

Точність таймера

Час який потрібен на виконання функції заміру часу

Час який потрібен на виконання програми

Помилка виконання

Запитання 19: Множина варіантів

      В результаті виконання наступного коду на екран виводиться:

#include <stdio.h>

#include <omp.h>

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

{

  double start_time, end_time, tick;

  start_time = open_mp_get_wtime();

   end_time = open_mp_get_wtime();

  tick = open_mp_get_wtick();

  printf("Time to time measurement %lf\n", end_time-start_time);

  printf("The accuracy of the timer %lf\n", tick);

}

Час який потрібен на компіляцію програми

Час який потрібен на виконання функції заміру часу

Час який потрібен на виконання програми

Помилка

Запитання 20: Множина варіантів

Паралельна область програми на мові «С» задається за допомогою наступної директиви :

#pragma omp parallel [опція[[,] опція]...]

#pragma open_mp_ parallel [опція[[,] опція]...]

!$omp parallel [опцiя[[,] опцiя]...]

# omp parallel [опція[[,] опція]...]

Запитання 21: Множина варіантів

Паралельна область програми на мові «Fortran» задається за допомогою наступної директиви :

!$omp parallel [опцiя[[,] опцiя]...]

# omp parallel [опція[[,] опція]...]

#pragma omp parallel [опція[[,] опція]...]

!$openmp parallel [опцiя[[,] опцiя]...]

Запитання 22: Відповідність (графічне)

Покладіть у відповідність можливі опції директиви parallel їх функціям

A. If

B. num_threads

C. Default

D. Private

A. Виконання паралельної ділянки по умові. Входження в паралельну ділянку виконується тільки при виконання деякої умови

B. Явне задання кількості потоків, які будуть виконувати паралельну область

C. Всім змінним в паралельній області яким явно не присвоєний клас він присвоюється

D. Задає список змінних, для яких створюється локальна копія в кожному потоці, початкове значення локальних копій змінних із списку не визначено

Запитання 23: Множина варіантів

Опція директиви parallel “firstprivate” –

Задає список змінних, для яких створюється локальна копія в кожному потоці, локальні копії змінних ініціюються значеннями цих змінних в потоці-майстрі

Задає список змінних, спільних для всіх потоків

Задає список змінних, оголошених як threadprivate, які при вході в паралельну область ініціюються значеннями відповідних змінних в потоці-майстрі

Задає оператор і список спільних змінних, для кожної змінної створюються локальні копії в кожному потоці, локальні копії ініціалізуються відповідно типу оператора

Запитання 24: Множина варіантів

Опція директиви parallel “shared” –

Задає список змінних, для яких створюється локальна копія в кожному потоці, локальні копії змінних ініціюються значеннями цих змінних в потоці-майстрі

Задає список змінних, спільних для всіх потоків

Задає список змінних, оголошених як threadprivate, які при вході в паралельну область ініціюються значеннями відповідних змінних в потоці-майстрі

Задає оператор і список спільних змінних, для кожної змінної створюються локальні копії в кожному потоці, локальні копії ініціалізуються відповідно типу оператора

Запитання 25: Множина варіантів

Опція директиви parallel “copyin” –

Задає список змінних, для яких створюється локальна копія в кожному потоці, локальні копії змінних ініціюються значеннями цих змінних в потоці-майстрі

Задає список змінних, спільних для всіх потоків

Задає список змінних, оголошених як threadprivate, які при вході в паралельну область ініціюються значеннями відповідних змінних в потоці-майстрі

Задає оператор і список спільних змінних, для кожної змінної створюються локальні копії в кожному потоці, локальні копії ініціалізуються відповідно типу оператора

Запитання 26: Множина варіантів

Опція директиви parallel “reduction” –

Задає список змінних, для яких створюється локальна копія в кожному потоці, локальні копії змінних ініціюються значеннями цих змінних в потоці-майстрі

Задає список змінних, спільних для всіх потоків

Задає список змінних, оголошених як threadprivate, які при вході в паралельну область ініціюються значеннями відповідних змінних в потоці-майстрі

Задає оператор і список спільних змінних, для кожної змінної створюються локальні копії в кожному потоці, локальні копії ініціалізуються відповідно типу оператора

Запитання 27: Відповідність (графічне)

Поставте у відповідність опції директиви parallel

A. reduction

B. copyin

C. shared

D. firstprivate

A. Задає оператор і список спільних змінних, для кожної змінної створюються локальні копії в кожному потоці, локальні копії ініціалізуються відповідно типу оператора

B. Задає список змінних, оголошених як threadprivate, які при вході в паралельну область ініціюються значеннями відповідних змінних в потоці-майстрі

C. Задає список змінних, спільних для всіх потоків

D. Задає список змінних, для яких створюється локальна копія в кожному потоці, локальні копії змінних ініціюються значеннями цих змінних в потоці-майстрі

Запитання 28: Множина варіантів

1)      Дана програма виконує

#include <stdio.h>

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

{

   printf("Послідовна ділянка 1\n");

#pragma omp parallel

   {

      printf("Паралельна ділянка\n");

   }

   printf("Послідовна ділянка 2\n");

}

Звичайне виведення (послідовна ділянка 1, паралельна ділянка, послідовна ділянка 2)

Потік майстер виводить «Послідовна ділянка 1 », далі створюються нові потоки кожен з яки виводить «Паралельна ділянка », далі потоки завершуються і виводиться «Послідовна ділянка 2 »

Потік майстер виводить «Послідовна ділянка 1 », далі створюються нові потоки які виводять один запис «Паралельна ділянка», далі потоки завершуються і виводиться «Послідовна ділянка 2 »

Потік майстер виводить «Послідовна ділянка 1 », далі створюються нові потоки які виводять один запис «Паралельна ділянка», далі паралельні потоки виводять «Послідовна ділянка 2 »

Запитання 29: Множина варіантів

1)      Дана програма виконує:

#include <stdio.h>

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

{

   int count = 0;

#pragma omp parallel reduction (+: count)

   {

      count++;

      printf("Поточне значення count: %d\n", count);

   }

   printf("streams: %d\n", count);

}

Виведення кількості потоків

Виведення кількості задіяних процесорів

Виведення кількості змінних

Виведення кількості функцій

Запитання 30: Множина варіантів

Виклик функції «void omp_set_num_threads(int num);» дозволяє:

Змінити значення по замовчуванню змінної OMP_NUM_THREADS

Змінити значення по замовчуванню reduction

Запустити паралельні потоки

Зупинити всі запущені потоки

Запитання 31: Множина варіантів

Для динамічної зміни кількості потоків використовується наступна команда

export OMP_DYNAMIC=true

export OPEN_mp_DYNAMIC=true

export DYNAMIC=true

export OMP_SET_DYNAMIC=true

Запитання 32: Множина варіантів

Дізнатися значення змінної OMP_DYNAMIC можна за допомогою функції

omp_get_dynamic()

omp_get_parallel_dynamic()

omp_get_dynamic_laer()

omp_get_dn_dynamic_l()

Запитання 33: Множина варіантів

Функція omp_get_max_threads()

повертає максимально допустиме число потоків

повертає максимальне значення кожного з потоків

повертає максимально допустиме значення процесів

повертає ранг процесів

Запитання 34: Множина варіантів

Функція omp_get_num_procs():

Повертає кількість процесів

Повертає номер процесу

Повертає чергу процесів

Повертає кількість потоків

Запитання 35: Множина варіантів

Чи можна керувати вкладеними паралельними ділянками?

Так за допомогою OMP_NESTED

Так за допомогою OMP_INTEGSET

Так за допомогою OMP_DYNAMIC

Ні

Запитання 36: Множина варіантів

    Що виконує нижче наведений код ?

#include <stdio.h>

#include <omp.h>

void mode(void){

   if(omp_in_parallel()) printf("Паралельна ділянка\n");

   else printf("Послідовна ділянка\n");

}

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

{

   mode();

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]