игра брюс 2048
Главная / Программирование / Оптимизация приложений с использованием компиляторов Intel. Уровень 2 / Тест 1

Оптимизация приложений с использованием компиляторов Intel. Уровень 2 - тест 1

Упражнение 1:
Номер 1
Тактовая частота процессора это

Ответ:

 (1) частота, с которой работает таймер компьютера, посылающий синхроимпульсы микросхемам 

 (2) величина, кратная частоте, с которой работает таймер компьютера 

 (3) время выполнения самой быстрой команды 

 (4) минимальный квант времени вычислений 

 (5) частота синхроимпульса, которую посылает таймер 


Номер 2
Выберите верное утверждение

Ответ:

 (1) механизм упреждающей выборки стремится определить закономерность в доступе к памяти, чтобы заранее подгружать нужные данные в кэш 

 (2) механизм кэширования использует принцип пространственной локальности, т. Е. использует данные, имеющие близкие области хранения 

 (3) кэш алиасинг — из-за благоприятного расположения в памяти различных объектов, в кэш заранее подгружается необходимая информация, что уменьшает нагрузку на системную шину 


Номер 3
Способность процессора выполнять несколько операций за один такт это

Ответ:

 (1) векторизация 

 (2) упреждающая выборка 

 (3) суперскалярность 

 (4) конвейеризация 

 (5) гиперпоточность 


Номер 4
Пропускная способность (bandwidth) это

Ответ:

 (1) количество элементов данных которые могут быть отправлены процессору из памяти за один цикл 

 (2) количество операций, которые может выполнить процессор за 1 такт 

 (3) количество инструкций, которые конвейер может выполнять одновременно 


Номер 5
Конвейер – это 

Ответ:

 (1) это способ организации вычислений для увеличения числа инструкций, выполняемых в единицу времени 

 (2) способ определять, какие данные понадобятся для исполнения программы и загрузки их в кэш 

 (3) это механизм необходимый для предотвращения простоя процессора 


Номер 6
В полностью ассоциативной кэш-памяти

Ответ:

 (1) каждый блок может отображаться в любое место КЭШа 

 (2) каждый блок может отображаться в одно место 

 (3) по младшим разрядам определяется строка КЭШа, где может отображаться данная память, выбор из которой проводится на ассоциативной основе 


Упражнение 2:
Номер 1
Определенный участок памяти внутри ЦП, используемый для хранения информации, обрабатываемой процессором это

Ответ:

 (1) оперативная память 

 (2) системные регистры 

 (3) системная шина 


Номер 2
Механизм упреждающей выборки (hardware prefetching) необходим для

Ответ:

 (1) распараллеливания вычислений 

 (2) предсказания, какие данные понадобятся для исполнения программы и загрузки их в кэш 

 (3) увеличения пропускной способности процессора 


Номер 3
При исполнении с изменением последовательности операций (out-of-order execution) инструкции выполняются

Ответ:

 (1) по мере поступления в конвейер 

 (2) по мере готовности 

 (3) согласно предсказателю переходов 


Номер 4
Векторизация это специальный вид распараллеливания программы, при котором

Ответ:

 (1) процессор одной командой выполняет несколько обычно однотипных действий параллельно 

 (2) процессор одной командой выполняет несколько обычно разнотипных действий параллельно 

 (3) процессор одной командой выполняет несколько обычно однотипных действий по очереди 


Номер 5
КЭШ память различных уровней обычно различается

Ответ:

 (1) скоростью доступа 

 (2) тем, что в первом уровне скаляры, во втором – суперскаляры, а в третьем – векто 

 (3) размерностью: одномерный, двумерный и трехмерный КЭШ 

 (4) они равноправны и не различаются 


Номер 6
Число циклов процессора, необходимых для передачи единицы данных из памяти — это

Ответ:

 (1) время отклика (latency) 

 (2) тактовая частота процессора 

 (3) пропускная способность (bandwidth) 


Упражнение 3:
Номер 1
Какие функции выполняет Sampling? 

Ответ:

 (1) определение проблемных мест в коде программы 

 (2) показывает распределение работы по потокам 

 (3) определение проблем производительности на уровне микроархитектуры 

 (4) производит бинарную инструментацию пользовательской программы 


Номер 2
За что отвечает Counter monitor? 

