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

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

Упражнение 1:
Номер 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; } 


Упражнение 2:
Номер 1
 Вынесение инвариантов цикла

Ответ:

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

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

 (3) находит и выносит инварианты цикла в другой цикл 

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


Номер 2
 Почему происходит улучшение производительности при вынесении инвариантов циклов?

Ответ:

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

 (2) потому что инварианты цикла эффективнее пересчитывать в отдельном цикле 

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


Номер 3
 Что такое инвариант цикла?

Ответ:

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

 (2) выражение, неизменное на каждой итерации 

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

 (4) выражение, содержащее глобальные переменные 


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

Ответ:

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

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

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

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

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


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

Ответ:

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

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

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


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

Ответ:

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

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

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


Упражнение 4:
Номер 1
 Что такое расщепление цикла?

Ответ:

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

 (2) оптимизация, которая пытается упростить цикл "отщеплением" ненужных итераций 

 (3) оптимизация, которая пытается упростить цикл "отщеплением" крайних итераций 


Номер 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) для удаления вызовов функций 


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

Ответ:

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

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

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


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

Ответ:

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

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

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


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


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


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

Ответ:

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

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

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

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


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

Ответ:

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

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

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


Упражнение 7:
Номер 1
 В каком случае зависимость <S1,S2> является  антизависимостью.

Ответ:

 (1) S1 X=… S2 …=X 

 (2) S1 …=X S2 X=… 

 (3) S1 X=… S2 X=… 


Номер 2
 В каком случае зависимость <S1,S2> является  выходной  зависимостью.

Ответ:

 (1) S1 X=… S2 …=X 

 (2) S1 …=X S2 X=… 

 (3) S1 X=… S2 X=… 


Номер 3
 В каком случае зависимость <S1,S2> называется истинной

Ответ:

 (1) S1 X=… S2 …=X 

 (2) S1 …=X S2 X=… 

 (3) S1 X=… S2 X=… 


Упражнение 8:
Номер 1
 Что такое итерационный вектор?

Ответ:

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

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

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


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

Ответ:

 (1) утверждение S1 на итерации i и утверждение S2 на итерации j обращаются к одной и той же области памяти 

 (2) одно из этих утверждений пишет в эту память 

 (3) оба этих утверждения пишут в эту память 


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

Ответ:

 (1) для упрощения вычислений 

 (2) для повышения читаемости кода 

 (3) для приведения циклов к общему виду 


Упражнение 9:
Номер 1
 Что такое свёртка констант?

Ответ:

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

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

 (3) операция обратная векторизирующей развёртке 

 (4) уменьшение размерности пространства итераций при константных границах 


Номер 2
 Цикловые оптимизации являются:

Ответ:

 (1) перестановочными трансформациями 

 (2) трансформациями данных 

 (3) трансформациями переменных 


Номер 3
 Существует ли зависимость в этом фрагменте кода и, если она есть, определите тип зависимости:
DO I=1,N
  S1 A(I+1) =F(I)
  S2 F(I+1) = A(I)
END DO

Ответ:

 (1) зависимости нет 

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

 (3) зависимость независимая от цикла 


Номер 4
 Существует ли зависимость в этом фрагменте кода и, если она есть, определите тип зависимости:
DO I=1,N
  S1 A(I)=…
  S2 …=A(I)
END DO

Ответ:

 (1) зависимости нет 

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

 (3) зависимость независимая от цикла 




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