Главная /
Программирование /
Введение в оптимизацию приложений с использованием компиляторов Intel
Введение в оптимизацию приложений с использованием компиляторов Intel - ответы на тесты Интуит
Правильные ответы выделены зелёным цветом.
Все ответы: Курс направлен на изучение различных видов оптимизаций на начальном уровне.
Все ответы: Курс направлен на изучение различных видов оптимизаций на начальном уровне.
Устройство управления (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#
Что из перечисленного относят к хорошему стилю программирования?
(1) наличие безусловных переходов
(2) наличие операторов выхода из цикла
(3) модульность
(4) наличие меток
(5) короткие имена переменных
(6) ничего из перечисленного
Какие тенденции можно заметить в развитии процессоров?
(1) добавляется больше параллелизма
(2) параллелизма становится меньше
(3) понижается скорость вычислений
(4) ничего из перечисленного
Системная шина используется для
(1) передачи данных
(2) связи устройств ЦП
(3) вычислений команд
(4) хранения данных
VTune поддерживает языки:
(1) только C/C++
(2) только языки, поддерживаемые компилятором Intel
(3) только языки, поддерживаемые Microsoft Visual Studio
(4) ни один из перечисленных ответов
Анализ потоков данных – это
(1) техника для анализа того, как данные перемещаются по шине
(2) способ сократить перекладывания данных из памяти в кэш
(3) техника для сбора информации о значениях переменных
Что такое область видимости переменной?
(1) область, в которой нельзя определять другие переменные с таким же именем
(2) область памяти, значения из которой может принимать указатель
(3) область значений переменной
(4) контекст, для которого переменная определена
(5) базовый блок, в котором определяется переменная
Векторизация циклов - это
(1) замена операций над скалярами на операции над векторами
(2) перевод растрового изображения в векторное
(3) внутренняя функция процессора
(4) компиляторная оптимизация
Какие факторы не влияют на производительность процессора?
(1) тактовая частота процессора
(2) качество предсказания переходов
(3) используемая операционная система
Какие инструменты входят в VTune?
(1) Hotspots
(2) Locks and Waits
(3) Valgrind
(4) Concurrency
Что из перечисленного относится к синтаксическому анализу в компиляторе
(1) грамматический анализ
(2) пунктуационный анализ
(3) полиморфический анализ
(4) лексический анализ
(5) протаксический анализ
Какие недостатки имеют оптимизации процедурного уровня?
(1) могут быть использованы для процедур, но не для функций
(2) учитывают массивы только константной длинны
(3) не могут быть использованы в нагруженных функциях
(4) каждый вызов процедуры для них – "чёрный ящик"
(5) не учитывают данные типа запись
SIMD - это:
(1) принцип вычислений, позволяющий обеспечить параллелизм на уровне данных
(2) система Инструкций для Многопользовательского Доступа
(3) "Одни данные - много инструкций"
(4) вид компьютерной памяти
(5) "Одна инструкция - много данных"
Суперскалярный процессор это
(1) процессор, специализированный для выполнения скалярных операций
(2) процессор, способный исполнять несколько операций за один такт
(3) ничего из вышеперечисленного
Какое событие отвечает за количество исполненных инструкций?
(1)
L2_LINES_IN.SELF.DEMAND
(2)
INST_RETIRED.ANY
(3)
BR_INST_RETIRED.MISPRED
(4) ничего из вышеперечисленного
Аббревиатура SSA означает
(1) SSe Alignment
(2) Simple Singles Alignment
(3) Static Single Assignment
(4) Sign Standard Association
Для включения межфайловой оптимизации необходимо использовать ключ компилятора
(1)
/Qipf
(2)
/Qmulti-file
(3)
/Qipo
(4)
/Om
Какой размер имеют регистры xmm?
(1) 16 бит
(2) 32 бита
(3) 64 бита
(4) 128 бит
(5) 256 бит
Для пересылки данных между ЦП и памятью, а также между ЦП и периферийными устройствами:
(1) используются системные регистры
(2) используется арифметико-логическое устройство (ALU)
(3) используется системная шина
(4) используется оперативная память (RAM)
Каким образом происходит оптимизация посредством VTune
(1) VTune модифицирует код программы с каждым запуском, настраивая его под архитектуру
(2) VTune модифицирует код программы только один раз, настраивая его под архитектуру
(3) VTune используется только для сбора информации, оптимизация производится вне VTune
(4) посредством редактирования ассемблерного кода в соответствующем разделе VTune
Что такое продвижение (протяжка) констант?
(1) увеличение их значений для улучшения качества программы
(2) увеличение их значений для ускорения программы
(3) замена использования константы на её значение
(4) константное увеличение времени жизни переменной
Когда требуются динамические структуры данных?
(1) в случае, когда имеется очень часто изменяемый итератор цикла
(2) когда величина итератора может выходить за пределы типа данных
(3) для создания больших структур данных, размер которых не известен во время компиляции
(4) когда требуется в одной переменной хранить и строку и число
(5) когда отсутствует статистика запусков
Что такое ядро процессора?
(1) часть процессора, которая извлекает из памяти и исполняет инструкции
(2) часть процессора, которая работает с общим кэшем
(3) часть процессора, которая выполняет арифметические операции над данными
Вынесение инвариантов цикла
(1) находит и удаляет выражения независящие от индексных переменных цикла
(2) находит и выносит за пределы цикла выражения независящие от индексных переменных цикла
(3) находит и выносит инварианты цикла в другой цикл
(4) ничего из вышеперечисленного не делает
Выберите верные утверждения
(1) количество регистров обычно превосходит количество переменных в программе
(2) для распределения регистров используется метод рисования
(3) одна из базовых задач кодогенератора – распределение регистров
Назовите плюсы использования многопоточных приложений.
(1) объем используемой оперативной памяти уменьшается пропорционально кол-ву используемых реальных ядер
(2) вычислительные ресурсы увеличиваются пропорционально кол-ву используемых реальных ядер
(3) уменьшается общее количество инструкций процессора
Для чего используются нормализованные циклы?
(1) для упрощения вычислений
(2) для повышения читаемости кода
(3) для приведения циклов к общему виду
Для чего могут быть использованы зависимости по данным в процессе кодогенерации?
(1) для составления недостающих участков кода
(2) для определения возможности переиспользования данных
(3) для выделения несовместимых функций в отдельный граф несовместимости
(4) для определения несоответствия кода репрезентативной выборке
Какая директива может сообщить компилятору, что вызов функции в следующем цикле безопасен для параллельного выполнения?
(1)
#pragma concurrent call
(2)
#pragma concurrentize
(3)
#pragma prefer serial
(4)
#pragma serial
Выберите случай
FLOW
зависимости между данными?
(1)
READ after WRITE
(2)
WRITE after WRITE
(3)
READ after READ
(4)
WRITE after READ
В чем особенность хранения списков в динамической памяти?
(1) элементы могут быть расположены в памяти случайным образом
(2) элементы в любой момент могут быть уничтожены сборщиком мусора
(3) в списке должно быть больше пяти элементов
Что сообщает /Qpar-report3?
(1) сообщает какие зависимости препятствуют векторизации
(2) сообщает порядок выполнения итераций
(3) сообщает причины по которым компилятор не параллелизует тот или иной цикл
(4) информирует, если параллелизация невыгодна
Что чаще всего является "горячим местом" программы?
(1) первое присваивание
(2) цикл
(3) последнее присваивание
(4) первая процедура
Различаются ли циклы с точки зрения оптимизации?
(1) нет
(2) да, есть те, которые лучше оптимизируются
(3) нет, если переменные правильно именованы
(4) нет, если это компилятор Intel
Каким целям служит 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) наличие операторов типа
if
(5) ничего из перечисленного
Что можно отнести к параллельному исполнению?
(1) векторные операции
(2) скалярные операции
(3) безусловный переход
(4) конвейеризацию
Что такое производительность ЦП?
(1) время передачи данных
(2) среднее время выполнения команд
(3) скорость передачи данных по шине
(4) число задач, выполняемых одновременно
Какие операционные системы поддерживаются VTune?
(1) OS/2
(2) VAX-VMS
(3) PDP-11
(4) Windows
(5) Linux
SSA-представление – это
(1) представление, в котором каждая функция выполняется один раз
(2) представление, в котором каждая переменная используется один раз
(3) представление, в котором каждая переменная имеет одно определение
(4) конечное представление, после проведения всех оптимизаций
Какие цели преследует правильное форматирование кода?
(1) ускоряет инлайнинг
(2) разделяет области видимости переменных
(3) код становится проще читать
(4) компиляторные оптимизации упрощаются
(5) ничего из перечисленного
Технология MMX предоставляет:
(1) набор инструкций процессора для работы с пакетами целых чисел
(2) программный пакет для работы с мультимедиа
(3) дополнительные регистры
(4) возможность быстрой работы с числами с плавающей точкой
(5) дополнительный модуль процессора для конвертации аудио и видео
Современные процессоры Intel имеют архитектуру
(1) CISC
(2) RISC
(3) гибрид CISC и RISC
Что не позволяет делать VTune?
(1) анализировать исходный код программы
(2) дополнять программу средствами защиты от копирования
(3) просматривать ассеблерный код программы
(4) отправлять программу для анализа специалистами Intel
Среди утверждений в программе можно установить порядок
(1) лексикографический
(2) графосемантический
(3) полидинамический
(4) квазиитеративный
(5) семиденотационный
Какие недостатки имеют оптимизации процедурного уровня?
(1) могут быть использованы для процедур, но не для функций
(2) они лишены недостатков
(3) не учитываются переменные типа указатель
(4) неизвестны свойства глобальных переменных
(5) не производится векторизация
Выберете неверное утверждение
(1) компилятор — часть микропроцессора, отвечающая за перевод исходной программы на язык машинных команд или ассемблер
(2) компилятор — транслятор, который осуществляет перевод исходной программы на язык машинных команд или ассемблер
(3) только с помощью компилятора можно показать рост производительности МП, связанный с новыми командами, увеличением количества регистров и т.д.
Какое событие отвечает за количество тактов
процессора?
(1)
L2_LINES_IN.SELF.DEMAND
(2)
BUS_TRANS_ANY.ALL_AGENTS
(3)
CPU_CLK_UNHALTED.CORE
(4) ничего из вышеперечисленного
Зависимость это
(1) связь между утверждениями программы такая, что эти утверждения вычисляют общий результат
(2) связь между утверждениями программы такая, что перестановка утверждений изменяет выдаваемый программой результат
(3) связь между утверждениями программы такая, что утверждения используют общие данные при вычислениях
(4) связь между утверждениями программы такая, что утверждения изменяют одну и ту-же ячейку памяти
Для выключения межпроцедурных оптимизаций используется ключ компилятора
(1)
/Qip-
(2)
/Qip-disable
(3)
/Qipo-disable
(4)
/Qno-ipo
Какой размер имеют регистры ymm?
(1) 16 бит
(2) 32 бита
(3) 64 бита
(4) 128 бит
(5) 256 бит
Время отклика (свойство памяти) — это
(1) частота синхронизирующих импульсов синхронной электронной схемы
(2) число циклов процессора, необходимых для передачи единицы данных из памяти
(3) количество элементов данных, которые могут быть отправлены процессору из памяти за один цикл
(4) количество операций, которые может выполнить процессор за 1 такт
Какие процессоры подойдут для использования VTune?
(1) Intel Core i7
(2) AMD Athlon
(3) AMD Phenom
(4) Intel Core Duo
(5) Intel Pentium IV
Что такое протяжка копий?
(1) циклическое однонаправленное заполнение файла копиями переменных
(2) замена копии переменной оригиналом в тексте программы
(3) отслеживание копирования файлов с целью их протяжки
(4) удаление излишних операций ввода-вывода
В чем неудобства динамического выделения памяти
(1) данные становятся фрагментированными
(2) динамические объекты не могут обмениваться информацией со статическими объектами
(3) нет возможности набрать статистику запусков
(4) пропадает детерминированность кода
(5) массивы попадают в более медленную область памяти
Что является серьезным ограничением производительности современных вычислительных систем?
(1) количеством памяти
(2) тактовая частота процессоров
(3) скоростью взаимодействия с памятью
(4) наличие кэша второго уровня
Почему происходит улучшение производительности при вынесении инвариантов циклов?
(1) потому что инварианты не несут смысловой нагрузки в цикле – их можно удалить
(2) потому что инварианты цикла эффективнее пересчитывать в отдельном цикле
(3) потому что инварианты цикла неизменны на каждой итерации – их можно вычислить один раз
При распределении регистров выполняется:
(1) определение областей жизни переменных
(2) выделение наиболее значимых регистров
(3) сортировка регистров по размеру
(4) выделение области памяти для блока регистров
Назовите минусы использования многопоточных приложений.
(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) зависимость независимая от цикла
Для чего используется планирование инструкций?
(1) для предсказания вероятностей переходов
(2) для повышения инструкционного параллелизма
(3) для сравнения прохождения контрольных точек программы с запланированным временем
(4) для составления графа несовместимостей
Какая директива может заставить компилятор параллелизовать следующий цикл, если это безопасно?
(1)
#pragma prefer concurrent
(2)
#pragma concurrentize
(3)
#pragma prefer serial
(4)
#pragma serial
Выберите случай
OUTPUT
зависимости между данными?
(1)
READ after WRITE
(2)
WRITE after WRITE
(3)
READ after READ
(4)
WRITE after READ
Каким образом можно улучшить размещение элементов списка в динамической памяти
(1) отказавшись от сборщика мусора
(2) при помощи инлайнинга
(3) при помощи контейнеров
(4) используя несколько процессоров
Что такое "предвыборка"?
(1) загрузка данных из относительно медленной памяти в кэш после того, как эта память непосредственно потребовалась процессору
(2) загрузка данных из кэша в память до того, как эти данные непосредственно потребовались процессору
(3) загрузка данных из относительно медленной памяти в кэш до того, как эта память непосредственно потребовалась процессору
(4) чтение адресов памяти с данными для последующей загрузки в кэш
Что такое "горячее место" программы?
(1) строка, написание которой заняло наибольшее время
(2) ключевое присваивание
(3) наиболее часто исполняемый код
(4) весь код, кроме внешнего
(5) вызов математической библиотеки
Что может стать причиной непременимости оптимизации цикла?
(1) ничего
(2) одновременный запуск компилятора и среды Visual Studio
(3) неудачная форма записи цикла
(4) длинное имя переменной
(5) длинное имя переменной, только если это итератор
Системные регистры – это
(1) память ALU
(2) участок памяти внутри ЦП
(3) память для промежуточных данных
Какие требования к программам, анализируемым VTune?
(1) использовать только язык С++
(2) каждый исходный файл должен занимать не более 150 килобайт
(3) заголовочные файлы должны соответствовать стандарту VTune
(4) ни один из перечисленных ответов
Что из перечисленного является скалярной оптимизацией?
(1) свертка констант
(2) протяжка копий
(3) удаление повторных вычислений
(4) продвижение копий
(5) вынесение инвариантов цикла
Каким образом сказывается использование глобальных переменных?
(1) никаким образом
(2) остаётся слишком мало имён для локальных
(3) увеличивается размер кода из-за длинных глобальных имён
(4) усложняется оптимизация
(5) зачастую усложняется читаемость кода
Что такое распараллеливание программы?
(1) ускоренная компиляция программы
(2) лицензированное копирование программы
(3) трансформация последовательно исполняемой программы в параллельную
(4) одновременная компиляция и исполнение одной и той же программы
Факторы, влияющие на производитель¬ность процессора x86
(1) тактовая частота процессора
(2) объем адресуемой памяти и скорость доступа к внешней памяти
(3) cкорость исполнения и набор инструкций
(4) эффективность использования внутренней памяти, регистров
(5) качество конвейеризации
(6) качество предсказания переходов
(7) качество упреждающей выборки
(8) использование векторных инструкций
(9) параллелизация и многоядерность
Какие возможности поддерживает VTune?
(1) интеграция в Microsoft Visual Studio
(2) поддержка многоядерности и многопоточности
(3) обнаружение некорректной работы с памятью
(4) сбор и привязка к коду основных событий процессора
(5) учет энергопотребления процессора
Какая из частей компилятора в большей степени определяется входным языком?
(1) Front End
(2) Back End
(3) внутреннее представление
(4) кодогенератор
(5) профилировщик
Какие цели преследует правильное разбиение программы на процедуры и функции?
(1) стандартизация
(2) сериализация
(3) растеризация
(4) декомпозиция
(5) абстрактизация
SSE - это:
(1) технология, позволяющая одновременно применять одну инструкцию к множеству данных
(2) технология, позволяющая выполнять код на стороне сервера
(3) потоковое SIMD-расширение процессора
(4) расширение для конфигурации сервера
(5) язык программирования
Почему время доступа к регистрам меньше, чем к ячейкам ОЗУ?
(1) они располагаются внутри ЦП
(2) регистры ЦП расположены в самом быстром кэше
(3) доступ к ним осуществляется параллельно с вычислением
Что такое профилирование программы?
(1) бинарная инструментация
(2) сбор различных характеристик
(3) пересборка программы
(4) составление документации пользователя
Базовые блоки это
(1) блоки, из которых составляется программа в визуальном программировании
(2) участки кода, в которых производятся основные вычисления
(3) участки кода без переходов и меток
(4) участки кода, являющиеся входными для программы
(5) участки кода, являющиеся входными для функций программы
Какие недостатки имеют оптимизации процедурного уровня?
(1) недостаточная сериализация переменных
(2) неоптимальная работа с памятью
(3) неизвестны многие свойства переданных в процедуру параметров
(4) они лишены недостатков
(5) не производятся оптимизации циклических конструкций
Для чего рекомендуется располагать поля структуры по убыванию размера?
(1) для увеличения производительности
(2) для красоты
(3) для уменьшения размеров структуры в результате выравнивания
Суперскалярность процессора это
(1) возможность работать с векторами вместо скаляров
(2) способность исполнять несколько операций за один такт
(3) ничего из вышеперечисленного
Какое событие отвечает за неправильно предсказанные ветвления?
(1)
L2_LINES_IN.SELF.DEMAND
(2)
INST_RETIRED.ANY
(3)
BR_INST_RETIRED.MISPRED
(4) ничего из вышеперечисленного
"Мертвый код" может являться результатом
(1) ошибки сегментации
(2) оптимизирующих преобразований
(3) снижения скорости исполнения
(4) использования слишком длинных названий идентификаторов, которые занимают лишнее место
Какой вид межпроцедурной оптимизации используется по умолчанию?
(1) никакой межпроцедурной оптимизации
(2) оптимизации без учёта переменных типа "указатель"
(3) оптимизации внутри одного файла
(4) многофайловый межпроцедурный анализ
Сколько регистров xmm поддерживается в emm64t
(1) 4
(2) 8
(3) 16
(4) 32
(5) 64
Суперскалярность – это
(1) способность процессора выполнять несколько операций за один такт
(2) частота синхронизирующих импульсов синхронной электронной схемы
(3) число циклов процессора необходимых для передачи единицы данных из памяти
(4) количество элементов данных, которые могут быть отправлены процессору из памяти за один цикл
Как VTune оптимизирует производительность?
(1) процессор оптимизируется для обработки приложения
(2) код приложения модифицируется оптимизируется с учётом объёма данных
(3) кэш контроллируется VTune и совершает меньше промахов
(4) ничего из вышеперечисленного
Что относится к удалению "Мёртвого кода"
(1) удаление лишних программ
(2) удаление неиспользуемых переменных
(3) удаление лишних файлов
(4) удаление лишних разделов
Динамическое выделение памяти
(1) ведет к отказу от использования статистики запусков
(2) использует менеджер памяти
(3) используется для разделения блоков программы
(4) обязательно при обработке быстроизменяющихся переменных
(5) необходимо для хранения структурированных данных
В чем цель автоматического распараллеливания?
(1) использование ресурсов многопроцессорной вычислительной системы без переписывания кода
(2) сделать более качественную, по сравнению с ручной, параллелизацию
(3) освободить программистов от ручной параллелизации
Что такое инвариант цикла?
(1) выражения, независящие от индексных переменных цикла
(2) выражение, неизменное на каждой итерации
(3) выражение, используемое для проверки остановки выполнения цикла
(4) выражение, содержащее глобальные переменные
В чем особенность хранения списков в динамической памяти?
(1) элементы могут быть расположены в памяти случайным образом
(2) элементы в любой момент могут быть уничтожены сборщиком мусора
(3) в списке должно быть больше пяти элементов
На какие типы по использованию памяти делятся многопроцессорные системы?
(1) системы с общей памятью
(2) системы с распределенной памятью
(3) системы со случайным доступом к памяти
(4) системы с неоднородным доступом к памяти
Существует ли зависимость в этом фрагменте кода и, если она есть, определите тип зависимости:
DO I=1,N
S1 A(I)=…
S2 …=A(I)
END DO
(1) зависимости нет
(2) зависимость, превносимая циклом
(3) зависимость, независимая от цикла
Каким образом осуществляется планирование инструкций?
(1) изменением порядка инструкций
(2) составлением вероятностного плана переходов
(3) составлением списка времен прохождения контрольных точек программы
(4) распределением инструкций внутри графа несовместимостей
Какая директива предлагает компилятору не параллелизировать следующий цикл?
(1)
#pragma prefer concurrent
(2)
#pragma no concurrentize
(3)
#pragma prefer serial
(4)
#pragma serial
Выберите случай
ANTI
зависимости между данными?
(1)
READ after WRITE
(2)
WRITE after WRITE
(3)
READ after READ
(4)
WRITE after READ
Связанный динамический список хуже линейного потому что
(1) снижается вероятность попадания в кэш при последовательном обходе элементов
(2) множество возможных типов данных меньше
(3) добавляются накладные расходы на хранение ссылки
(4) данные ссылок постоянно меняются, а элементы перемещаются друг относительно друга
Что такое OpenMP?
(1) это программный интерфейс, который поддерживает многопроцессорное программирование с общей памятью
(2) это программный интерфейс, который проверяет корректность параллелизации
(3) это программный интерфейс, который рассчитывает выгоду от применения параллелизации
Почему циклам уделяется много внимания при оптимизации?
(1) циклы короткие, их проще оптимизировать
(2) циклы проще всего анализировать
(3) циклы записываются подряд
(4) чаще всего циклы являются "горячими местами" программы
Есть ли определённые требования к записи циклов?
(1) никаких требований не существует
(2) существуют требования, но их невозможно сформулировать
(3) требования есть только на старых языках программирования
(4) есть определённый набор требований к "хорошим" циклам для оптимизации
Статический список лучше динамического потому что
(1) не требует накладных расходов по выделению памяти
(2) может содержать элементы произвольного размера
(3) моделируется на основе статистики
(4) может содержать данные типа "запись"
Для чего нужна опция /Qvec-report ?
(1) для управления векторизацией при компиляции
(2) для диагностики векторизации в процессе выполнения
(3) для диагностики векторизации в процессе компиляции
(4) для управления евристиками векторизации