Ответ:

 (1) за обнаружение критических участков памяти и соотнесение их с критическими участками кода 

 (2) за подсчет общего количества событий, без привязки к месту в программе, их вызвавших 

 (3) за сбор данных о последовательности вызовов функций 


Номер 3
Какое событие отвечает за количество тактов
процессора?

Ответ:

 (1) L2_LINES_IN.SELF.DEMAND 

 (2) BUS_TRANS_ANY.ALL_AGENTS 

 (3) CPU_CLK_UNHALTED.CORE 

 (4) ничего из вышеперечисленного 


Номер 4
Что может являться причиной плохого использования ресурсов программой?

Ответ:

 (1) конкуренция за ресурсы 

 (2) "Узкие места" - bottlenecks 

 (3) большое количество зависимостей по данным 

 (4) однопоточность 


Номер 5
Что такое критический код?

Ответ:

 (1) наиболее часто исполняемый участок программы 

 (2) код, удаление которого не приводит к изменениям 

 (3) код, который не может достоверно воспроизвести результат 

 (4) код, правильность которого не доказана 

 (5) участок программы, который не содержит комментариев разработчика 


Номер 6
Какие условия могут помешать векторизации?

Ответ:

 (1) никакие 

 (2) наличие зависимостей по итерациям 

 (3) наличие зависимостей по данным 

 (4) отсутствие зависимостей по данным 

 (5) отсутствие зависимостей по итерациям 


Упражнение 4:
Номер 1
Набор Uses[b], конструирующийся для def-use chain, содержит:

Ответ:

 (1) набор переменных, определяемых в блоке 

 (2) набор переменных, использующихся в блоке, и не имеющие в нем определений 

 (3) набор определений, достигающих b 


Номер 2
Для понимания, какие определения будут использоваться в блоке, необходимо знать:

Ответ:

 (1) Uses[b] 

 (2) Killed[b] 

 (3) Reaches[b] 

 (4) Defsout[b] 


Номер 3
Граница доминирования – это

Ответ:

 (1) граница между доминируемыми и недоминируемыми узлами 

 (2) граница между доминируемыми и доминирующими узлами 

 (3) список вершин, доминируемых данной 


Номер 4
Что из перечисленного относится к синтаксическому анализу в компиляторе

Ответ:

 (1) семантический анализ 

 (2) денотационный анализ 

 (3) превентивный анализ 

 (4) сингулярный анализ 

 (5) грамматический анализ 


Номер 5
Каким образом утверждения (statements) связываются в компиляторе Intel

Ответ:

 (1) матрицей смежности 

 (2) таблицей Петрова  

 (3) графом потока управления 

 (4) денотационной семантикой 

 (5) никаким, связывание происходит на другом уровне 


Номер 6
Перестановочная оптимизация трансформирует вычисление в эквивалентное если

Ответ:

 (1) оптимизация не добавляет и не удаляет выполняемых утверждений 

 (2) оптимизация не изменяет графа потока управления 

 (3) оптимизация не изменяет порядок зависимых утверждений 

 (4) работает с участками кода не содержащими зависимые утверждения 


Упражнение 5:
Номер 1
Базовые блоки составляют

Ответ:

 (1) граф потока управления 

 (2) граф базовых блоков (base block graph) 

 (3) базовый граф вычислений 

 (4) граф вычислений 

 (5) опорный граф вычислений 


Номер 2
К базовым блокам относятся

Ответ:

 (1) блоки входа 

 (2) сигнатуры функций 

 (3) тела всех функций, которые производят основные вычисления 

 (4) тела функций main и ей подобные 

 (5) заголовочные файлы системных библиотек 


Номер 3
Какие из нижеперечисленных утверждений верны?

Ответ:

 (1) утверждение это наименьший независимый элемент языка программирования 

 (2) программа формируется как последовательность утверждений 

 (3) переменная это элементарное утверждение 

 (4) утверждение могут быть упорядочены лексически или в соответствии с графом потока 

 (5) утверждение это дерево утверждений 

 (6) утверждение состоит из выражений 


Номер 4
Граф потока управления

Ответ:

 (1) определяет порядок утверждений в исходной программе 

 (2) определяет все пути которые будут пройдены при вычислении утверждения 

 (3) определяет как управление может передаваться от одного базового блока к другому 

 (4) определяет все пути которые могут быть пройдены при выполнении программы 


