игра брюс 2048
Главная / Суперкомпьютерные технологии / Технологии построения и использования кластерных систем / Тест 7

Технологии построения и использования кластерных систем - тест 7

Упражнение 1:
Номер 1
Для организации параллельных вычислений в вычислительных системах с общей памятью необходимо:

Ответ:

 (1) обеспечить информационное взаимодействие между потоками 

 (2) выделить информационно независимые фрагменты вычислений, провести их программную реализацию, разместить полученные части программы в разных потоках и затем организовать информационное взаимодействие между потоками таким образом, что доступ к общей памяти для записи осуществляется только синхронно 

 (3) распределить исполняемые модули параллельной программы по ядрам процессора 


Номер 2
Для распределения вычислений между потоками в вычислительных системах с общей памятью необходимо:

Ответ:

 (1) выделить информационно независимые фрагменты вычислений, провести их программную реализацию и затем разместить полученные части программы в разных потоках 

 (2) разделить программу на равные части и распределить между потоками 

 (3) распределить исполняемые потоки параллельной программы по ядрам процессора 


Номер 3
Минимально необходимый набор операций для организации информационного взаимодействия между потоками в вычислительных системах с общей памятью включает в себя только:

Ответ:

 (1) операции записи, чтения и синхронизации доступа к общей памяти 

 (2) операции записи и чтения данных из общей памяти 

 (3) асинхронные операции записи и чтения данных из общей памяти 


Упражнение 2:
Номер 1
Под параллельной программой в рамках OpenMP понимается:

Ответ:

 (1) множество одновременно выполняемых потоков 

 (2) множество одновременно выполняемых процессов 

 (3) множество одновременно работающих процессоров 


Номер 2
Потоки параллельной программой в рамках OpenMP:

Ответ:

 (1) могут выполняться только на разных процессорах 

 (2) могут выполняться на разных процессах, если между процессорами есть общая память 

 (3) могут выполняются на разных ядрах одного процессора 


Номер 3
Количество потоков в рамках OpenMP программы:

Ответ:

 (1) определяетья в начале выполнения программы 

 (2) обычно совпадает с количеством ядер вычислительной системы 

 (3) может быть изменено в процессе работы программы 


Упражнение 3:
Номер 1
Среди предусмотренных в составе OpenMP директив, для организации параллельных фрагментов, существует:

Ответ:

 (1) #pragma omp paralle 

 (2) #paralle 

 (3) #pragma paralle for 


Номер 2
При применении директивы #pragma omp paralle:

Ответ:

 (1) программный код блока, следующий за директивой, дублируется или может быть разделен при помощи директив между потоками для параллельного выполнения 

 (2) пользователь должен прямо за ней написать код для каждого потока 

 (3) цикл, идущий непосредственной за директивой, распределяется по потокам 


Номер 3
При применении директивы #pragma omp paralle все данные используемые до директивы по умолчанию считаются:

Ответ:

 (1) общими 

 (2) локальными для потока 

 (3) распределенными 


Упражнение 4:
Номер 1
Среди параметров директивы OpenMP присутствуют:

Ответ:

 (1) private (list), где в списке указывается данные, которые нужно сделать локальными для потока 

 (2) num_process (cnt), для установления количество процессов параллельного фрагмента 

 (3) num_threads (cnt), для установления количество потоков параллельного фрагмента 


Номер 2
Потоки, между которыми выполняется передача данных, должны использовать общую память. Путь переменные объявлены внутри параллельного фрагмента. Тогда для того что бы их использовать для коммуникации необходимо использовать следующие свойство директивы #pragma omp paralle:

Ответ:

 (1) shared (list) 

 (2) private (list) 

 (3) num_threads (cnt) 


Номер 3
Если в параллельном фрагменте используються переменные, объявленные вне параллельного фрагмента, но требуется, что бы они использовались локально в каждом потоке необходимо использовать следующее свойство директивы #pragma omp paralle:

Ответ:

 (1) shared (list) 

 (2) private (list) 

 (3) num_threads (cnt) 


Упражнение 5:
Номер 1
Для распределения итераций циклов между потоками необходимо использовать следующую директиву:

Ответ:

 (1) #pragma omp parallel for 

 (2) #pragma omp parallel for если данная директива находиться внутри параллельного фрагмента 

 (3) #pragma parallel for 


Номер 2
Если нужно распараллелить следующий фрагмент через первый цикл
  
for (i=0; i < NMAX; i++) 
    for (j=0; j < NMAX; j++)
  
  то нужно использовать следующую директиву:
  

Ответ:

 (1) #pragma omp parallel for private(j) 

 (2) #pragma omp parallel for private(i, j) 

 (3) #pragma parallel for 


Номер 3
Если при распараллеливании цикла использовалась директива #pragma omp parallel for, и программист решил распределить по три итерации на поток, то необходимо использовать следующее свойство:

Ответ:

 (1) schedule (static , 3) 

 (2) schedule (dynamic , 3) 

 (3) schedule (guided , 3) 


Упражнение 6:
Номер 1
При статическом (static) распределении итераций цикла итерации распределяются:

Ответ:

 (1) итерации распределяються равномерными порциями 

 (2) вначале количество итераций отдаваемых потоку мало, а затем увеличивается 

 (3) вначале количество итераций отдаваемых потоку велико, а затем уменьшается 


