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