Номер 5
Плюсы SSA формы:

Ответ:

 (1) программа начинает занимать гораздо меньше места 

 (2) очевидность def-use цепочек 

 (3) используются специальные фунции-интриниксы 

 (4) используются регистры сопроцессора 

 (5) используются векторные регистры, которые ускоряют вычисления 


Номер 6
SSA-форма это:

Ответ:

 (1) возможность получения доступа к SSE 

 (2) форма с однократным присваиванием 

 (3) специальная форма с инструкциями MMX 

 (4) формализованное векторное расширение 


Упражнение 6:
Номер 1
Для чего предназначен Loop Stream Detector?

Ответ:

 (1) позволяет разбивать большие циклы на последовательность циклов меньшего размера 

 (2) позволяет избавиться от циклов 

 (3) позволяет ускорить исполнение циклов 

 (4) позволяет отказаться от выборки и декодирования инструкций для маленьких циклов 


Номер 2
Укажите условия, необходимые для применения большинства оптимизаций циклических конструкций

Ответ:

 (1) циклы должны иметь определенное количество итераций 

 (2) циклы не должны иметь переходов за пределы цикла  

 (3) в цикле не должны быть использованы условные операторы 

 (4) в циклах не должно быть вызовов неизвестных функций 


Номер 3
Выберите фрагменты кода, пригодные для большинства цикловых оптимизаций

Ответ:

 (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; } 


Номер 4
За счет чего может достигаться улучшение производительности при разбиении циклов?

Ответ:

 (1) за счет улучшения работы с памятью 

 (2) за счет уменьшения количества итераций 

 (3) за счет работы с большим количеством массивов одновременно 


Номер 5
Из-за чего может происходить потеря производительности при работе с большим  циклом?

Ответ:

 (1) из-за большого количества арифметических операций 

 (2) если цикл работает с большим количеством различных массивов, то может происходить вытеснение из кеша необходимых для последующих операций адресов  

 (3) из-за вытеснения регистров по причине большого количества инвариантов цикла  


Номер 6
Необходимым условием  существования зависимости по данным между утверждением S1 и S2 являются следующие условия

Ответ:

 (1) оба утверждения обращаются к одной и той же области памяти и модифицируют эту память 

 (2) оба утверждения обращаются к одной и той же области памяти и по крайней мере одно из них пишет в память 

 (3) существует возможный путь при исполнении программы от выражения S1 к выражению S2 

 (4) не существует пути при исполнении программы от выражения S1 к выражению S2 


Упражнение 7:
Номер 1
Какая оптимизация является обратной к объединению циклов?

Ответ:

 (1) вынесение условных переходов 

 (2) расщепление цикла 

 (3) перестановка циклов 

 (4) развертка цикла 

 (5) разбиение цикла 


Номер 2
Выберите фрагмент кода, получаемый после применения оптимизации расщепления цикла на заданном цикле:
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]; } 


Номер 3
Для чего используется полная развертка?

Ответ:

 (1) нет такой оптимизации 

 (2) для развертки небольших циклов 

 (3) для развертки больших циклов 


Номер 4
Какие из следующих утверждений верны относительно следующего фрагмента программы: 
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> 


Номер 5
Что такое нормализованный цикл?

Ответ:

 (1) цикл от 0 до некоторого N с шагом 1 

 (2) цикл от 1 до некоторого N c произвольным шагом 

 (3) цикл от 1 до некоторого N c шагом 1 


Номер 6
Что такое итерационный вектор?

Ответ:

 (1) вектор целых чисел, каждое из которых представляет значение итерационной переменной для каждого цикла в порядке вложенности 

 (2) вектор целых чисел, каждое из которых представляет значение итерационной переменной для каждого цикла в порядке возрастания 

 (3) вектор целых чисел, каждое из которых представляет значение некоторой переменной после последовательности итераций 


Упражнение 8:
Номер 1
Какие из следующих опций позволят программе работать на любом процессоре?

Ответ:

 (1) -QxSSE4_1 

 (2) -arch:SSE3 

 (3) -QaxSSE3_1 

 (4) -QxSSE3 

 (5) -arch:SSE2_2 

 (6) -QaxSSE4_2 

 (7) -QxSSE2 


