Главная / Программирование /
Параллельное программирование с использованием инструментов и технологий Intel / Тест 1
Параллельное программирование с использованием инструментов и технологий Intel - тест 1
Упражнение 1:
Номер 1
Технология программирования OpenMP расширяет язык программирования за счет:
Ответ:
 (1) новых ключевых слов 
 (2) новых библиотечных функций и переменных окружения 
 (3) новых директив и специальных комментариев 
Упражнение 2:
Номер 1
Отметьте верные утверждения об OpenMP:
Ответ:
 (1) OpenMP ориентирован в первую очередь на написание программ для векторно-конвейерных компьютеров 
 (2) большинство конструкций OpenMP реализуется с помощью спецкомментариев 
 (3) все переменные программы делятся на два класса: локальные и общие 
 (4) число параллельных потоков OpenMP приложения может определяться переменной окружения 
 (5) весь параллелизм приложения реализуется только с помощью параллельных циклов 
Упражнение 3:
Номер 1
В критические секции:
Ответ:
 (1) потоки входят последовательно в произвольном порядке 
 (2) потоки входят последовательно в соответствии с порядковым номером потока 
 (3) все потоки входят одновременно 
Упражнение 4:
Номер 1
Для распределения итераций цикла между потоками необходимо использовать следующую директиву OpenMP:
Ответ:
 (1) #pragma omp parallel for
 
 (2) #pragma omp for
, если данная директива находится внутри параллельного фрагмента 
 (3) #pragma parallel for
 
Упражнение 5:
Номер 1
Какая директива OpenMP может быть использована для синхронизации потоков:
Ответ:
 (1) #pragma omp barrier
 
 (2) #pragma omp waitall
 
 (3) #pragma omp wait
 
Упражнение 6:
Номер 1
Вы написали программу с использованием OpenMP. При запуске на 4-ядерной системе оказалось, что загрузка процессора равна 25%. Какова наиболее вероятная причина?
Ответ:
 (1) гонка данных в программе 
 (2) отсутствие ключа /openmp (/Qopenmp) при сборке программы 
 (3) плохая балансировка вычислительной нагрузки между потоками 
 (4) тупик в программе привел к зависанию трех потоков из четырех 
Упражнение 7:
Номер 1
Можно ли использовать директиву OpenMP #pragma omp for
в функции f()
, в которой не содержится директивы #pragma omp parallel
?
Ответ:
 (1) нет. Поскольку параллельные потоки в функции f()
не создаются, директива не может быть использована 
 (2) да. Но поскольку параллельные потоки в функции f()
не создаются, директива будет проигнорирована компилятором 
 (3) да. Будет ли цикл выполняться несколькими потоками, зависит от того, в каком контексте будет вызвана функция f()
: из параллельной секции или из последовательного кода 
 (4) да. Директива будет обработана компилятором, итерации цикла будут поделены между существующими в программе к моменту вызова функции f()
потоками 
Упражнение 8:
Номер 1
Имеется следующий код на OpenMP:
double a = 10.0;
#pragma omp parallel private(a)
{
...
}
Можно ли средствами OpenMP сделать так, чтобы локальные копии переменной а в каждом потоке имели то же значение, что и исходная переменная a
?
Ответ:
 (1) да. Это будет сделано автоматически 
 (2) да. Нужно заменить параметр private
на параметр firstprivate
 
 (3) нет. Такого способа не существует 
Упражнение 9:
Номер 1
Вы написали программу на языке C. Эта программа работает корректно на подготовленных тестовых данных, но скорость работы вас не устраивает. Каким инструментом, входящим в комплект поставки Parallel Studio, вы воспользуетесь для определения участка программы, на выполнение которого расходуется наибольшее количество времени?
Ответ:
 (1) Parallel Composer 
 (2) Parallel Inspector 
 (3) Parallel Amplifier 
 (4) Parallel Adviser 
Упражнение 10:
Номер 1
Вы написали программу на языке C. При сборке вашей программы выдаётся ошибка: "error LNK2019: unresolved external symbol…". Чем вы воспользуетесь для устранения этой ошибки?
Ответ:
 (1) Parallel Composer 
 (2) Parallel Inspector 
 (3) Parallel Amplifier 
 (4) Parallel Adviser 
 (5) другое 
