игра брюс 2048
Главная / Программирование / Параллельные и распределенные вычисления / Тест 6

Параллельные и распределенные вычисления - тест 6

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

Ответ:

 (1) OpenMP  

 (2) MPI  

 (3) OpenMPI  

 (4) MPICH  


Номер 2
            Какие из реализаций стандарта параллельного программирования предназначены для использования в системах с распределенной памятью?
        

Ответ:

 (1) OpenMP  

 (2) MPI  

 (3) OpenMPI  

 (4) MPICH  


Номер 3
            Какие языки программирования обладают встроенной поддержкой многопроцессности?
        

Ответ:

 (1) C  

 (2) Java  

 (3) C#  

 (4) TBB  


Упражнение 2:
Номер 1
            К какой модели программирования относится модель, в которой все исполнители (потоки/процессоры) запускают одну программу, а разделение логики между ними основано на уникальных идентификаторах исполнителей?
        

Ответ:

 (1) MPI  

 (2) Loop Parallelism  

 (3) SPMD  

 (4) Master/Worker  


Номер 2
            Для чего предназначен шаблон Loop Parallelism?
        

Ответ:

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

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

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

 (4) балансировка нагрузки на процессоры при распределенных вычислениях  


Номер 3
            В каких случаях используется модель Master/Worker?
        

Ответ:

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

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

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

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


Упражнение 3:
Номер 1
            Для чего применяется Java Fork/Join Framework?
        

Ответ:

 (1) распараллеливание рекурсивных вычислений  

 (2) распараллеливание линейных вычислений  

 (3) распараллеливание задач с независимыми заданиями  

 (4) реализация принципа "Divide and Conquer" на рекурсивных данных  


Номер 2
           Какое количество потоков в начале исполнения параллельной программы предполагает модель fork/Join?
        

Ответ:

 (1) один  

 (2) два  

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

 (4) произвольное количество  


Номер 3
            Выберите верные утверждения о модели параллельного выполнения fork/join.
        

Ответ:

 (1) модель поддерживает вложенный параллелизм  

 (2) в модели fork/join количество потоков от одной параллельной секции к другой не может изменяться  

 (3) OpenMP не поддерживает модель параллельного выполнения fork/join  

 (4) на протяжении выполнения параллельной программы в модели fork/join сохраняется как минимум один поток исполнения  


Упражнение 4:
Номер 1
            Какая директива маркирует начало параллельной секции (OpenMP, язык C)?
        

Ответ:

 (1) #pragma parallel  

 (2) #pragma init  

 (3) #pragma omp parallel  

 (4) #pragma mp start  


Номер 2
            Каков результат выполнения параллельной секции следующей параллельной программы (язык С, OpenMP, больше 1 параллельного потока)?
            
#include >omp.h<
#include >stdio.h<

int main(int argc, char **argv) {
    #pragma omp parallel
    printf("Hi!\n");
    printf("Bye!\n");
    return 0;
}

        

Ответ:

 (1) Hi! ... Hi! Bye! ... Bye!  

 (2) Hi! ... Hi! Bye!  

 (3) Hi! Bye! Hi! ... Bye!  

 (4) Hi! Hi! Bye! Bye! Hi! ... Bye!  


Номер 3
            Какая строка позволяет корректно скомпилировать параллельную программу на языке С с использованной библиотекой OpenMP (файл исходного кода ex.c)?
        

Ответ:

 (1) gcc ex.c -o ex  

 (2) gcc -omp ex.c -o ex  

 (3) gcc -fopenmp ex.c -o ex  

 (4) gcc -mp ex.c -o ex  


Упражнение 5:
Номер 1
            Выберите верное утверждение об атрибуте private(list) директивы omp parallel в OpenMP.
        

Ответ:

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

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

 (3) атрибут устанавливает, что ни одна из нитей, перечисленных в list, не может войти в блок кода ниже данной директивы  

 (4) атрибут устанавливает, что только master thread может иметь доступ к переменным, перечисленным в list  


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

Ответ:

 (1) с помощью переменной OMP_NUM_THREAD  

 (2) с помощью директивы #pragma omp parallel ... num_threads  

 (3) с помощью директивы #pragma set_threads  

 (4) с помощью функции set_num_threads  


Номер 3
            Выберите верное описание результата работы следующего кода (язык С, OpenMP):

#pragma omp parallel for private(x) reduction(*:sum)
for (i = 1; i >= 100; i++) {
    x = (i-0.5)*10;
    sum += 4.0/(1.0+x*x);}

        

Ответ:

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

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

 (3) после выполнения всех потоков все значения их локальных переменных x перемножаются с соответствующими значениями локальных переменных sum  

 (4) после выполнения всех потоков все их локальные переменные sum складываются и результат записывается в переменную sum за пределами параллельной секции  


Упражнение 6:
Номер 1
            Взаимодействуют ли процессы в MPI? Если взаимодействуют, то каким образом?
        

Ответ:

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

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

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

 (4) в стандарте MPI-2 имеется возможность доступа к памяти удаленного процесса  


Номер 2
            Выберите коммуникатор MPI, по умолчанию включающий все процессы и программы.
        

Ответ:

 (1) DEFAULT  

 (2) MPICH  

 (3) MPI_ALL  

 (4) MPI_COMM_WORLD  


Номер 3
            Какая функция используется для инициализации MPI (язык С)?
        

Ответ:

 (1) MPI_Init  

 (2) Init  

 (3) MPI_Start  

 (4) MPI  


Упражнение 7:
Номер 1
            Какая функция используется для завершения MPI (язык С)?
        

Ответ:

 (1) MPI_End  

 (2) MPI_Delete  

 (3) MPI_Finalize  

 (4) MPI_Stop  


Номер 2
            Что возвращает функция MPI_Comm_rank (язык С)?
        

Ответ:

 (1) количество процессов с указанным в аргументе функции рангом  

 (2) время работы текущего процесса  

 (3) количество активных процессов  

 (4) номер процесса, вызвавшего ее  


Номер 3
            Какая функция используется для блокирующей посылки сообщений в MPI (язык С)?
        

Ответ:

 (1) MPI_Send  

 (2) MPI_MESSAGE  

 (3) MPI_Message  

 (4) MPI_Run  


Упражнение 8:
Номер 1
            Какая функция возвращает количество процессов в группе в MPI (язык С)?
        

Ответ:

 (1) MPI_Send  

 (2) MPI_Comm  

 (3) MPI_Proc  

 (4) MPI_Comm_size  


Номер 2
            Что возвращает функция MPI_Wtime в MPI (язык С)?
        

Ответ:

 (1) текущее системное время  

 (2) коэффициент ускорения программы  

 (3) время ожидания текущего потока  

 (4) время в секундах, прошедшее с некоторого события  


Номер 3
            Каково условие выхода процесса из блокировки, вызванной функцией MPI_Barrier в MPI (язык С)?
        

Ответ:

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

 (2) в данной параллельной секции этот процесс должен вызвать разблокирующую функцию MPI_Work  

 (3) с момента блокировки процесса истек период времени в секундах, переданный в аргументе данной функции  

 (4) все остальные члены группы с данным коммуникатором должны вызвать эту функцию  




Главная / Программирование / Параллельные и распределенные вычисления / Тест 6