Номер 2
Могут ли четыре несвязанные явным образом переменные исходной программы быть компонентами одного вектора в результате преобразования векторизации?

Ответ:

 (1) никогда 

 (2) могут 

 (3) только если между ними может быть установлен строгий лексикографический порядок 

 (4) только для операции сложения 

 (5) только для операции умножения 


Номер 3
Что такое упакованный тип данных?

Ответ:

 (1) тип данных, не содержащий незначащие нули 

 (2) тип данных, упакованный методом Хаффмана 

 (3) специальный тип, применяемый при архивировании 

 (4) тип данных, составляющий вектор 

 (5) тип данных, составляющий скаляр 


Номер 4
Что происходит с нулевыми битами в упакованном типе данных?

Ответ:

 (1) ничего особенного 

 (2) незначимые нулевые биты опускаются 

 (3) сжимаются методом Хаффмана 

 (4) векторизуются 

 (5) скаляризуются 


Номер 5
Операции с упакованными типами данных это

Ответ:

 (1) только операции упаковки и распаковки 

 (2) операции, которые могут быть удалены из кода 

 (3) векторные операции 

 (4) операции, не учитывающие нулевые биты 

 (5) абстракция, поскольку ассемблер не содержит подобных операций 


Номер 6
Для какой цели необходим интринсик __alignof__ ?

Ответ:

 (1) для выравнивания текста 

 (2) для указания компилятору, как следует выравнивать объекты 

 (3) для получения информации о выравнивании разных типов 

 (4) для получения информации о выравнивании разных переменных 


Упражнение 9:
Номер 1
Выберите свойство, характеризующее вычислительную систему с распределенной памятью:

Ответ:

 (1) каждый процессор полностью автономен. Существует некоторая коммуникационная среда 

 (2) все процессоры равноудалены от памяти. Связь с памятью осуществляется через общую шину данных 

 (3) память физически распределена между процессорами. Единое адресное пространство поддерживается на аппаратном уровне 


Номер 2
Выберите свойство характеризующее вычислительную систему с общей памятью:

Ответ:

 (1) каждый процессор полностью автономен. Существует некоторая коммуникационная среда 

 (2) все процессоры равноудалены от памяти. Связь с памятью осуществляется через общую шину данных 

 (3) память физически распределена между процессорами. Единое адресное пространство поддерживается на аппаратном уровне 


Номер 3
Выберите свойство характеризующее вычислительную систему с неоднородным доступом к памяти:

Ответ:

 (1) каждый процессор полностью автономен. Существует некоторая коммуникационная среда 

 (2) все процессоры равноудалены от памяти. Связь с памятью осуществляется через общую шину данных 

 (3) память физически распределена между процессорами. Единое адресное пространство поддерживается на аппаратном уровне 


Номер 4
Какие свойства есть у вычислительных систем с распределенной памятью?

Ответ:

 (1) хорошая масштабируемость 

 (2) разное время доступа к разным сегментам памяти 

 (3) хорошее межпроцессорное взаимодействие 

 (4) необходимость синхронизации подсистемы кэшей 


Номер 5
Какие свойства есть у вычислительных систем с общей памятью?

Ответ:

 (1) хорошая масштабируемость 

 (2) разное время доступа к разным сегментам памяти 

 (3) хорошее межпроцессорное взаимодействие 

 (4) необходимость синхронизации подсистемы кэшей 


Номер 6
Какие свойства есть у вычислительных систем с неоднородным доступом к памяти?

Ответ:

 (1) хорошая масштабируемость 

 (2) разное время доступа к разным сегментам памяти 

 (3) хорошее межпроцессорное взаимодействие 

 (4) необходимость синхронизации подсистемы кэшей 


Упражнение 10:
Номер 1
Какой оптимизацией является автопараллелизация в компиляторе Интел?

Ответ:

 (1) цикловой неперестановочной 

 (2) нецикловой перестановочной 

 (3) цикловой перестановочной 

 (4) нецикловой неперестановочной 


Номер 2
Действительно ли определение выгодности автопараллелизации – сложная задача?

