1) Отношение времени работы параллельной программы к времени работы последовательной программы
2) Отношение времени работы последовательной программы ко времени работы параллельной программы
3) Отношение времени работы самого медленного процесса к времени работы самого быстрого
4) Отношение времени работы самого быстрого процесса к времени работы самого медленного
94. Что такое эффективность параллельной программы?
1) Отношение времени работы параллельной программы к времени работы последовательной программы
2) Отношение времени работы последовательной программы ко времени работы параллельной программы
3) Отношение количества процессоров к ускорению программы
4) Отношение ускорения параллельной программы к количеству процессоров
95. Что такое стоимость вычислений по параллельной программе?
1) Наибольшее время выполнения параллельных процессов
2) Наименьшее время выполнения параллельных процессов
3) Полное время выполнения всех параллельных процессов
4) Эффективность, умноженная на количество процессоров
96. Что такое сверхлинейное ускорение?
1) Когда ускорение равно количеству процессоров
2) Когда ускорение меньше количества процессоров
3) Когда эффективность больше единицы
4) Когда эффективность меньше единицы
97. Когда возможно сверхлинейное ускорение?
1) При эффективной реализации параллельного алгоритма
2) При грамотном распределении данных
3) При нелинейной сложности алгоритма
4) При увеличении количества процессоров
98. Пусть f – доля последовательных вычислений в алгоритме. Сформулируйте закон Амдаля
1) Sp > 1/(f + (1-f)/p)
2) Sp ≤ 1/(f + (1-f)/p)
3) Sp ≤ 1/(f - (1+f)/p)
4) Sp > 1/(f + (1+f)/p)
99. Масштабируемость алгоритма определяет
1) степень сохранения эффективности при уменьшении количества процессоров.
2) степень сохранения эффективности при росте количества процессоров.
3) степень увеличения ускорения при росте количества процессоров.
4) степень увеличения стоимости при росте количества процессоров
100. Для сохранения эффективности обычно требуется
1) Увеличивать объем обрабатываемой информации.
2) Уменьшать объем обрабатываемой информации.
3) Увеличивать количество процессоров
4) Уменьшать количество процессоров
101. Виды декомпозиции при разработке параллельных программ
1) Итеративный параллелизм
2) Рекурсивный параллелизм
3) Функциональный параллелизм
4) Параллелизм по данным
102. Какие способы распределения данных используются при разработке матричных параллельных алгоритмов
1) Ленточное разбиение
2) Блочное разбиение
3) Диагональное разбиение
4) Циклическое разбиение
103. Какие алгоритмы сортировки могут быть распараллелены
1) сортировка пузырьком
2) сортировка слиянием
3) сортировка вставками
4) четно-нечетная сортировка
Open MP
104. Интерфейс OpenMP задуман как стандарт параллельного программирования для
1) многопроцессорных систем с общей памятью
2) многопроцессорных систем с разделенной памятью
3) кластерных систем
4) матричных систем
105. Основания для достижения эффекта при использовании OPEN MP
1) разделяемые для параллельных процессов данные располагаются в общей памяти
2) для организации взаимодействия не требуется операций передачи сообщений.
3) разделяемые для параллельных процессов данные располагаются в распределенной памяти
4) используется удаленный вызов процедур
106. Положительные стороны использования технологии OPEN MP
1) Можно распараллеливать последовательные программы поэтапно, не меняя их структуру
2) Нет необходимости поддерживать последовательный и параллельный вариант программы
3) Эффективно реализован обмен сообщениями
4) Поддержка в наиболее распространенных языках (C/C++, Fortran) и платформах (Windows, Unix)
107. Принципы организации параллелизма в Open MP
1) Использование потоков
2) Условная синхронизация
3) Использование семафоров
4) Пульсирующий параллелизм
108. При появлении директивы #parallel происходит
1) синхронизация, все потоки, кроме главного, уничтожаются
2) продолжается последовательное выполнение кода (до очередного появления директивы #parallel)
3) создание “команды” (team) потоков для параллельного выполнения вычислений
109. После выхода из области действия директивы #parallel происходит
1) синхронизация, все потоки, кроме master, уничтожаются
2) продолжается последовательное выполнение кода (до очередного появления директивы #parallel)
3) создание “команды” (team) потоков для параллельного выполнения вычислений
110. Перечислите типы директив Open MP
1) Определение параллельной области
2) Описание общих данных
3) Разделение работы
4) Синхронизация
111. Какой параметр не может использоваться в директиве parallel?
1) operator (list)
2) private (list)
3) shared (list)
4) reduction (operator: list)
112. Параметр shared определяет список переменных, которые
1) будут общими для всех потоков параллельной области: правильность использования таких переменных должна обеспечиваться программистом
2) будут локальными для каждого потока; переменные создаются в момент формирования потоков параллельной области; начальное значение переменных является неопределенным
3) перед использованием инициализируются значениями исходных переменных
4) запоминаются в исходных переменных после завершения параллельной области (используются значения потока, выполнившего последнюю итерацию цикла или последнюю секцию)
113. Параметр private определяет список переменных, которые
1) будут общими для всех потоков параллельной области правильность использования таких переменных должна обеспечиваться программистом
2) будут локальными для каждого потока; переменные создаются в момент формирования потоков параллельной области; начальное значение переменных является неопределенным
3) перед использованием инициализируются значениями исходных переменных
4) запоминаются в исходных переменных после завершения параллельной области (используются значения потока, выполнившего последнюю итерацию цикла или последнюю секцию)
114. Параметр firstprivate позволяет создать локальные переменные потоков, которые
1) будут общими для всех потоков параллельной области правильность использования таких переменных должна обеспечиваться программистом
2) будут локальными для каждого потока; переменные создаются в момент формирования потоков параллельной области; начальное значение переменных является неопределенным
3) перед использованием инициализируются значениями исходных переменных
4) запоминаются в исходных переменных после завершения параллельной области (используются значения потока, выполнившего последнюю итерацию цикла или последнюю секцию)
115. Параметр lastprivate позволяет создать локальные переменные потоков, значения которых
1) будут общими для всех потоков параллельной области правильность использования таких переменных должна обеспечиваться программистом
2) будут локальными для каждого потока; переменные создаются в момент формирования потоков параллельной области; начальное значение переменных является неопределенным
3) перед использованием инициализируются значениями исходных переменных
4) запоминаются в исходных переменных после завершения параллельной области (используются значения потока, выполнившего последнюю итерацию цикла или последнюю секцию)
116. Директива for для распределения вычислений в параллельной области обеспечивает
3) директива для указания последовательного выполнения кода
119. Распределение итераций в директиве for регулируется параметром (clause) schedule static
1) итерации делятся на блоки по chunk итераций и статически разделяются между потоками; если параметр chunk не определен, итерации делятся между потоками равномерно и непрерывно
2) распределение итерационных блоков осуществляется динамически (по умолчанию chunk=1)
3) размер итерационного блока уменьшается экспоненциально при каждом распределении; chunk определяет минимальный размер блока (по умолчанию chunk=1)
4) правило распределения определяется переменной OMP_SCHEDULE (при использовании runtime параметр chunk задаваться не должен)
120. Распределение итераций в директиве for регулируется параметром (clause) schedule dynamic
1) итерации делятся на блоки по chunk итераций и статически разделяются между потоками; если параметр chunk не определен, итерации делятся между потоками равномерно и непрерывно
2) распределение итерационных блоков осуществляется динамически (по умолчанию chunk=1)
3) размер итерационного блока уменьшается экспоненциально при каждом распределении; chunk определяет минимальный размер блока (по умолчанию chunk=1)
4) правило распределения определяется переменной OMP_SCHEDULE (при использовании runtime параметр chunk задаваться не должен)
121. Распределение итераций в директиве for регулируется параметром (clause) schedule guided
1) итерации делятся на блоки по chunk итераций и статически разделяются между потоками; если параметр chunk не определен, итерации делятся между потоками равномерно и непрерывно
2) распределение итерационных блоков осуществляется динамически (по умолчанию chunk=1)
3) размер итерационного блока уменьшается экспоненциально при каждом распределении; chunk определяет минимальный размер блока (по умолчанию chunk=1)
4) правило распределения определяется переменной OMP_SCHEDULE (при использовании runtime параметр chunk задаваться не должен)
122. Распределение итераций в директиве for регулируется параметром (clause) schedule runtime
1) итерации делятся на блоки по chunk итераций и статически разделяются между потоками; если параметр chunk не определен, итерации делятся между потоками равномерно и непрерывно
2) распределение итерационных блоков осуществляется динамически (по умолчанию chunk=1)
3) размер итерационного блока уменьшается экспоненциально при каждом распределении; chunk определяет минимальный размер блока (по умолчанию chunk=1)
4) правило распределения определяется переменной OMP_SCHEDULE (при использовании runtime параметр chunk задаваться не должен)
123. Директива barrier – определяет
1) точку синхронизации, которую должны достигнуть все процессы для продолжения вычислений (директива должны быть вложена в блок)
2) переменную, доступ к которой (чтение/запись) должна быть выполнена как неделимая операция
3) точку синхронизации, в которой системой должно быть обеспечено единое для всех процессов состояние памяти (т.е. если потоком какое-либо значение извлекалось из памяти для модификации, измененное значение обязательно должно быть записано в общую память)
124. Директива atomic – определяет
1) точку синхронизации, которую должны достигнуть все процессы для продолжения вычислений (директива должны быть вложена в блок)
2) переменную, доступ к которой (чтение/запись) должна быть выполнена как неделимая операция
3) точку синхронизации, в которой системой должно быть обеспечено единое для всех процессов состояние памяти (т.е. если потоком какое-либо значение извлекалось из памяти для модификации, измененное значение обязательно должно быть записано в общую память)
125. Директива flush – определяет
1) точку синхронизации, в которой системой должно быть обеспечено единое для всех процессов состояние памяти (т.е. если потоком какое-либо значение извлекалось из памяти для модификации, измененное значение обязательно должно быть записано в общую память)
2) точку синхронизации, которую должны достигнуть все процессы для продолжения вычислений (директива должны быть вложена в блок)
3) переменную, доступ к которой (чтение/запись) должна быть выполнена как неделимая операция
126. Взаимное исключение в Open MP может осуществляться
1) С помощью директивы critical
2) С помощью директивы atomic
3) С помощью функций библиотеки
4) С помощью директивы barrier
127. Переменные окружения в Open MP используются для