Главная /
Оптимизация приложений с использованием компиляторов Intel
Оптимизация приложений с использованием компиляторов Intel - ответы на тесты Интуит
Курс направлен на изучение основ оптимизации программ при помощи инструментов Intel. Для понимания лекционных материалов требуются базовые навыки программирования на языках C и Fortran.
Список вопросов:
- # Устройство управления (CU) предназначено для выполнения следующих функций
- # Каким целям служит ALU
- # Системные регистры – это
- # Системная шина используется для
- # Что такое производительность ЦП?
- # Факторы, влияющие на производитель¬ность процессора x86
- # Тактовая частота процессора это
- # Выберите верное утверждение
- # Определенный участок памяти внутри ЦП, используемый для хранения информации, обрабатываемой процессором это
- # Какие факторы не влияют на производительность процессора?
- # Современные процессоры Intel имеют архитектуру
- # Почему время доступа к регистрам меньше, чем к ячейкам ОЗУ?
- # Суперскалярный процессор это
- # Выберете неверное утверждение
- # Суперскалярность процессора это
- # Для пересылки данных между ЦП и памятью, а также между ЦП и периферийными устройствами используются:
- # Время отклика (свойство памяти) — это
- # Суперскалярность – это
- # Способность процессора выполнять несколько операций за один такт это
- # Пропускная способность (bandwidth) это
- # Суперскалярный процессор – это
- # Механизм упреждающей выборки (hardware prefetching) необходим для
- # Конвейер – это
- # В полностью ассоциативной кэш-памяти
- # При исполнении с изменением последовательности операций (out-of-order execution) инструкции выполняются
- # Векторизация это специальный вид распараллеливания программы, при котором
- # КЭШ память различных уровней обычно различается
- # Число циклов процессора, необходимых для передачи единицы данных из памяти — это
- # Количество элементов данных, которые могут быть отправлены процессору из памяти за один цикл
- # Вид кэш-памяти, при котором каждый блок может отображаться в любое место КЭШа, это
- # Для чего предназначен VTune™ Performance Analyzer?
- # Какую информацию позволяет получить VTune?
- # Какие требования к программам, анализируемым VTune?
- # VTune поддерживает языки:
- # Какие операционные системы поддерживаются VTune?
- # Какие возможности предоставляет VTune?
- # Какие инструменты входят в VTune?
- # Какие функции выполняет Sampling?
- # Что такое профилирование программы?
- # За что отвечает Counter monitor?
- # Какое событие отвечает за количество тактов процессора?
- # Какое событие отвечает за неправильно предсказанные ветвления?
- # Что может являться причиной плохого использования ресурсов программой?
- # Что такое критический код?
- # Какие условия могут помешать векторизации?
- # Выберите случай FLOW зависимости между данными?
- # Выберите случай OUTPUT зависимости между данными?
- # Выберите случай ANTI зависимости между данными?
- # Компиляторы каких языков предоставляет Intel® ?
- # Под какие платформы предоставляются компиляторы Intel?
- # Какую задачу выполняет Front End ?
- # Внутреннее представление – это
- # Выражение (expression) – это
- # Что из перечисленного является скалярной оптимизацией?
- # Анализ потоков данных – это
- # Набор Uses[b], конструирующийся для def-use chain, содержит:
- # Для понимания, какие определения будут использоваться в блоке, необходимо знать:
- # SSA-представление – это
- # Узел M доминирует над узлом N, если
- # Граница доминирования – это
- # Может ли один компилятор иметь два разных Front End
- # Для того, чтобы перевести компилятор на другое внутреннее представление потребуется изменить
- # Какая из частей компилятора в большей степени определяется входным языком?
- # Что из перечисленного относится к синтаксическому анализу в компиляторе
- # Что из перечисленного относится к синтаксическому анализу в компиляторе
- # Что является входными данными для синтаксического анализа
- # По какому признаку утверждения (statements) связываются в список в компиляторе Intel
- # Среди утверждений в программе можно установить порядок
- # Каким образом утверждения (statements) связываются в компиляторе Intel
- # Базовые блоки это
- # Базовые блоки составляют
- # К базовым блокам относятся
- # Какие из нижеперечисленных утверждений верны?
- # Какие из нижеперечисленных утверждений верны?
- # Вершинами графа потока управления являются
- # Граф потока управления
- # Базовый блок графа потока управления это
- # Вершинами графа определения/использования являются
- # Дерево выражений это
- # Листы в дереве выражений
- # Константы в дереве выражений
- # Операции в дереве выражений
- # Плюсы SSA формы:
- # SSA-форма это:
- # Аббревиатура SSA означает
- # К скалярным оптимизациям относится:
- # "Мертвый код" может являться результатом
- # Для эквивалентности вычислений необходимо выполнение следующих условий
- # Зависимость это
- # Зависимость между утверждениями S1 и S2 обязательно существует, если
- # Перестановочная оптимизация трансформирует вычисление в эквивалентное если
- # Для чего предназначен Loop Stream Detector?
- # Укажите условия, необходимые для применения большинства оптимизаций циклических конструкций
- # Выберите фрагменты кода, пригодные для большинства цикловых оптимизаций
- # Вынесение инвариантов цикла
- # Почему происходит улучшение производительности при вынесении инвариантов циклов?
- # Что такое инвариант цикла?
- # Какая оптимизация является обратной к объединению циклов?
- # За счет чего может достигаться улучшение производительности при разбиении циклов?
- # Из-за чего может происходить потеря производительности при работе с большим циклом?
- # Что такое расщепление цикла?
- # Выберите фрагмент кода, получаемый после применения оптимизации расщепления цикла на заданном цикле: p = 10; for (i=0; i<10; ++i) { y[i] = x[i] + x[p]; p = i; }
- # Для чего используется развертка цикла?
- # Как реализуется развертка циклов?
- # Для чего используется полная развертка?
- # Какие из следующих утверждений верны относительно следующего фрагмента программы: S1 PI = 3.14 S2 R = 5 S3 AREA = PI*R **2
- # Какие из следующих утверждений верны относительно следующего фрагмента программы: DO I=1,N S1 A(I) = B(I) + 1 S2 B(I+1) = A(I) – 5 END DO
- # Необходимым условием существования зависимости по данным между утверждением S1 и S2 являются следующие условия
- # Что такое нормализованный цикл?
- # В каком случае зависимость <S1,S2> является антизависимостью.
- # В каком случае зависимость <S1,S2> является выходной зависимостью.
- # В каком случае зависимость <S1,S2> называется истинной
- # Что такое итерационный вектор?
- # Необходимым условием существования цикловой зависимости по данным между утверждением S1 и S2 во множестве вложенных циклов являются следующие условия
- # Для чего используются нормализованные циклы?
- # Что такое свёртка констант?
- # Цикловые оптимизации являются:
- # Существует ли зависимость в этом фрагменте кода и, если она есть, определите тип зависимости: DO I=1,N S1 A(I+1) =F(I) S2 F(I+1) = A(I) END DO
- # Существует ли зависимость в этом фрагменте кода и, если она есть, определите тип зависимости: DO I=1,N S1 A(I)=… S2 …=A(I) END DO
- # Векторизация циклов - это
- # Технология MMX предоставляет:
- # SSE - это:
- # SIMD - это:
- # Какие из следующих опций позволят программе работать на любом процессоре?
- # Что делает возможным проведение векторизации?
- # Что является с точки зрения компилятора векторной инструкцией
- # Для выполнения векторной операции требуется
- # Могут ли четыре несвязанные явным образом переменные исходной программы быть компонентами одного вектора в результате преобразования векторизации?
- # Какой размер имеют регистры xmm?
- # Какой размер имеют регистры ymm?
- # Сколько регистров xmm поддерживается в emm64t
- # Что такое упакованный тип данных?
- # Что происходит с нулевыми битами в упакованном типе данных?
- # Операции с упакованными типами данных это
- # Для чего нужна опция /Qvec-report ?
- # Для какой цели необходим интринсик __alignof__ ?
- # Для чего рекомендуется располагать поля структуры по убыванию размера?
- # Векторизация – это
- # Что такое ядро процессора?
- # Что является серьезным ограничением производительности современных вычислительных систем?
- # На какие типы по использованию памяти делятся многопроцессорные системы?
- # Выберите свойство, характеризующее вычислительную систему с распределенной памятью:
- # Выберите свойство характеризующее вычислительную систему с общей памятью:
- # Выберите свойство характеризующее вычислительную систему с неоднородным доступом к памяти:
- # Какие свойства есть у вычислительных систем с распределенной памятью?
- # Какие свойства есть у вычислительных систем с общей памятью?
- # Какие свойства есть у вычислительных систем с неоднородным доступом к памяти?
- # Какие недостатки есть у системы с распределенной памятью?
- # Какие недостатки есть у системы с общей памятью?
- # Какие недостатки есть у системы с неоднородным доступом к памяти?
- # Назовите плюсы использования многопоточных приложений.
- # Назовите минусы использования многопоточных приложений.
- # В чем цель автоматической параллелизации?
- # Что сообщает /Qpar-report3?
- # Какой оптимизацией является автопараллелизация в компиляторе Интел?
- # Назовите условие необходимое для применения автопараллелизации?
- # Действительно ли определение выгодности автопараллелизации – сложная задача?
- # Какая директива предлагает компилятору не параллелизировать следующий цикл?
- # Какая директива может заставить компилятор параллелизовать следующий цикл?
- # Какая директива может заставить компилятор параллелизовать следующий цикл, если это безопасно?
- # С помощью чего реализована автопараллелизация?
- # Что такое OpenMP?
- # Какие аргументы передаются в функцию, реализующую параллелизацию цикла в компиляторе Intel?
- # Как выглядит функция, реализующая параллелизацию цикла в компиляторе Intel?
- # Как реализуется параллелизация цикла с помощью функции в компиляторе Intel?
- # Как происходит взаимодействие параллелизации цикла с другими цикловыми оптимизациями в компиляторе Intel?
- # Что такое "предвыборка"?
- # Какими методами можно использовать технику "предвыборки" для оптимизации приложений?
- # В чем заключаются минусы использования техники "предвыборки"?
- # OpenMP - это:
- # Для распараллеливания необходимо:
- # При использовании технологии OpenMP поведение переменных следующее:
- # OpenMP использует следующую модель распараллеливания:
- # Для распараллеливания цикла нужно использовать:
- # Следующий модификатор не является служебным для OpenMP:
- # Для того, чтобы после выполнения значение переменной скопировалось в общий поток, необходимо:
- # По умолчанию все переменные, кроме локальных переменных функций и счетчиков цикла, добавляются в список:
- # Shedule clause принимает параметром следующие типы:
- # Директива nowait используется для:
- # Для создания точки синхронизации необходимо использовать директиву
- # Сколько нитей могут находиться одновременно в критической секции?
- # Какая директива используется для того, чтобы гарантировать корректную работу с переменной в левой части выражения?
- # Какая директива используется для того, чтобы обозначить участок кода, исполняемый только главным потоком?
- # Какая директива означает последовательное исполнение?
- # Какая опция определяет способ распределения итераций цикла по нитям?
- # Какие из перечисленных идентификаторов могут обозначать тип диспетчеризации?
- # Какие из перечисленных идентификаторов могут обозначать тип диспетчеризации?
- # Что из перечисленного относят к хорошему стилю программирования?
- # Что из перечисленного относят к плохому стилю программирования?
- # Каким образом сказывается использование глобальных переменных?
- # Что такое область видимости переменной?
- # Какие цели преследует правильное форматирование кода?
- # Какие цели преследует правильное разбиение программы на процедуры и функции?
- # Какие недостатки имеют оптимизации процедурного уровня?
- # Какие недостатки имеют оптимизации процедурного уровня?
- # Какие недостатки имеют оптимизации процедурного уровня?
- # Что является вершиной в графе вызовов?
- # Какую информацию отражают рёбра в графе вызовов?
- # По какой причине граф вызовов может являться не полным?
- # Статический граф вызовов это
- # Динамический граф вызовов это
- # Динамический граф вызовов
- # Для включения межфайловой оптимизации необходимо использовать ключ компилятора
- # Для выключения межпроцедурных оптимизаций используется ключ компилятора
- # Какой вид межпроцедурной оптимизации используется по умолчанию?
- # Что такое анализ совмещений?
- # Совмещение (выявляемое при анализе совмещений) может возникнуть между
- # Анализ указателей (points to analysis) это
- # Что такое подстановка (inlining) ?
- # Какие цели преследует подстановка (inlining)?
- # Какие минусы у подстановки (inlining) ?
- # Что понимается под устранением неоднозначности при работе с памятью?
- # Что принимается во внимание при устранении неоднозначности при работе с памятью?
- # В каком случае невозможны перестановочные оптимизации?
- # Что делает опция - anti-alias?
- # Что требуют правила ANTI aliasing?
- # Что объявляет атрибут restrict при объявлении указателя в языке С/С++?
- # Для каких целей используется прагма __declspec(align(n)) ?
- # Как компилятор определяет случай, в котором желательно произвести подстановку?
- # Можно ли влиять на процесс подстановки?
- # При анализе программы при помощи приложения VTune одна из функций отсутствует, по какой причине это может произойти?
- # Для того чтобы рекомендовать функцию к подстановке, можно использовать
- # Для того чтобы потребовать от компилятора подставить функцию можно использовать
- # Для отключения подстановки используется опция
- # Что такое клонирование функций?
- # Что такое частичная подстановка функции?
- # Какая межпроцедурная оптимизация используется в языке C++
- # В чем недостаток статического профилировщика
- # На основании какой информации статический профилировщик оценивает веса переходов
- # Статический профилировщик может использоваться
- # Преимущества динамического профилировщика
- # Что требуется для динамической профилировки программы
- # Отличия динамического профилирования от статического
- # Когда требуются динамические структуры данных?
- # В чем неудобства динамического выделения памяти
- # Динамическое выделение памяти
- # Выберите верные утверждения
- # Выберите верные утверждения
- # Выберите верное утверждение
- # При распределении регистров выполняется:
- # Граф несовместимости строится
- # Что обозначают цвета в графе несовместимости?
- # Для чего могут быть использованы зависимости по данным в процессе кодогенерации?
- # Для чего используется планирование инструкций?
- # Каким образом осуществляется планирование инструкций?
- # За счет чего перестановка полей структуры может ускорить работу приложения?
- # Какие цели преследует разбиение структуры данных (structure splitting)?
- # С какой целью производится удаление излишних ссылок (pointer chasing)?
- # В чем особенность хранения списков в динамической памяти?
- # Каким образом можно улучшить размещение элементов списка в динамической памяти
- # Связанный динамический список хуже линейного потому что
- # Статический список лучше динамического потому что