Ответ:

 (1) да, потому что существуют эффекты производительности, которые сложно оценить 

 (2) да, потому что компилятор может не иметь представления о количестве итераций в цикле 

 (3) нет, потому что автопараллелизация – цикловая неперестановочная оптимизация 

 (4) нет, потому что все необходимые данные для принятия решения доступны во время компиляции 


Номер 3
Как реализуется параллелизация цикла с помощью функции в компиляторе Intel?

Ответ:

 (1) запускаются несколько экземпляров функции в разных потоках с различными значениями границ цикла 

 (2) итерационное пространство цикла разбивается на несколько частей и каждый поток обрабатывает свою часть итерационного пространства 

 (3) запускаются несколько экземпляров функции в одном потоке с различными значениями границ цикла 

 (4) итерационное пространство цикла разбивается на несколько частей и каждый поток последовательно обрабатывает части итерационного пространства 


Номер 4
Как происходит взаимодействие параллелизации цикла с другими цикловыми оптимизациями в компиляторе Intel?

Ответ:

 (1) при параллелизации невозможны другие цикловые оптимизации 

 (2) проводится оптимизация цикла, потом применяется параллелизация 

 (3) проводится параллелизация цикла, потом применяются оптимизации поточной функции 


Номер 5
Какими методами можно использовать технику  "предвыборки" для оптимизации приложений?

Ответ:

 (1) использование директивы компилятора 

 (2) использование компиляторной опции для автоматической генерации команд "предвыборки" 

 (3) использование интринсиков 

 (4) покупка и инсталяция программы поддерки програмной предвыборки 


Номер 6
В чем заключаются минусы использования техники "предвыборки"?

Ответ:

 (1) попытка подгружать адреса в кэш может вызвать удаление из кэша нужных адресов 

 (2) реализация механизма "предвыборки" сильно ухудшает производительность приложения 

 (3) невозможность использования этой техники без аппаратной поддержки 


Упражнение 11:
Номер 1
При использовании технологии OpenMP поведение переменных следующее:

Ответ:

 (1) в блоках переменных все переменные в разных потоках имеют собственный адрес и не перекрываются 

 (2) все переменные внутри блоков имеют один адрес. необходимо вручную заниматься проблемами одновременного доступа 

 (3) есть возможность указать, какие переменные имеют один адрес, а какие - разный 


Номер 2
OpenMP использует следующую модель распараллеливания:

Ответ:

 (1) модель refork: каждый раз при начале параллельного цикла создаются новые потоки 

 (2) модель fork-join: потоки создаются при первом вызове параллельного потока; каждый следующий раз используются уже созданные 

 (3) модель queue: все задачи записываются в очередь; создаются несколько "исполнителей"-потоков и выполняют задачи, которые есть в очереди 


Номер 3
Для распараллеливания цикла нужно использовать:

Ответ:

 (1) #pragma omp parallel for 

 (2) #pragma omp parallel while 

 (3) #pragma omp single 

 (4) #pragma omp set parallel for 


Номер 4
Следующий модификатор не является служебным для OpenMP:

Ответ:

 (1) nowait 

 (2) prefork 

 (3) schedule 

 (4) reduction 


Номер 5
Для того, чтобы после выполнения значение переменной скопировалось в общий поток, необходимо:

Ответ:

 (1) добавить переменную в список private 

 (2) добавить переменную в список lastprivate 

 (3) добавить переменную в список lastshared 

 (4) технология не позволяет произвести данное действие 


Номер 6
Shedule clause принимает параметром следующие типы:

Ответ:

 (1) static 

 (2) dynamic 

 (3) variant 

 (4) object 

 (5) guided 

 (6) int 

 (7) realtime 

 (8) runtime 


Упражнение 12:
Номер 1
Какую информацию отражают ребра в графе вызовов?

Ответ:

 (1) вложенность синтаксических конструкций 

 (2) использование одной функции из другой 

 (3) вызовы программ 

 (4) вызовы системных утилит 

 (5) системные вызовы 


Номер 2
По какой причине граф вызовов может являться не полным?

Ответ:

 (1) используются библиотеки, свойства функций которых неизвестны 

 (2) используются переменные типа "указатель" 

 (3) используется однократное присваивание 

 (4) неизвестна полная статистика вызовов 

 (5) неизвестна статистика по системным вызовам 


Номер 3
Статический граф вызовов это

