все
.doc
![]()
Це
модель паралельного програмування в
рамках якої тільки для деяких паралельних
потоків використовується один і той же
код.
![]()
Це
модель паралельного програмування в
рамках якої тільки для деяких паралельних
потоків використовується різний код.
Запитання 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. визначення часу виконання паралельної програми 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. Виконання паралельної ділянки по умові. Входження в паралельну ділянку виконується тільки при виконання деякої умови B. Явне задання кількості потоків, які будуть виконувати паралельну область C. Всім змінним в паралельній області яким явно не присвоєний клас він присвоюється D. Задає список змінних, для яких створюється локальна копія в кожному потоці, початкове значення локальних копій змінних із списку не визначено |
Запитання 23: Множина варіантів
Опція директиви parallel “firstprivate” –
![]()
Задає
список змінних, для яких створюється
локальна копія в кожному потоці, локальні
копії змінних ініціюються значеннями
цих змінних в потоці-майстрі
![]()
Задає
список змінних, спільних для всіх потоків
![]()
Задає
список змінних, оголошених як threadprivate,
які при вході в паралельну область
ініціюються значеннями відповідних
змінних в потоці-майстрі
![]()
Задає
оператор і список спільних змінних, для
кожної змінної створюються локальні
копії в кожному потоці, локальні копії
ініціалізуються відповідно типу
оператора
Запитання 24: Множина варіантів
Опція директиви parallel “shared” –
![]()
Задає
список змінних, для яких створюється
локальна копія в кожному потоці, локальні
копії змінних ініціюються значеннями
цих змінних в потоці-майстрі
![]()
Задає
список змінних, спільних для всіх потоків
![]()
Задає
список змінних, оголошених як threadprivate,
які при вході в паралельну область
ініціюються значеннями відповідних
змінних в потоці-майстрі
![]()
Задає
оператор і список спільних змінних, для
кожної змінної створюються локальні
копії в кожному потоці, локальні копії
ініціалізуються відповідно типу
оператора
Запитання 25: Множина варіантів
Опція директиви parallel “copyin” –
![]()
Задає
список змінних, для яких створюється
локальна копія в кожному потоці, локальні
копії змінних ініціюються значеннями
цих змінних в потоці-майстрі
![]()
Задає
список змінних, спільних для всіх потоків
![]()
Задає
список змінних, оголошених як threadprivate,
які при вході в паралельну область
ініціюються значеннями відповідних
змінних в потоці-майстрі
![]()
Задає
оператор і список спільних змінних, для
кожної змінної створюються локальні
копії в кожному потоці, локальні копії
ініціалізуються відповідно типу
оператора
Запитання 26: Множина варіантів
Опція директиви parallel “reduction” –
![]()
Задає
список змінних, для яких створюється
локальна копія в кожному потоці, локальні
копії змінних ініціюються значеннями
цих змінних в потоці-майстрі
![]()
Задає
список змінних, спільних для всіх потоків
![]()
Задає
список змінних, оголошених як threadprivate,
які при вході в паралельну область
ініціюються значеннями відповідних
змінних в потоці-майстрі
![]()
Задає
оператор і список спільних змінних, для
кожної змінної створюються локальні
копії в кожному потоці, локальні копії
ініціалізуються відповідно типу
оператора
Запитання 27: Відповідність (графічне)
Поставте у відповідність опції директиви parallel
|
|
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();