Упражнение 11:
Номер 1
Вы написали параллельную программу с использованием потоков на языке C. Вы запустили вашу программу 100 раз на 4-хядерной машине. 98 раз программа отработала корректно, 2 раза программа выдала не корректные данные. Чем вы воспользуетесь в первую очередь при дальнейшей разработке программы?
Ответ:
 (1) Parallel Inspector в режиме Memory Errors 
 (2) Parallel Amplifier в режиме Hotspots 
 (3) Parallel Inspector в режиме Threading Errors 
 (4) Parallel Amplifier в режиме Concurrency 
Упражнение 12:
Номер 1
Под "гонками данных" понимается ситуация, когда:
Ответ:
 (1) несколько потоков работают с разделяемыми данными, и конечный результат зависит от соотношения скоростей потоков 
 (2) несколько потоков работают с данными, локализованными для каждого из потоков, и конечный результат собирается в одну переменную 
 (3) не хватает памяти для размещения данных 
Упражнение 13:
Номер 1
Под "тупиками" понимается ситуация, когда:
Ответ:
 (1) все потоки завершили свою работу 
 (2) возникла взаимная блокировка потоков, ожидающих наступления некоторого события для продолжения работы 
 (3) недостаточно ресурсов для запуска всех потоков  
Упражнение 14:
Номер 1
Библиотека Intel Threading Building Blocks предназначена:
Ответ:
 (1) для поиска ошибок в работе с динамической памятью 
 (2) для поиска гонок данных 
 (3) для распараллеливания программ в системах с общей памятью 
Упражнение 15:
Номер 1
Intel® Parallel Inspector НЕ позволяет
Ответ:
 (1) обнаруживать "гонки данных" (data races) в приложении 
 (2) профилировать приложение для получения максимальной производительности 
 (3) выявлять ошибки, связанные с памятью 
 (4) находить ошибки, связанные с памятью и многопоточностью как в последовательном, так и в параллельном приложении 
Упражнение 16:
Номер 1
Тип анализа, который отсутствует в Intel® Parallel Amplifier 2011:
Ответ:
 (1) Hotspot Analysis 
 (2) Threading Errors Analysis 
 (3) Concurrency Analysis 
 (4) Locks & Wait Analysis 
Упражнение 17:
Номер 1
Можно ли в OpenMP программе управлять количеством потоков выполняющих работу, не меняя кода программы?
Ответ:
 (1) нет, программа сама определяет количество потоков 
 (2) да, но только если программа сама не определяет количество потоков 
 (3) да, используя переменные окружения 
Упражнение 18:
Номер 1
Может ли в OpenMP программе случиться ситуация, когда один поток закончит выполнение двух параллельных регионов, в то время как другой поток все еще выполняет первый параллельный регион, при условии что все потоки запущены средствами OpenMP?
Ответ:
 (1) нет, после окончания каждого параллельного региона все потоки должны закончить его выполнение 
 (2) нет, в программе может быть только один параллельный регион 
 (3) да, каждый поток работает независимо 
Упражнение 19:
Номер 1
Может ли в OpenMP программе случиться ситуация, когда один поток закончит выполнение двух параллельных циклов, в то время как другой поток все еще выполняет первый параллельный цикл, при условии что все потоки запущены средствами OpenMP?
Ответ:
 (1) нет, после окончания каждого параллельного цикла все потоки должны закончить его выполнение 
 (2) нет, в программе может быть только один параллельный цикл 
 (3) да, каждый поток работает независимо 
 (4) да, но только если первый цикл объявлен с клаузой nowait и оба цикла принадлежат одному параллельному региону 
Упражнение 20:
Номер 1
Можно ли в OpenMP параллельном цикле выделить часть кода, которую потоки будут выполнять в определенном порядке, в то время как остальной код цикла будет выполнять ся параллельно?
Ответ:
 (1) нет, в параллельном цикле код выполняется потоками в неопределенном порядке 
 (2) нет, можно только выделять части кода для последовательного выполнения с помощью критических секций, но неопределенно, в каком порядке потоки будут выполнять выделенный код 
 (3) да, одну из секций кода можно выделить для последовательного выполнения потоками в порядке следования итераций с помощью директивы ordered