Ответ:

 (1) вызовы программы на репрезентативной выборке данных 

 (2) граф вызовов без учета динамических переменных 

 (3) граф вызовов, построенный на этапе компиляции программы 

 (4) граф вызовов, построенный статистически 

 (5) такое понятие как статический граф вызовов не определяется в рамках курса 


Номер 4
Динамический граф вызовов это

Ответ:

 (1) граф вызовов, учитывающий переменные типа "указатель" 

 (2) граф базовых блоков (base block graph) 

 (3) граф вызовов, построенный при вызове программы 

 (4) граф вызовов, который динамически определяет операционную систему и использует требуемые системные вызовы 

 (5) статический граф, вершины которого – темпоральные данные 


Номер 5
Динамический граф вызовов

Ответ:

 (1) не дает никаких преимуществ 

 (2) не учитывает данные типа static 

 (3) использует абстрактные системные вызовы 

 (4) строится при вызове программы 

 (5) является всюду плотным 


Номер 6
Какая межпроцедурная оптимизация используется в языке C++

Ответ:

 (1) деконструктизация 

 (2) деобъектизация 

 (3) девиртуализация 

 (4) отмена наследования 

 (5) деполиморфизм 


Упражнение 13:
Номер 1
Что такое анализ совмещений?

Ответ:

 (1) анализ, при котором совмещается информация различных процедур 

 (2) анализ, совмещенный с построением 

 (3) поиск переменных, которые могут обозначать одинаковую область памяти 

 (4) поиск функций с пересекающимся временем работы 

 (5) поиск и анализ функций, исполняемых одновременно 


Номер 2
Совмещение (выявляемое при анализе совмещений) может возникнуть между

Ответ:

 (1) любыми переменными 

 (2) только переменными типа "указатель" 

 (3) любыми функциями 

 (4) любыми программами 


Номер 3
Анализ указателей (points to analysis) это

Ответ:

 (1) и есть анализ совмещений 

 (2) часть анализа совмещений 

 (3) анализ индексных переменных 

 (4) анализ инвариантов циклов 

 (5) ничего из перечисленного 


Номер 4
Что такое подстановка (inlining) ?

Ответ:

 (1) подстановка значений переменных 

 (2) подстановка общих подвыражений 

 (3) подстановка глобальных вычислений 

 (4) подстановка тел процедур 


Номер 5
Какие цели преследует постановка (inlining)?

Ответ:

 (1) уменьшение накладных расходов 

 (2) упрощение анализа 

 (3) облечение именования 

 (4) упрощение разыменования 

 (5) более короткие имена 


Номер 6
Какие минусы у подстановки (inlining) ?

Ответ:

 (1) увеличение кода 

 (2) усложнение именования для пользователя 

 (3) увеличение времени работы 

 (4) повышение накладных расходов на вызов 


Упражнение 14:
Номер 1
Что понимается под устранением неоднозначности при работе с памятью?

Ответ:

 (1) выделение объектов, которые могут пересекаться по памяти 

 (2) выделение объектов, которые занимают слишком много памяти 

 (3) выделение объектов, которые могут оказаться не инициализированными 


Номер 2
Что принимается во внимание при устранении неоднозначности при работе с памятью?

Ответ:

 (1) особенности языка 

 (2) Local Point To анализ 

 (3) результаты межпроцедурного анализа 

 (4) анализ производительности приложения 

 (5) аттрибуты и директивы установленные разработчиком 


Номер 3
В каком случае невозможны перестановочные оптимизации?

Ответ:

 (1) если есть объекты, которые могут не находиться в памяти 

 (2) если есть объекты, которые могут пересекаться по памяти 

 (3) если есть объекты, которые занимают слишком много памяти 


Номер 4
Что требуют правила ANTI aliasing?

Ответ:

 (1) указатель может быть разыменован к объекту такого же типа 

 (2) указатель может быть разыменован к объекту произвольного типа 

 (3) указатель может быть разыменован к объекту примитивного типа 

 (4) указатель может быть разыменован к объекту совместимого типа 


Номер 5
Что такое клонирование функций?

Ответ:

 (1) создание компилятором функции-клона, выполняемой на другом устройстве 

 (2) создание компилятором функции-клона, исполняемой только на встроенной видеокарте 

 (3) копирование тела функции и использование различных оптимизаций для различных копий 

 (4) одновременное исполнение функции на кластере или суперкомпьютере 


