Главная / Программирование / Параллельное программирование с использованием инструментов и технологий Intel

Параллельное программирование с использованием инструментов и технологий Intel - ответы на тесты Интуит

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