Номер 2
При динамическом (dynamic) распределении итераций цикла итерации распределяются:

Ответ:

 (1) итерации распределяються равномерными порциями 

 (2) вначале количество итераций отдаваемых потоку мало, а затем увеличивается 

 (3) вначале количество итераций отдаваемых потоку велико, а затем уменьшается 


Номер 3
При управляемом (guided) распределении итераций цикла итерации распределяются:

Ответ:

 (1) итерации распределяються равномерными порциями 

 (2) вначале количество итераций отдаваемых потоку мало, а затем увеличивается 

 (3) вначале количество итераций отдаваемых потоку велико, а затем уменьшается 


Упражнение 7:
Номер 1
Если по завершению параллельного цикла по алгоритму нет необходимости в синхронизации, тогда в этом случае нужно использовать следующее свойство директивы:

Ответ:

 (1) nowait 

 (2) nobarrier 

 (3) wait 


Номер 2
При сборе результатов со всех потоков используется операция редукции reduction. Какие операции редукции поддерживает OpenMP:

Ответ:

 (1) +, -, * 

 (2) &, |, ^ 

 (3) », « 


Номер 3
Какая директива OpenMP может быть использована для синхронизации потоков:

Ответ:

 (1) #pragma omp barrier 

 (2) #pragma omp waitall 

 (3) #pragma omp wait 


Упражнение 8:
Номер 1
Для атомарного выполнения операций всеми потоками могут быть применены следующие директивы OpenMP:

Ответ:

 (1) #pragma omp atomic 

 (2) #pragma omp critical 

 (3) #pragma omp single 


Номер 2
В критические секции:

Ответ:

 (1) потоки входят последовательно в произвольном порядке 

 (2) потоки входят последовательно в соответствии с порядковым номером потока 

 (3) все потоки входят одновременно 


Номер 3
Для написания кода отдельно для каждого потока необходимо использовать следующую директиву OpenMP:

Ответ:

 (1) #pragma omp sections 

 (2) #pragma omp critical 

 (3) #pragma omp single 


Упражнение 9:
Номер 1
При помощи каких директив возможно определить однопотоковый участков для параллельных фрагментов:

Ответ:

 (1) #pragma omp single 

 (2) #pragma omp master 

 (3) #pragma omp critical 


Номер 2
Каким образом в OpenMP можно управлять количеством создаваемых потоков потоков:

Ответ:

 (1) при помощи функции void omp_set_num_threads (int num_threads); 

 (2) задавая переменную окружения OMP_NUM_THREADS 

 (3) задавая свойство директив num_threads (cnt) 


Номер 3
Какую информацию возможно получить при помощи библиотечных функций OpenMP:

Ответ:

 (1) количество потоков int omp_get_num_threads(void) 

 (2) количество вычислительных элементов int omp_get_num_procs(void) 

 (3) количество ядер на процессоре int omp_get_num_core(int numProc) 


Упражнение 10:
Номер 1
Каким образом возможно включить динамический режим создания потоков:

Ответ:

 (1) omp_set_dynamic (true); 

 (2) omp_set_dynamic (false); 

 (3) задать константу #define DYNAMIC true 


Номер 2
Каким образом можно разрешить режим вложенного параллелизма:

Ответ:

 (1) omp_set_nested (true); 

 (2) omp_set_nested (false); 

 (3) задать константу #define NESTED true 


Номер 3
Если применялись все способы задания количества потоков, то какой способ задания потоков обладает наибольшим приоритетом:

Ответ:

 (1) при помощи функции void omp_set_num_threads (int num_threads); 

 (2) задание переменной окружения OMP_NUM_THREADS 

 (3) задание свойство директив num_threads (cnt) 


Упражнение 11:
Номер 1
Какая последовательность применения семафоров правильная:

Ответ:

 (1) инициализация, установка, снятие 

 (2) установка, снятие, высвобождение 

 (3) снятие, установка, высвобождение 


Номер 2
Для чего применяются симафоры:

Ответ:

 (1) для синхронизации потоков 

 (2) для атомарного доступа к данным 

 (3) для определения участка кода, который будет выполнять только основной поток 


Номер 3
Каким образом действует функция int omp_test_lock (omp_lock_t &lock);:

Ответ:

 (1) если замок свободен, функция его закрывает и возвращает значение true 

 (2) если замок занят, поток не блокируется, и функция возвращает значение false 

 (3) если замок занят, поток блокируется, и функция возвращает значение false 


Упражнение 12:
Номер 1
Каким образом можно ограничить случаи, когда будет создан параллельный фрагмент:

Ответ:

 (1) при помощи свойства директивы if (scalar_expression) 

 (2) при помощи определения константы #define OPENMP scalar_expression 

 (3) при помощи директивы #pragma omp if 


Номер 2
Каким образом можно засечь время OpenMP программы:

Ответ:

 (1) при помощи функции omp_get_wtime(); 

 (2) при помощи функции get_wtime(); 

 (3) при помощи функции omp_get_date(); 


Номер 3
В каких операционных системах могут выполняться OpenMP программы:

Ответ:

 (1) во всех для которых есть компилятор поддерживающей конструкции OpenMP 

 (2) только в Windows и Linux 

 (3) во всех 




Главная / Суперкомпьютерные технологии / Технологии построения и использования кластерных систем / Тест 7