Номер 6
Что такое частичная подстановка функции?

Ответ:

 (1) подстановка части кода на место вызова 

 (2) подстановка, при которой определяется имя-указатель, которое содержит название подставленной функции 

 (3) использование оптимизаций базовых блоков без трансформации кода 

 (4) это динамическая подстановка в процессе исполнения программы 


Упражнение 15:
Номер 1
В чем недостаток статического профилировщика

Ответ:

 (1) работа только со статическими переменными 

 (2) не обрабатывает переменные типа указатель 

 (3) не поддерживает типизацию в полном виде 

 (4) грубая оценка весов переходов 

 (5) необходимость повторного запуска перед выполнением 


Номер 2
На основании какой информации статический профилировщик оценивает веса переходов

Ответ:

 (1) входные данные 

 (2) анализ базовых блоков 

 (3) межпроцедурный анализ 

 (4) инлайнинг-анализ 

 (5) статистика запусков 


Номер 3
Статический профилировщик может использоваться

Ответ:

 (1) только для статически типизированных языков 

 (2) в языках без указателей 

 (3) для анализа без учета входных данных 

 (4) для сбора статистики по запускам 

 (5) для оценки статичности распределения памяти 


Номер 4
Преимущества динамического профилировщика 

Ответ:

 (1) не используется статистика 

 (2) более точная оценка весов переходов 

 (3) оценка динамичности участков кода 

 (4) большее количество возможных оптимизаций 


Номер 5
Что требуется для динамической профилировки программы

Ответ:

 (1) набрать статистику запусков 

 (2) временно закомментировать все статические переменные в коде 

 (3) добавить в начало программы освобождение всей памяти из кучи 

 (4) выбрать наиболее часто используемые входные данные для программы 

 (5) проверить код на инлайнинг 


Номер 6
Отличия динамического профилирования от статического

Ответ:

 (1) в более грубом предсказании переходов 

 (2) в наличии статистики 

 (3) в отсутствии статистики 

 (4) в том, что учитываются данные типа указатель  

 (5) в скоростном инлайнинге 


Упражнение 16:
Номер 1
Выберите верные утверждения

Ответ:

 (1) кодогенератор выравнивает базовые блоки в памяти 

 (2) кодогенератор помогает генерации исходного кода больших проектов 

 (3) кодогенератор выполняет специфические архитектурные оптимизации 

 (4) кодогенератор генерирует недостающие фрагменты функций 


Номер 2
Граф несовместимости строится

Ответ:

 (1) в процессе распределения регистров 

 (2) для обратной кодогенерации 

 (3) только для некорректно определенного кода 

 (4) только для кода, который не проходит репрезентативную выборку 


Номер 3
Что обозначают цвета в графе несовместимости?

Ответ:

 (1) наиболее нагруженные участки кода 

 (2) наименее совместимые функции программы 

 (3) распределение регистров 

 (4) арифметические и логические преобразования данных 


Номер 4
За счет чего перестановка полей структуры может ускорить работу приложения?

Ответ:

 (1) упрощение циклических конструкций 

 (2) за счет огрубления результатов 

 (3) уменьшение промахов по кэшу 

 (4) уменьшение условных переходов 


Номер 5
Какие цели преследует разбиение структуры данных (structure splitting)?

Ответ:

 (1) вынос редкоиспользуемых полей 

 (2) разбиение на структуры, группированные по разным типам 

 (3) разбиение на структуры, используемые в разных базовых блоках 

 (4) разделение полей по признаку длины названия 


Номер 6
С какой целью производится удаление излишних ссылок (pointer chasing)?

Ответ:

 (1) лишние ссылки могут привести к неожиданному освобождению памяти 

 (2) процесс разыменования не всегда детерминирован, его лучше избегать 

 (3) каждое разыменование требует подгрузку структуры в память, что существенно для больших структур 

 (4) это нужно для только чтобы избежать лишних операций освобождения памяти 

 (5) удаление лишних ссылок относится только к стилю оформления программы, а не к скорости и компиляторной оптимизации 




Главная / Программирование / Оптимизация приложений с использованием компиляторов Intel. Уровень 2 / Тест 1