Главная /
Программирование /
Оптимизация приложений с использованием компиляторов Intel
Оптимизация приложений с использованием компиляторов Intel - ответы на тесты Интуит
Правильные ответы выделены зелёным цветом.
Все ответы: Курс направлен на изучение основ оптимизации программ при помощи инструментов Intel. Для понимания лекционных материалов требуются базовые навыки программирования на языках C и Fortran.
Все ответы: Курс направлен на изучение основ оптимизации программ при помощи инструментов Intel. Для понимания лекционных материалов требуются базовые навыки программирования на языках C и Fortran.
Устройство управления (CU) предназначено для выполнения следующих функций
(1) дешифрация инструкций
(2) управляет ALU
(3) пересылка данных
(4) выполнение инструкций
(5) запуск ALU
Для чего предназначен VTune™ Performance Analyzer?
(1) для оптимизации скорости работы приложений
(2) для анализа производительности приложения
(3) для уменьшения размера приложения
(4) для ускорения компиляции приложения
Компиляторы каких языков предоставляет Intel® ?
(1) C/C++
(2) Java
(3) Oberon
(4) Forth
(5) Fortran
(6) C#
Для чего предназначен Loop Stream Detector?
(1) позволяет разбивать большие циклы на последовательность циклов меньшего размера
(2) позволяет избавиться от циклов
(3) позволяет ускорить исполнение циклов
(4) позволяет отказаться от выборки и декодирования инструкций для маленьких циклов
Векторизация циклов - это
(1) замена операций над скалярами на операции над векторами
(2) перевод растрового изображения в векторное
(3) внутренняя функция процессора
(4) компиляторная оптимизация
Что такое ядро процессора?
(1) часть процессора, которая извлекает из памяти и исполняет инструкции
(2) часть процессора, которая работает с общим кэшем
(3) часть процессора, которая выполняет арифметические операции над данными
OpenMP - это:
(1) опция компилятора, встраивающая код в исполняемый файл
(2) технология, позволяющая одновременно выполнять код на нескольких компьютерах
(3) технология для параллелизации вычислений на системах с общей памятью
(4) технология для параллелизации вычислений на системах с разделенной памятью
Что из перечисленного относят к хорошему стилю программирования?
(1) наличие безусловных переходов
(2) наличие операторов выхода из цикла
(3) модульность
(4) наличие меток
(5) короткие имена переменных
(6) ничего из перечисленного
В чем недостаток статического профилировщика
(1) работа только со статическими переменными
(2) не обрабатывает переменные типа указатель
(3) не поддерживает типизацию в полном виде
(4) грубая оценка весов переходов
(5) необходимость повторного запуска перед выполнением
Системная шина используется для
(1) передачи данных
(2) связи устройств ЦП
(3) вычислений команд
(4) хранения данных
VTune поддерживает языки:
(1) только C/C++
(2) только языки, поддерживаемые компилятором Intel
(3) только языки, поддерживаемые Microsoft Visual Studio
(4) ни один из перечисленных ответов
Внутреннее представление – это
(1) ассемблерный код
(2) чаще всего - граф
(3) объектный код
Вынесение инвариантов цикла
(1) находит и удаляет выражения независящие от индексных переменных цикла
(2) находит и выносит за пределы цикла выражения независящие от индексных переменных цикла
(3) находит и выносит инварианты цикла в другой цикл
(4) ничего из вышеперечисленного не делает
SIMD - это:
(1) принцип вычислений, позволяющий обеспечить параллелизм на уровне данных
(2) система Инструкций для Многопользовательского Доступа
(3) "Одни данные - много инструкций"
(4) вид компьютерной памяти
(5) "Одна инструкция - много данных"
Выберите свойство, характеризующее вычислительную систему с распределенной памятью:
(1) каждый процессор полностью автономен. Существует некоторая коммуникационная среда
(2) все процессоры равноудалены от памяти. Связь с памятью осуществляется через общую шину данных
(3) память физически распределена между процессорами. Единое адресное пространство поддерживается на аппаратном уровне
OpenMP использует следующую модель распараллеливания:
(1) модель
refork
: каждый раз при начале параллельного цикла создаются новые потоки
(2) модель
fork-join
: потоки создаются при первом вызове параллельного потока; каждый следующий раз используются уже созданные
(3) модель queue: все задачи записываются в очередь; создаются несколько "исполнителей"-потоков и выполняют задачи, которые есть в очереди
Что такое область видимости переменной?
(1) область, в которой нельзя определять другие переменные с таким же именем
(2) область памяти, значения из которой может принимать указатель
(3) область значений переменной
(4) контекст, для которого переменная определена
(5) базовый блок, в котором определяется переменная
Преимущества динамического профилировщика
(1) не используется статистика
(2) более точная оценка весов переходов
(3) оценка динамичности участков кода
(4) большее количество возможных оптимизаций
Тактовая частота процессора это
(1) частота, с которой работает таймер компьютера, посылающий синхроимпульсы микросхемам
(2) величина, кратная частоте, с которой работает таймер компьютера
(3) время выполнения самой быстрой команды
(4) минимальный квант времени вычислений
Какие инструменты входят в VTune?
(1) Hotspots
(2) Locks and Waits
(3) Valgrind
(4) Concurrency
Анализ потоков данных – это
(1) техника для анализа того, как данные перемещаются по шине
(2) способ сократить перекладывания данных из памяти в кэш
(3) техника для сбора информации о значениях переменных
Какая оптимизация является обратной к объединению циклов?
(1) вынесение условных переходов
(2) расщепление цикла
(3) перестановка циклов
(4) развертка цикла
(5) разбиение цикла
Что является с точки зрения компилятора векторной инструкцией
(1) сложение векторов
(2) умножение матрицы на вектор
(3) свёртка вектора
(4) вычитание векторов
(5) возведение вектора в степень
Какие свойства есть у вычислительных систем с распределенной памятью?
(1) хорошая масштабируемость
(2) разное время доступа к разным сегментам памяти
(3) хорошее межпроцессорное взаимодействие
(4) необходимость синхронизации подсистемы кэшей
Для того, чтобы после выполнения значение переменной скопировалось в общий поток, необходимо:
(1) добавить переменную в список
private
(2) добавить переменную в список
lastprivate
(3) добавить переменную в список
lastshared
(4) технология не позволяет произвести данное действие
Какие недостатки имеют оптимизации процедурного уровня?
(1) могут быть использованы для процедур, но не для функций
(2) учитывают массивы только константной длинны
(3) не могут быть использованы в нагруженных функциях
(4) каждый вызов процедуры для них – "чёрный ящик"
(5) не учитывают данные типа запись
Когда требуются динамические структуры данных?
(1) в случае, когда имеется очень часто изменяемый итератор цикла
(2) когда величина итератора может выходить за пределы типа данных
(3) для создания больших структур данных, размер которых не известен во время компиляции
(4) когда требуется в одной переменной хранить и строку и число
(5) когда отсутствует статистика запусков
Какие факторы не влияют на производительность процессора?
(1) тактовая частота процессора
(2) качество предсказания переходов
(3) используемая операционная система
За что отвечает Counter monitor?
(1) за обнаружение критических участков памяти и соотнесение их с критическими участками кода
(2) за подсчет общего количества событий, без привязки к месту в программе, их вызвавших
(3) за сбор данных о последовательности вызовов функций
SSA-представление – это
(1) представление, в котором каждая функция выполняется один раз
(2) представление, в котором каждая переменная используется один раз
(3) представление, в котором каждая переменная имеет одно определение
(4) конечное представление, после проведения всех оптимизаций
Что такое расщепление цикла?
(1) оптимизация, которая расщепляет один цикл на два и более
(2) оптимизация, которая пытается упростить цикл "отщеплением" ненужных итераций
(3) оптимизация, которая пытается упростить цикл "отщеплением" крайних итераций
Какой размер имеют регистры xmm?
(1) 16 бит
(2) 32 бита
(3) 64 бита
(4) 128 бит
(5) 256 бит
Какие недостатки есть у системы с распределенной памятью?
(1) медленное межпроцессорное взаимодействие
(2) плохая масштабируемость
(3) большие затраты на синхронизацию подсистем кэшей
(4) разное время доступа к разным сегментам памяти
Директива
nowait
используется для:
(1) избавления от надписи "Press any key to exit" в конце выполнения программы
(2) указания компилятору, что необходимо начинать код, не дожидаясь окончания инициализации
(3) отключения неявной синхронизации потоков в конце цикла
(4) отключения искусственных задержек в потоках
Что является вершиной в графе вызовов?
(1) программа с указанным временем вызова
(2) программа без времени вызова
(3) переменная программы
(4) функция программы
(5) базовый блок
Выберите верные утверждения
(1) количество регистров обычно превосходит количество переменных в программе
(2) для распределения регистров используется метод рисования
(3) одна из базовых задач кодогенератора – распределение регистров
Суперскалярный процессор это
(1) процессор, специализированный для выполнения скалярных операций
(2) процессор, способный исполнять несколько операций за один такт
(3) ничего из вышеперечисленного
Что может являться причиной плохого использования ресурсов программой?
(1) конкуренция за ресурсы
(2) «Узкие места» - bottlenecks
(3) большое количество зависимостей по данным
(4) однопоточность
Может ли один компилятор иметь два разных Front End
(1) не может
(2) только когда речь об одном языке
(3) только когда выполнен критерий Петрова
(4) может, но только для двух
(5) может
Как реализуется развертка циклов?
(1) большой цикл разбивается на последовательное выполнение большого числа маленьких циклов
(2) за счет объединения нескольких итераций цикла в одну
(3) за счет подстановки тел функций вместо вызовов функций
Что такое упакованный тип данных?
(1) тип данных, не содержащий незначащие нули
(2) тип данных, упакованный методом Хаффмана
(3) специальный тип, применяемый при архивировании
(4) тип данных, составляющий вектор
(5) тип данных, составляющий скаляр
Назовите плюсы использования многопоточных приложений.
(1) объем используемой оперативной памяти уменьшается пропорционально кол-ву используемых реальных ядер
(2) вычислительные ресурсы увеличиваются пропорционально кол-ву используемых реальных ядер
(3) уменьшается общее количество инструкций процессора
Какая директива используется для того, чтобы гарантировать корректную работу с переменной в левой части выражения?
(1)
SEMAPHORE
(2)
TRANSACTION
(3)
ATOMIC
(4)
CHECK SHARED
(5)
CONTROL SHARED
Статический граф вызовов это
(1) вызовы программы на репрезентативной выборке данных
(2) граф вызовов без учёта динамических переменных
(3) граф вызовов, построенный на этапе компиляции программы
(4) граф вызовов, построенный статистически
(5) такое понятие как статический граф вызовов не определяется в рамках курса
При распределении регистров выполняется:
(1) определение областей жизни переменных
(2) выделение наиболее значимых регистров
(3) сортировка регистров по размеру
(4) выделение области памяти для блока регистров
Для пересылки данных между ЦП и памятью, а также между ЦП и периферийными устройствами используются:
(1) системные регистры
(2) арифметико-логическое устройство (ALU)
(3) системная шина
(4) оперативная память (RAM)
Выберите случай
FLOW
зависимости между данными?
(1)
READ after WRITE
(2)
WRITE after WRITE
(3)
READ after READ
(4)
WRITE after READ
Что из перечисленного относится к синтаксическому анализу в компиляторе
(1) грамматический анализ
(2) пунктуационный анализ
(3) полиморфический анализ
(4) лексический анализ
(5) протаксический анализ
Какие из следующих утверждений верны относительно следующего фрагмента программы:
DO I=1,N
S1 A(I) = B(I) + 1
S2 B(I+1) = A(I) – 5
END DO
(1) в этом цикле есть зависимость
<S1,S2>
(2) в этом цикле есть цикловая зависимость
<S2,S1>
(3) в этом цикле есть зависимость по данным
(4) в этом цикле есть зависимость по управлению
(5) в этом цикле нет зависимостей
Для чего нужна опция /Qvec-report ?
(1) для управления векторизацией при компиляции
(2) для диагностики векторизации в процессе выполнения
(3) для диагностики векторизации в процессе компиляции
(4) для управления евристиками векторизации
В чем цель автоматической параллелизации?
(1) использование ресурсов многопроцессорной вычислительной системы без переписывания кода
(2) сделать более качественную, по сравнению с ручной, параллелизацию
(3) освободить программистов от ручной параллелизации
Какая опция определяет способ распределения итераций цикла по нитям?
(1)
SCHEDULE
(2)
TT
(3)
FORALL
(4)
THREADS
Для включения межфайловой оптимизации необходимо использовать ключ компилятора
(1)
/Qipf
(2)
/Qmulti-file
(3)
/Qipo
(4)
/Om
Для чего могут быть использованы зависимости по данным в процессе кодогенерации?
(1) для составления недостающих участков кода
(2) для определения возможности переиспользования данных
(3) для выделения несовместимых функций в отдельный граф несовместимости
(4) для определения несоответствия кода репрезентативной выборке
Способность процессора выполнять несколько операций за один такт это
(1) векторизация
(2) упреждающая выборка
(3) суперскалярность
(4) конвейеризация
(5) гиперпоточность
По какому признаку утверждения (statements) связываются в список в компиляторе Intel
(1) предыдущее и следующее
(2) по признаку наименьшего действия
(3) по признаку длиннейшей лексемы
(4) по признаку равенства
(5) по признаку не равенства
В каком случае зависимость
<S1,S2>
является антизависимостью.
(1) S1 X=…
S2 …=X
(2) S1 …=X
S2 X=…
(3) S1 X=…
S2 X=…
Назовите условие необходимое для применения автопараллелизации?
(1) отсутствие зависимостей в цикле
(2) отсутствие вложенных циклов
(3) необходима специальная подготовка программы человеком
Что такое анализ совмещений?
(1) анализ, при котором совмещается информация различных процедур
(2) анализ, совмещённый с построением
(3) поиск переменных, которые могут обозначать одинаковую область памяти
(4) поиск функций с пересекающимся временем работы
(5) поиск и анализ функций, исполняемых одновременно
За счет чего перестановка полей структуры может ускорить работу приложения?
(1) упрощение циклических конструкций
(2) за счет огрубления результатов
(3) уменьшение промахов по кэшу
(4) уменьшение условных переходов
Механизм упреждающей выборки (hardware prefetching) необходим для
(1) распараллеливания вычислений
(2) предсказания, какие данные понадобятся для исполнения программы и загрузки их в кэш
(3) увеличения пропускной способности процессора
Базовые блоки это
(1) блоки, из которых составляется программа в визуальном программировании
(2) участки кода, в которых производятся основные вычисления
(3) участки кода без переходов и меток
(4) участки кода, являющиеся входными для программы
(5) участки кода, являющиеся входными для функций программы
Что такое итерационный вектор?
(1) вектор целых чисел, каждое из которых представляет значение итерационной переменной для каждого цикла в порядке вложенности
(2) вектор целых чисел, каждое из которых представляет значение итерационной переменной для каждого цикла в порядке возрастания
(3) вектор целых чисел, каждое из которых представляет значение некоторой переменной после последовательности итераций
Какая директива может заставить компилятор параллелизовать следующий цикл?
(1)
#pragma concurrent call
(2)
#pragma concurrentize
(3)
#pragma prefer serial
(4)
#pragma serial
Что такое подстановка (inlining) ?
(1) подстановка значений переменных
(2) подстановка общих подвыражений
(3) подстановка глобальных вычислений
(4) подстановка тел процедур
В чем особенность хранения списков в динамической памяти?
(1) элементы могут быть расположены в памяти случайным образом
(2) элементы в любой момент могут быть уничтожены сборщиком мусора
(3) в списке должно быть больше пяти элементов
При исполнении с изменением последовательности операций (out-of-order execution) инструкции выполняются
(1) по мере поступления в конвейер
(2) по мере готовности
(3) согласно предсказателю переходов
Какие из нижеперечисленных утверждений верны?
(1) утверждение это наименьший независимый элемент языка программирования
(2) программа формируется как последовательность утверждений
(3) переменная это элементарное утверждение
(4) утверждение могут быть упорядочены лексически или в соответствии с графом потока
(5) утверждение это дерево утверждений
(6) утверждение состоит из выражений
Что такое свёртка констант?
(1) замена векторов скалярами
(2) одна из скалярных оптимизаций
(3) операция обратная векторизирующей развёртке
(4) уменьшение размерности пространства итераций при константных границах
Что такое OpenMP?
(1) это программный интерфейс, который поддерживает многопроцессорное программирование с общей памятью
(2) это программный интерфейс, который проверяет корректность параллелизации
(3) это программный интерфейс, который рассчитывает выгоду от применения параллелизации
Что понимается под устранением неоднозначности при работе с памятью?
(1) выделение объектов, которые могут пересекаться по памяти
(2) выделение объектов, которые занимают слишком много памяти
(3) выделение объектов, которые могут оказаться не инициализированными
Число циклов процессора, необходимых для передачи единицы данных из памяти — это
(1) время отклика (latency)
(2) тактовая частота процессора
(3) пропускная способность (bandwidth)
Граф потока управления
(1) определяет порядок утверждений в исходной программе
(2) определяет все пути которые будут пройдены при вычислении утверждения
(3) определяет как управление может передаваться от одного базового блока к другому
(4) определяет все пути которые могут быть пройдены при выполнении программы
Как реализуется параллелизация цикла с помощью функции в компиляторе Intel?
(1) запускаются несколько экземпляров функции в разных потоках с различными значениями границ цикла
(2) итерационное пространство цикла разбивается на несколько частей и каждый поток обрабатывает свою часть итерационного пространства
(3) запускаются несколько экземпляров функции в одном потоке с различными значениями границ цикла
(4) итерационное пространство цикла разбивается на несколько частей и каждый поток последовательно обрабатывает части итерационного пространства
Что делает опция
- anti-alias
?
(1) задействует правила ANTI aliasing в оптимизации
(2) убирает правила ANTI aliasing из оптимизаций
(3) позволяет компилятору выполнять оптимизации более агрессивно
Дерево выражений это
(1) раздел в справочнике по языку
(2) сокращенный способ записи синтаксиса
(3) сокращение, которое помогает запоминать только значимую часть оператора
(4) способ записи вычислений
(5) дерево, листы которого – явно выраженные лексемы
Какими методами можно использовать технику "предвыборки" для оптимизации приложений?
(1) использование директивы компилятора
(2) использование компиляторной опции для автоматической генерации команд "предвыборки"
(3) использование интринсиков
(4) покупка и инсталяция программы поддержки програмной предвыборки
Как компилятор определяет случай, в котором желательно произвести подстановку?
(1) только при помощи директив и указаний в тексте программы
(2) только при помощи директив
(3) она производится всегда, если это не запрещено опциями компилятора
(4) существует эвристический метод, при помощи которого это определяется
(5) подстановка не осуществляется пока это не указано явно в тексте программы
Операции в дереве выражений
(1) не присутствуют
(2) не могут располагаться в листьях
(3) должны быть удалены при генерации
(4) предшествуют только полным лексемам
Для того чтобы рекомендовать функцию к подстановке, можно использовать
(1) ключ компилятора
-Qinline<func>
(2) прагма
#pragma inline
перед телом функции
(3) ключевое слово
forceinline
в объявлении функции
(4) ключевое слово
inline
в описании функции Аббревиатура SSA означает
(1) SSe Alignment
(2) Simple Singles Alignment
(3) Static Single Assignment
(4) Sign Standard Association
Что такое клонирование функций?
(1) создание компилятором функции-клона, выполняемой на другом устройстве
(2) создание компилятором функции-клона, исполняемой только на встроенной видеокарте
(3) копирование тела функции и использование различных оптимизаций для различных копий
(4) одновременное исполнение функции на кластере или суперкомпьютере
Для эквивалентности вычислений необходимо выполнение следующих условий
(1) на одинаковых данных вычисляются одинаковые значений для выходных переменных
(2) порядок выполнения вычислений не зависит от входных данных
(3) сохраняется порядок вывода результатов вычислений
(4) вычисления используют одни и те же процессорно-зависимые наборы инструкций
Каким целям служит ALU
(1) дешифрация инструкций
(2) управляет самим собой
(3) пересылка данных
(4) выполнение арифметических операций
(5) связь между устройствами
Какую информацию позволяет получить VTune?
(1) где тратится основное время
(2) почему программа недостаточно эффективна
(3) где находится лишний код
(4) где код неправильно отформатирован
(5) где нужно улучшать производительность приложения
Под какие платформы предоставляются компиляторы Intel?
(1) Windows
(2) Linux
(3) MacOS X
(4) FreeBSD
(5) Solaris
Укажите условия, необходимые для применения большинства оптимизаций циклических конструкций
(1) циклы должны иметь определенное количество итераций
(2) циклы не должны иметь переходов за пределы цикла
(3) в цикле не должны быть использованы условные операторы
(4) в циклах не должно быть вызовов неизвестных функций
Технология MMX предоставляет:
(1) набор инструкций процессора для работы с пакетами целых чисел
(2) программный пакет для работы с мультимедиа
(3) дополнительные регистры
(4) Возможность быстрой работы с числами с плавающей точкой
(5) дополнительный модуль процессора для конвертации аудио и видео
Что является серьезным ограничением производительности современных вычислительных систем?
(1) количеством памяти
(2) тактовая частота процессоров
(3) скоростью взаимодействия с памятью
(4) наличие кэша второго уровня
Для распараллеливания необходимо:
(1) использовать ключ компилятора -Qomp. Компилятор сам выберет регионы, которые нужно распараллелить
(2) код для распараллеливания надо заключать в #pragma omp parallel start и end
(3) код для распараллеливания необходимо выделять в отдельные функции, помеченные интриником
__omp_parallel
(4) код для распараллеливания надо заключать в блоки, перед которыми надо включить прагму
#pragma omp parallel
Что из перечисленного относят к плохому стилю программирования?
(1) наличие циклических конструкций
(2) использование глобальных переменных
(3) длинные имена функций
(4) наличие операторов типа
if
(5) ничего из перечисленного
На основании какой информации статический профилировщик оценивает веса переходов
(1) входные данные
(2) анализ базовых блоков
(3) межпроцедурный анализ
(4) инлайнинг-анализ
(5) статистика запусков
Что такое производительность ЦП?
(1) передачи данных
(2) среднее время выполнения команд
(3) скорость передачи данных по шине
(4) число задач, выполняемых одновременно
Какие операционные системы поддерживаются VTune?
(1) OS/2
(2) VAX-VMS
(3) PDP-11
(4) Windows
(5) Linux
Выражение (expression) – это
(1) присваивание
(2) дерево выражений
(3) константа
(4) переменная
Почему происходит улучшение производительности при вынесении инвариантов циклов?
(1) потому что инварианты не несут смысловой нагрузки в цикле – их можно удалить
(2) потому что инварианты цикла эффективнее пересчитывать в отдельном цикле
(3) потому что инварианты цикла неизменны на каждой итерации – их можно вычислить один раз
Какие из следующих опций позволят программе работать на любом процессоре?
(1) -QxSSE4_1
(2) -arch:SSE3
(3) -QaxSSE3_1
(4) -QxSSE3
(5) -arch:SSE2_2
(6) -QaxSSE4_2
(7) -QxSSE2
Выберите свойство характеризующее вычислительную систему с общей памятью:
(1) каждый процессор полностью автономен. Существует некоторая коммуникационная среда
(2) все процессоры равноудалены от памяти. Связь с памятью осуществляется через общую шину данных
(3) память физически распределена между процессорами. Единое адресное пространство поддерживается на аппаратном уровне
Для распараллеливания цикла нужно использовать:
(1)
#pragma omp parallel for
(2)
#pragma omp parallel while
(3)
#pragma omp single
(4)
#pragma omp set parallel for
Какие цели преследует правильное форматирование кода?
(1) ускоряет инлайнинг
(2) разделяет области видимости переменных
(3) код становится проще читать
(4) компиляторные оптимизации упрощаются
(5) ничего из перечисленного
Что требуется для динамической профилировки программы
(1) набрать статистику запусков
(2) временно закомментировать все статические переменные в коде
(3) добавить в начало программы освобождение всей памяти из кучи
(4) выбрать наиболее часто используемые входные данные для программы
(5) проверить код на инлайнинг
Выберите верное утверждение
(1) механизм упреждающей выборки стремится определить закономерность в доступе к памяти, чтобы заранее подгружать нужные данные в кэш
(2) механизм кэширования использует принцип пространственной локальности, т. Е. использует данные, имеющие близкие области хранения
(3) кэш алиасинг — из-за благоприятного расположения в памяти различных объектов, в кэш заранее подгружается необходимая информация, что уменьшает нагрузку на системную шину
Какие функции выполняет Sampling?
(1) определение проблемных мест в коде программы
(2) показывает распределение работы по потокам
(3) определение проблем производительности на уровне микроархитектуры
(4) производит бинарную инструментацию пользовательской программы
Набор
Uses[b]
, конструирующийся для def-use chain, содержит:
(1) набор переменных, определяемых в блоке
(2) набор переменных, использующихся в блоке, и не имеющие в нем определений
(3) набор определений, достигающих b
За счет чего может достигаться улучшение производительности при разбиении циклов?
(1) за счет улучшения работы с памятью
(2) за счет уменьшения количества итераций
(3) за счет работы с большим количеством массивов одновременно
Для выполнения векторной операции требуется
(1) чтобы вектора составляли базис в n-мерном пространстве
(2) отсутствие коллинеарности векторов
(3) нормировка векторов
(4) модуль хотя бы одного из векторов не должен быть нулевым
(5) ничего из перечисленного
Какие свойства есть у вычислительных систем с общей памятью?
(1) хорошая масштабируемость
(2) разное время доступа к разным сегментам памяти
(3) хорошее межпроцессорное взаимодействие
(4) необходимость синхронизации подсистемы кэшей
По умолчанию все переменные, кроме локальных переменных функций и счетчиков цикла, добавляются в список:
(1)
private
(2)
shared
(3)
lastprivate
(4)
firstprivate
Какие недостатки имеют оптимизации процедурного уровня?
(1) могут быть использованы для процедур, но не для функций
(2) они лишены недостатков
(3) не учитываются переменные типа указатель
(4) неизвестны свойства глобальных переменных
(5) не производится векторизация
В чем неудобства динамического выделения памяти
(1) данные становятся фрагментированными
(2) динамические объекты не могут обмениваться информацией со статическими объектами
(3) нет возможности набрать статистику запусков
(4) пропадает детерминированность кода
(5) массивы попадают в более медленную область памяти
Современные процессоры Intel имеют архитектуру
(1) CISC
(2) RISC
(3) гибрид CISC и RISC
Какое событие отвечает за количество тактов
процессора?
(1)
L2_LINES_IN.SELF.DEMAND
(2)
BUS_TRANS_ANY.ALL_AGENTS
(3)
CPU_CLK_UNHALTED.CORE
(4) ничего из вышеперечисленного
Узел
M
доминирует над узлом N
, если
(1) существуют пути из
M
в N
(2) существуют пути из
N
в M
(3) все пути из
M
идут в N
(4) все пути в
N
идут через M
(5) все пути из
N
идут через M
Выберите фрагмент кода, получаемый после применения оптимизации расщепления цикла на заданном цикле:
p = 10;
for (i=0; i<10; ++i) {
y[i] = x[i] + x[p];
p = i;
}
(1) p = 10;
for (i=1; i<9; ++i) {
y[i] = x[i] + x[p];
p = i;
}
(2) y[0] = x[0] + x[10];
for (i=1; i<10; ++i) {
y[i] = x[i] + x[i-1];
}
(3) y[0] = x[0] + x[10];
for (i=1; i<9; ++i) {
y[i] = x[i] + x[i-1];
}
Какой размер имеют регистры ymm?
(1) 16 бит
(2) 32 бита
(3) 64 бита
(4) 128 бит
(5) 256 бит
Какие недостатки есть у системы с общей памятью?
(1) медленное межпроцессорное взаимодействие
(2) плохая масштабируемость
(3) большие затраты на синхронизацию подсистем кэшей
(4) разное время доступа к разным сегментам памяти
Для создания точки синхронизации необходимо использовать директиву
(1)
critical
(2)
barrier
(3)
atomic
(4)
master
(5)
sync
(6)
stop
Какую информацию отражают рёбра в графе вызовов?
(1) вложенность синтаксических конструкций
(2) использование одной функции из другой
(3) вызовы программ
(4) вызовы системных утилит
(5) системные вызовы
Выберите верные утверждения
(1) кодогенератор выравнивает базовые блоки в памяти
(2) кодогенератор помогает генерации исходного кода больших проектов
(3) кодогенератор выполняет специфические архитектурные оптимизации
(4) кодогенератор генерирует недостающие фрагменты функций
Выберете неверное утверждение
(1) компилятор — часть микропроцессора, отвечающая за перевод исходной программы на язык машинных команд или ассемблер
(2) компилятор — транслятор, который осуществляет перевод исходной программы на язык машинных команд или ассемблер
(3) только с помощью компилятора можно показать рост производительности МП, связанный с новыми командами, увеличением количества регистров и т.д.
Что такое критический код?
(1) наиболее часто исполняемый участок программы
(2) код, удаление которого не приводит к изменениям
(3) код, который не может достоверно воспроизвести результат
(4) код, правильность которого не доказана
(5) участок программы, который не содержит комментариев разработчика
Для того, чтобы перевести компилятор на другое внутреннее представление потребуется изменить
(1) входные данные
(2) Front End
(3) Back End
(4) практически все его части
(5) только само представление
Для чего используется полная развертка?
(1) нет такой оптимизации
(2) для развертки небольших циклов
(3) для развертки больших циклов
Что происходит с нулевыми битами в упакованном типе данных?
(1) ничего особенного
(2) незначимые нулевые биты опускаются
(3) сжимаются методом Хаффмана
(4) векторизуются
(5) скаляризуются
Назовите минусы использования многопоточных приложений.
(1) усложнение разработки
(2) создание потоков имеет свою цену
(3) объем используемой оперативной памяти увеличивается пропорционально кол-ву используемых ядер
(4) потоки конкурируют за ресурсы
(5) необходимость синхронизировать потоки
Какая директива используется для того, чтобы обозначить участок кода, исполняемый только главным потоком?
(1)
SOLO
(2)
MASTER
(3)
ONLYONE
(4)
OWNER
(5)
SUPER
(6)
CREATOR
Динамический граф вызовов это
(1) граф вызовов, учитывающий переменные типа "указатель"
(2) граф базовых блоков (base block graph)
(3) граф вызовов, построенный при вызове программы
(4) граф вызовов, который динамически определяет операционную систему и использует требуемые системные вызовы
(5) статический граф, вершины которого – темпоральные данные
Граф несовместимости строится
(1) в процессе распределения регистров
(2) для обратной кодогенерации
(3) только для некорректно определенного кода
(4) только для кода, который не проходит репрезентативную выборку
Время отклика (свойство памяти) — это
(1) частота синхронизирующих импульсов синхронной электронной схемы
(2) число циклов процессора, необходимых для передачи единицы данных из памяти
(3) количество элементов данных, которые могут быть отправлены процессору из памяти за один цикл
(4) количество операций, которые может выполнить процессор за 1 такт
Выберите случай
OUTPUT
зависимости между данными?
(1)
READ after WRITE
(2)
WRITE after WRITE
(3)
READ after READ
(4)
WRITE after READ
Что из перечисленного относится к синтаксическому анализу в компиляторе
(1) семантический анализ
(2) денотационный анализ
(3) превентивный анализ
(4) сингулярный анализ
(5) грамматический анализ
Необходимым условием существования зависимости по данным между утверждением
S1
и S2
являются следующие условия
(1) оба утверждения обращаются к одной и той же области памяти и модифицируют эту память
(2) оба утверждения обращаются к одной и той же области памяти и по крайней мере одно из них пишет в память
(3) существует возможный путь при исполнении программы от выражения
S1
к выражению S2
(4) не существует пути при исполнении программы от выражения
S1
к выражению S2
Для какой цели необходим интринсик
__alignof__
?
(1) для выравнивания текста
(2) для указания компилятору, как следует выравнивать объекты
(3) для получения информации о выравнивании разных типов
(4) для получения информации о выравнивании разных переменных
Что сообщает /Qpar-report3?
(1) сообщает какие зависимости препятствуют векторизации
(2) сообщает порядок выполнения итераций
(3) сообщает причины по которым компилятор не параллелизует тот или иной цикл
(4) информирует, если параллелизация невыгодна
Какие из перечисленных идентификаторов могут обозначать тип диспетчеризации?
(1)
dispatch
(2)
nodispatch
(3)
runtime
(4)
static
(5)
serial
(6)
ordered
Для выключения межпроцедурных оптимизаций используется ключ компилятора
(1)
/Qip-
(2)
/Qip-disable
(3)
/Qipo-disable
(4)
/Qno-ipo
Для чего используется планирование инструкций?
(1) для предсказания вероятностей переходов
(2) для повышения инструкционного параллелизма
(3) для сравнения прохождения контрольных точек программы с запланированным временем
(4) для составления графа несовместимостей
Пропускная способность (bandwidth) это
(1) количество элементов данных которые могут быть отправлены процессору из памяти за один цикл
(2) количество операций, которые может выполнить процессор за 1 такт
(3) количество инструкций, которые конвейер может выполнять одновременно
Среди утверждений в программе можно установить порядок
(1) лексикографический
(2) графосемантический
(3) полидинамический
(4) квазиитеративный
(5) семиденотационный
В каком случае зависимость
<S1,S2>
является выходной зависимостью.
(1) S1 X=…
S2 …=X
(2) S1 …=X
S2 X=…
(3) S1 X=…
S2 X=…
Действительно ли определение выгодности автопараллелизации – сложная задача?
(1) да, потому что существуют эффекты производительности, которые сложно оценить
(2) да, потому что компилятор может не иметь представления о количестве итераций в цикле
(3) нет, потому что автопараллелизация – цикловая неперестановочная оптимизация
(4) нет, потому что все необходимые данные для принятия решения доступны во время компиляции
Совмещение (выявляемое при анализе совмещений) может возникнуть между
(1) любыми переменными
(2) только переменными типа "указатель"
(3) любыми функциями
(4) любыми программами
Какие цели преследует разбиение структуры данных (structure splitting)?
(1) вынос редкоиспользуемых полей
(2) разбиение на структуры, группированные по разным типам
(3) разбиение на структуры, используемые в разных базовых блоках
(4) разделение полей по признаку длины названия
Конвейер – это
(1) это способ организации вычислений для увеличения числа инструкций, выполняемых в единицу времени
(2) способ определять, какие данные понадобятся для исполнения программы и загрузки их в кэш
(3) это механизм необходимый для предотвращения простоя процессора
Базовые блоки составляют
(1) граф потока управления
(2) граф базовых блоков (base block graph)
(3) базовый граф вычислений
(4) граф вычислений
(5) опорный граф вычислений
Необходимым условием существования цикловой зависимости по данным между утверждением S1 и S2 во множестве вложенных циклов являются следующие условия
(1) утверждение S1 на итерации i и утверждение S2 на итерации j обращаются к одной и той же области памяти
(2) одно из этих утверждений пишет в эту память
(3) оба этих утверждения пишут в эту память
Какая директива может заставить компилятор параллелизовать следующий цикл, если это безопасно?
(1)
#pragma prefer concurrent
(2)
#pragma concurrentize
(3)
#pragma prefer serial
(4)
#pragma serial
Какие цели преследует подстановка (inlining)?
(1) уменьшение накладных расходов
(2) упрощение анализа
(3) облегчение именования
(4) упрощение разыменования
(5) более короткие имена
Каким образом можно улучшить размещение элементов списка в динамической памяти
(1) отказавшись от сборщика мусора
(2) при помощи инлайнинга
(3) при помощи контейнеров
(4) используя несколько процессоров
Количество элементов данных, которые могут быть отправлены процессору из памяти за один цикл
(1) время отклика (latency)
(2) объем адресуемой памяти и скорость доступа к внешней памяти
(3) пропускная способность (bandwidth)
Базовый блок графа потока управления это
(1) непрерывная часть программы без переходов потока управления
(2) несколько утверждений выполняющихся последовательно
(3) несколько утверждений имеющих общего предшественника
(4) несколько выражений формирующих одно утверждение
(5) несколько утверждений формирующих узел блок-схемы алгоритма приложения
Как происходит взаимодействие параллелизации цикла с другими цикловыми оптимизациями в компиляторе Intel?
(1) при параллелизации невозможны другие цикловые оптимизации
(2) проводится оптимизация цикла, потом применяется параллелизация
(3) проводится параллелизация цикла, потом применяются оптимизации поточной функции
Что требуют правила ANTI aliasing?
(1) указатель может быть разыменован к объекту такого же типа
(2) указатель может быть разыменован к объекту произвольного типа
(3) указатель может быть разыменован к объекту примитивного типа
(4) указатель может быть разыменован к объекту совместимого типа
Какие из нижеперечисленных утверждений верны?
(1) выражение это дерево выражений с граничными выражениями на конце
(2) каждое выражение имеет список предшествующих и последующих выражений
(3) выражения упорядочены лексически или в соответствии с графом потока управления
(4) граничными выражениями являются переменные и константы
(5) несколько выражений формируют утверждение
Цикловые оптимизации являются:
(1) перестановочными трансформациями
(2) трансформациями данных
(3) трансформациями переменных
Какие аргументы передаются в функцию, реализующую параллелизацию цикла в компиляторе Intel?
(1) границы цикла
(2) номер создаваемого потока для определения итерационного пространства для обработки
(3) все используемые объекты
Что принимается во внимание при устранении неоднозначности при работе с памятью?
(1) особенности языка
(2) Local Point To анализ
(3) результаты межпроцедурного анализа
(4) анализ производительности приложения
(5) аттрибуты и директивы установленные разработчиком
Листы в дереве выражений
(1) абсолютно не отличаются от других элементов
(2) соответствуют лексикографическому порядку
(3) должны быть удалены при генерации
(4) в отличии от других элементов, могут содержать переменные
(5) не существуют
В чем заключаются минусы использования техники "предвыборки"?
(1) попытка подгружать адреса в кэш может вызвать удаление из кэша нужных адресов
(2) реализация механизма "предвыборки" сильно ухудшает производительность приложения
(3) невозможность использования этой техники без аппаратной поддержки
Можно ли влиять на процесс подстановки?
(1) можно при помощи опций и текста программы
(2) можно только при помощи текста программы
(3) процесс подстановки можно только включить или выключить целиком из командной строки
(4) влиять на этот процесс не представляется возможным в силу особенностей используемых алгоритмов
Плюсы SSA формы:
(1) программа начинает занимать гораздо меньше места
(2) очевидность def-use цепочек
(3) используются специальные фунции-интриниксы
(4) используются регистры сопроцессора
(5) используются векторные регистры, которые ускоряют вычисления
Для того чтобы потребовать от компилятора подставить функцию можно использовать
(1)
#pragma forceinline
перед определением
(2)
#pragma forceinline
перед вызовом
(3)
#pragma inline
перед определением
(4)
#pragma inline
перед вызовом К скалярным оптимизациям относится:
(1) удаление излишних ветвлений
(2) вынос инвариантов циклов
(3) перемещение вычислений за пределы вызова
(4) перераспределение регистров
(5) скоростной инлайниг (high speed inline)
Что такое частичная подстановка функции?
(1) подстановка части кода на место вызова
(2) подстановка, при которой определяется имя-указатель, которое содержит название подставленной функции
(3) использование оптимизаций базовых блоков без трансформации кода
(4) это динамическая подстановка в процессе исполнения программы
Зависимость это
(1) связь между утверждениями программы такая, что эти утверждения вычисляют общий результат
(2) связь между утверждениями программы такая, что перестановка утверждений изменяет выдаваемый программой результат
(3) связь между утверждениями программы такая, что утверждения используют общие данные при вычислениях
(4) связь между утверждениями программы такая, что утверждения изменяют одну и ту-же ячейку памяти
Системные регистры – это
(1) память ALU
(2) память ЦП
(3) память для промежуточных данных
Какие требования к программам, анализируемым VTune?
(1) использовать только язык С++
(2) каждый исходный файл должен занимать не более 150 килобайт
(3) заголовочные файлы должны соответствовать стандарту VTune
(4) ни один из перечисленных ответов
Какую задачу выполняет Front End ?
(1) перевод программы из текстового во внутреннее представление
(2) скалярные оптимизации
(3) генерация кода
(4) линковка объектных файлов в исполняемые
(5) семантический анализ
Выберите фрагменты кода, пригодные для большинства цикловых оптимизаций
(1) for(i=0;i<U;i++)
a[i]=b[i];
(2) i=0;
do {
a[i]=b[i];
i++; } while(i<U);
(3) for(i=0;i<U;i++) {
a[j]=b[i];
j+=c*i; }
(4) for(i=0;i<n;i++) {
a[i]=i;
if(i<t) break;
}
SSE - это:
(1) технология, позволяющая одновременно применять одну инструкцию к множеству данных
(2) технология, позволяющая выполнять код на стороне сервера
(3) потоковое SIMD-расширение процессора
(4) расширение для конфигурации сервера
(5) язык программирования
На какие типы по использованию памяти делятся многопроцессорные системы?
(1) системы с общей памятью
(2) системы с распределенной памятью
(3) системы со случайным доступом к памяти
(4) системы с неоднородным доступом к памяти
При использовании технологии OpenMP поведение переменных следующее:
(1) в блоках переменных все переменные в разных потоках имеют собственный адрес и не перекрываются
(2) все переменные внутри блоков имеют один адрес. необходимо вручную заниматься проблемами одновременного доступа
(3) есть возможность указать, какие переменные имеют один адрес, а какие - разный
Каким образом сказывается использование глобальных переменных?
(1) никаким образом
(2) остаётся слишком мало имён для локальных
(3) увеличивается размер кода из-за длинных глобальных имён
(4) усложняется оптимизация
(5) зачастую усложняется читаемость кода
Статический профилировщик может использоваться
(1) только для статически типизированных языков
(2) в языках без указателей
(3) для анализа без учета входных данных
(4) для сбора статистики по запускам
(5) для оценки статичности распределения памяти
Факторы, влияющие на производитель¬ность процессора x86
(1) тактовая частота процессора
(2) объем адресуемой памяти и скорость доступа к внешней памяти
(3) cкорость исполнения и набор инструкций
(4) эффективность использования внутренней памяти, регистров
(5) качество конвейеризации
(6) качество предсказания переходов
(7) качество упреждающей выборки
(8) использование векторных инструкций
(9) параллелизация и многоядерность
Какие возможности предоставляет VTune?
(1) интеграция в Microsoft Visual Studio
(2) поддержка многоядерности и многопоточности
(3) обнаружение некорректной работы с памятью
(4) сбор и привязка к коду основных событий процессора
(5) учет энергопотребления процессора
Что из перечисленного является скалярной оптимизацией?
(1) свертка констант
(2) протяжка копий
(3) удаление повторных вычислений
(4) продвижение копий
(5) вынесение инвариантов цикла
Что такое инвариант цикла?
(1) выражения, независящие от индексных переменных цикла
(2) выражение, неизменное на каждой итерации
(3) выражение, используемое для проверки остановки выполнения цикла
(4) выражение, содержащее глобальные переменные
Что делает возможным проведение векторизации?
(1) отсутствие зависимостей в цикле
(2) использование специальный типов данных
(3) подключение модуля <vector>
(4) сохранение порядка зависимости после векторизации
Выберите свойство характеризующее вычислительную систему с неоднородным доступом к памяти:
(1) каждый процессор полностью автономен. Существует некоторая коммуникационная среда
(2) все процессоры равноудалены от памяти. Связь с памятью осуществляется через общую шину данных
(3) память физически распределена между процессорами. Единое адресное пространство поддерживается на аппаратном уровне
Следующий модификатор не является служебным для OpenMP:
(1)
nowait
(2)
prefork
(3)
schedule
(4)
reduction
Какие цели преследует правильное разбиение программы на процедуры и функции?
(1) стандартизация
(2) сериализация
(3) растеризация
(4) декомпозиция
(5) абстрактизация
Отличия динамического профилирования от статического
(1) в более грубом предсказании переходов
(2) в наличии статистики
(3) в отсутствии статистики
(4) в том, что учитываются данные типа указатель
(5) в скоростном инлайнинге
Определенный участок памяти внутри ЦП, используемый для хранения информации, обрабатываемой процессором это
(1) оперативная память
(2) системные регистры
(3) системная шина
Что такое профилирование программы?
(1) бинарная инструментация
(2) сбор различных характеристик
(3) пересборка программы
(4) составление документации пользователя
Для понимания, какие определения будут использоваться в блоке, необходимо знать:
(1)
Uses[b]
(2)
Killed[b]
(3)
Reaches[b]
(4)
Defsout[b]
Из-за чего может происходить потеря производительности при работе с большим циклом?
(1) из-за большого количества арифметических операций
(2) если цикл работает с большим количеством различных массивов, то может происходить вытеснение из кеша необходимых для последующих операций адресов
(3) из-за вытеснения регистров по причине большого количества инвариантов цикла
Могут ли четыре несвязанные явным образом переменные исходной программы быть компонентами одного вектора в результате преобразования векторизации?
(1) никогда
(2) могут
(3) только если между ними может быть установлен строгий лексикографический порядок
(4) только для операции сложения
(5) только для операции умножения
Какие свойства есть у вычислительных систем с неоднородным доступом к памяти?
(1) хорошая масштабируемость
(2) разное время доступа к разным сегментам памяти
(3) хорошее межпроцессорное взаимодействие
(4) необходимость синхронизации подсистемы кэшей
Shedule clause
принимает параметром следующие типы:
(1)
static
(2)
dynamic
(3)
variant
(4)
object
(5)
guided
(6)
int
(7)
realtime
(8)
runtime
Какие недостатки имеют оптимизации процедурного уровня?
(1) недостаточная сериализация переменных
(2) неоптимальная работа с памятью
(3) неизвестны многие свойства переданных в процедуру параметров
(4) они лишены недостатков
(5) не производятся оптимизации циклических конструкций
Динамическое выделение памяти
(1) ведет к отказу от использования статистики запусков
(2) использует менеджер памяти
(3) используется для разделения блоков программы
(4) обязательно при обработке быстроизменяющихся переменных
(5) необходимо для хранения структурированных данных
Почему время доступа к регистрам меньше, чем к ячейкам ОЗУ?
(1) они располагаются внутри ЦП
(2) регистры ЦП расположены в самом быстром кэше
(3) доступ к ним осуществляется параллельно с вычислением
Какое событие отвечает за неправильно предсказанные ветвления?
(1)
L2_LINES_IN.SELF.DEMAND
(2)
INST_RETIRED.ANY
(3)
BR_INST_RETIRED.MISPRED
(4) ничего из вышеперечисленного
Граница доминирования – это
(1) граница между доминируемыми и недоминируемыми узлами
(2) граница между доминируемыми и доминирующими узлами
(3) список вершин, доминируемых данной
Для чего используется развертка цикла?
(1) для уменьшения количества условных переходов в цикле
(2) для разбиения большого цикла на последовательное выполнение большого числа маленьких циклов
(3) для уменьшения количества вложенных циклов
(4) для удаления вызовов функций
Сколько регистров xmm поддерживается в emm64t
(1) 4
(2) 8
(3) 16
(4) 32
(5) 64
Какие недостатки есть у системы с неоднородным доступом к памяти?
(1) медленное межпроцессорное взаимодействие
(2) плохая масштабируемость
(3) большие затраты на синхронизацию подсистем кэшей
(4) разное время доступа к разным сегментам памяти
Сколько нитей могут находиться одновременно в критической секции?
(1) 0
(2) 1
(3) 2
(4) возможно произвольное количество, поскольку OpenMP не ограничивает число потоков
По какой причине граф вызовов может являться не полным?
(1) используются библиотеки, свойства функций которых неизвестны
(2) используются переменные типа "указатель"
(3) используется однократное присваивание
(4) неизвестна полная статистика вызовов
(5) неизвестна статистика по системным вызовам
Выберите верное утверждение
(1) кодогенератор вычисляет дистанции переходов
(2) кодогенератор генерирует код по репрезентативной выборке
(3) кодогенератор выполняет контроль динамической памяти
Суперскалярность процессора это
(1) Возможность работать с векторами вместо скаляров
(2) Способность исполнять несколько операций за один такт
(3) Ничего из вышеперечисленного
Какие условия могут помешать векторизации?
(1) никакие
(2) наличие зависимостей по итерациям
(3) наличие зависимостей по данным
(4) отсутствие зависимостей по данным
(5) отсутствие зависимостей по итерациям
Какая из частей компилятора в большей степени определяется входным языком?
(1) Front End
(2) Back End
(3) внутреннее представление
(4) кодогенератор
(5) профилировщик
Какие из следующих утверждений верны относительно следующего фрагмента программы:
S1 PI = 3.14
S2 R = 5
S3 AREA = PI*R **2
(1)
<S1,S2,S3>
эквивалентно <S1,S3,S2>
(2)
<S1,S2,S3>
эквивалентно <S2,S1,S3>
(3) существует зависимость
<S1,S3>
(4) существует зависимость
<S1,S2>
(5) существует зависимость
<S2,S3>
Операции с упакованными типами данных это
(1) только операции упаковки и распаковки
(2) операции, которые могут быть удалены из кода
(3) векторные операции
(4) операции, не учитывающие нулевые биты
(5) абстракция, поскольку ассемблер не содержит подобных операций
Какая директива означает последовательное исполнение?
(1)
SERIAL
(2)
ORDERED
(3)
SOLO
(4)
MASTER
(5)
guided
Динамический граф вызовов
(1) не даёт никаких преимуществ
(2) не учитывает данные типа
static
(3) использует абстрактные системные вызовы
(4) строится при вызове программы
(5) является всюду плотным
Что обозначают цвета в графе несовместимости?
(1) наиболее нагруженные участки кода
(2) наименее совместимые функции программы
(3) распределение регистров
(4) арифметические и логические преобразования данных
Суперскалярность – это
(1) способность процессора выполнять несколько операций за один такт
(2) частота синхронизирующих импульсов синхронной электронной схемы
(3) число циклов процессора необходимых для передачи единицы данных из памяти
(4) количество элементов данных, которые могут быть отправлены процессору из памяти за один цикл
Выберите случай
ANTI
зависимости между данными?
(1)
READ after WRITE
(2)
WRITE after WRITE
(3)
READ after READ
(4)
WRITE after READ
Что является входными данными для синтаксического анализа
(1) результирующий синтаксис
(2) БНФ-форма для результата
(3) текст программы
(4) репрезентативные выборки
(5) только синтаксис и ничего больше
Что такое нормализованный цикл?
(1) цикл от 0 до некоторого N с шагом 1
(2) цикл от 1 до некоторого N c произвольным шагом
(3) цикл от 1 до некоторого N c шагом 1
Для чего рекомендуется располагать поля структуры по убыванию размера?
(1) для увеличения производительности
(2) для красоты
(3) для уменьшения размеров структуры в результате выравнивания
Какой оптимизацией является автопараллелизация в компиляторе Интел?
(1) цикловой неперестановочной
(2) нецикловой перестановочной
(3) цикловой перестановочной
(4) нецикловой неперестановочной
Какие из перечисленных идентификаторов могут обозначать тип диспетчеризации?
(1)
random
(2)
round-robin
(3)
guided
(4)
dynamic
(5)
serial
(6)
concurrent
Какой вид межпроцедурной оптимизации используется по умолчанию?
(1) никакой межпроцедурной оптимизации
(2) оптимизации без учёта переменных типа "указатель"
(3) оптимизации внутри одного файла
(4) многофайловый межпроцедурный анализ
Каким образом осуществляется планирование инструкций?
(1) изменением порядка инструкций
(2) составлением вероятностного плана переходов
(3) составлением списка времен прохождения контрольных точек программы
(4) распределением инструкций внутри графа несовместимостей
Суперскалярный процессор – это
(1) процессор с несколькими ядрами
(2) процессор с несколькими исполняющими устройствами
(3) процессор, исполняющий инструкции с изменением последовательности операций
Каким образом утверждения (statements) связываются в компиляторе Intel
(1) матрицей смежности
(2) таблицей Петрова
(3) графом потока управления
(4) денотационной семантикой
(5) никаким, связывание происходит на другом уровне
В каком случае зависимость
<S1,S2>
называется истинной
(1) S1 X=…
S2 …=X
(2) S1 …=X
S2 X=…
(3) S1 X=…
S2 X=…
Какая директива предлагает компилятору не параллелизировать следующий цикл?
(1)
#pragma prefer concurrent
(2)
#pragma no concurrentize
(3)
#pragma prefer serial
(4)
#pragma serial
Анализ указателей (points to analysis) это
(1) и есть анализ совмещений
(2) часть анализа совмещений
(3) анализ индексных переменных
(4) анализ инвариантов циклов
(5) ничего из перечисленного
С какой целью производится удаление излишних ссылок (pointer chasing)?
(1) лишние ссылки могут привести к неожиданному освобождению памяти
(2) процесс разыменования не всегда детерминирован, его лучше избегать
(3) каждое разыменование требует подгрузки структуры в память, что существенно для больших структур
(4) это нужно для только чтобы избежать лишних операций освобождения памяти
(5) удаление лишних ссылок относится только к стилю оформления программы, а не к скорости и компиляторной оптимизации
В полностью ассоциативной кэш-памяти
(1) каждый блок может отображаться в любое место КЭШа
(2) каждый блок может отображаться в одно место
(3) по младшим разрядам определяется строка КЭШа, где может отображаться данная память, выбор из которой проводится на ассоциативной основе
К базовым блокам относятся
(1) блоки входа
(2) сигнатуры функций
(3) тела всех функций, которые производят основные вычисления
(4) тела функций main и ей подобные
(5) заголовочные файлы системных библиотек
Для чего используются нормализованные циклы?
(1) для упрощения вычислений
(2) для повышения читаемости кода
(3) для приведения циклов к общему виду
С помощью чего реализована автопараллелизация?
(1) с помощью библиотек OpenMP
(2) с помощью VTune
(3) с помощью шаблонов проектирования
Какие минусы у подстановки (inlining) ?
(1) увеличение кода
(2) усложнение именования для пользователя
(3) увеличение времени работы
(4) повышение накладных расходов на вызов
Связанный динамический список хуже линейного потому что
(1) снижается вероятность попадания в кэш при последовательном обходе элементов
(2) множество возможных типов данных меньше
(3) добавляются накладные расходы на хранение ссылки
(4) данные ссылок постоянно меняются, а элементы перемещаются друг относительно друга
Векторизация это специальный вид распараллеливания программы, при котором
(1) процессор одной командой выполняет несколько обычно однотипных действий параллельно
(2) процессор одной командой выполняет несколько обычно разнотипных действий параллельно
(3) процессор одной командой выполняет несколько обычно однотипных действий по очереди
Вершинами графа потока управления являются
(1) выражения
(2) утверждения
(3) базовые блоки
(4) функции и процедуры приложения
(5) переменные
Существует ли зависимость в этом фрагменте кода и, если она есть, определите тип зависимости:
DO I=1,N
S1 A(I+1) =F(I)
S2 F(I+1) = A(I)
END DO
(1) зависимости нет
(2) зависимость превносимая циклом
(3) зависимость независимая от цикла
Как выглядит функция, реализующая параллелизацию цикла в компиляторе Intel?
(1) внутри находится исходный цикл и его исходные границы
(2) внутри находится исходный цикл, его границы определяются с помощью параметров функции
(3) внутри находится одна итерация исходного цикла
В каком случае невозможны перестановочные оптимизации?
(1) если есть объекты, которые могут не находиться в памяти
(2) если есть объекты, которые могут пересекаться по памяти
(3) если есть объекты, которые занимают слишком много памяти
Вид кэш-памяти, при котором каждый блок может отображаться в любое место КЭШа, это
(1) память с прямым отображением
(2) полностью ассоциативная кэш-память
(3) память с обратным отображением
Вершинами графа определения/использования являются
(1) базовые блоки, содержащие определение и использование переменной
(2) утверждения, содержащие определение и использование переменной
(3) выражения, содержащие определения и использование переменной
Что такое "предвыборка"?
(1) загрузка данных из относительно медленной памяти в кэш после того, как эта память непосредственно потребовалась процессору
(2) загрузка данных из кэша в память до того, как эти данные непосредственно потребовались процессору
(3) загрузка данных из относительно медленной памяти в кэш до того, как эта память непосредственно потребовалась процессору
(4) чтение адресов памяти с данными для последующей загрузки в кэш
Что объявляет атрибут
restrict
при объявлении указателя в языке С/С++?
(1) произвольный указатель может ссылаться на память, на которую он указывает
(2) только указатель может ссылаться на память, на которую он указывает
(3) только указатель или выражение базирующееся на этом указателе может ссылаться на память, на которую он указывает
Константы в дереве выражений
(1) могут быть расположены только в листьях
(2) не присутствуют
(3) могут быть удалены без потери значимости
(4) ссылаются на лексикографический порядок
При анализе программы при помощи приложения VTune одна из функций отсутствует, по какой причине это может произойти?
(1) большие потоки межпроцедурной информации привели к агрегированию в процессе исполнения
(2) функция была удалена в процессе подстановки
(3) название функции было изменено компилятором на системное, а VTune по ошибке не отобразил его
(4) это типичная ошибка глобальной области видимости
(5) имя функции случайно совпало с зарезервированным идентификатором
SSA-форма это:
(1) возможность получения доступа к SSE
(2) форма с однократным присваиванием
(3) специальная форма с инструкциями MMX
(4) формализованное векторное расширение
Для отключения подстановки используется опция
(1)
/Qb<0>
(2)
/Qnoinline
(3)
/Qinline<0>
"Мертвый код" может являться результатом
(1) ошибки сегментации
(2) оптимизирующих преобразований
(3) снижения скорости исполнения
(4) использования слишком длинных названий идентификаторов, которые занимают лишнее место
Какая межпроцедурная оптимизация используется в языке C++
(1) деконструктизация
(2) деобъектизация
(3) девиртуализация
(4) отмена наследования
(5) деполиморфизм
Зависимость между утверждениями S1 и S2 обязательно существует, если
(1) утверждения S1 и S2 расположены в одном базовом блоке и модифицируют одну и ту же переменную
(2) утверждения S1 и S2 расположены в разных базовых блоках и модифицируют одну и ту же переменную
(3) бзовый блок с утверждением S1 доминирует базовый блок с утверждением S2 и утверждения пишут в одну и ту же область памяти
(4) утверждение S2 следует непосредственно за S1 и оба читают одну и ту же переменную
КЭШ память различных уровней обычно различается
(1) скоростью доступа
(2) тем, что в первом уровне скаляры, во втором – суперскаляры, а в третьем – векто
(3) размерностью: одномерный, двумерный и трёхмерный КЭШ
(4) они равноправны и не различаются
Существует ли зависимость в этом фрагменте кода и, если она есть, определите тип зависимости:
DO I=1,N
S1 A(I)=…
S2 …=A(I)
END DO
(1) зависимости нет
(2) зависимость превносимая циклом
(3) зависимость независимая от цикла
Перестановочная оптимизация трансформирует вычисление в эквивалентное если
(1) оптимизация не добавляет и не удаляет выполняемых утверждений
(2) оптимизация не изменяет графа потока управления
(3) оптимизация не изменяет порядок зависимых утверждений
(4) работает с участками кода не содержащими зависимые утверждения
Векторизация – это
(1) сбор характеристик работы программы, таких как время выполнения отдельных фрагментов (обычно подпрограмм), число верно предсказанных условных переходов, число кэш промахов и т.д.
(2) перевод всей исходной программы в эквивалентную ей результирующую программу на языке машинных команд или на языке ассемблера
(3) процесс конвертации компьютерной программы из скалярного представления, в котором одна операция выполняется над парой операндов, в векторное представление, в котором одна операция выполняется над парой векторных операндов
Для каких целей используется прагма
__declspec(align(n))
?
(1) Указывает компилятору, что программа не должна компилироваться при нарушении выравнивания
(2) Указывает компилятору, как выравнивать объекты в памяти
(3) Указывает компилятору, что все типы надо выравнивать одинаково
(4) Запрещает компилятору выравнивание массивов с менее чем n элементами
Статический список лучше динамического потому что
(1) не требует накладных расходов по выделению памяти
(2) может содержать элементы произвольного размера
(3) моделируется на основе статистики
(4) может содержать данные типа "запись"