игра брюс 2048
Главная / Программирование / Введение в принципы функционирования и применения современных мультиядерных архитектур (на примере Intel Xeon Phi) / Тест 5

Введение в принципы функционирования и применения современных мультиядерных архитектур (на примере Intel Xeon Phi) - тест 5

Упражнение 1:
Номер 1
Выберите синтаксическую конструкцию, которая бы обеспечивала запуск участка кода на сопроцессоре (язык C/C++):

Ответ:

 (1) #pragma offload_attribute 

 (2) #pragma offload_transfer 

 (3) #pragma offload 

 (4) __attribute__((target(mic))) 


Номер 2
Выберите синтаксические конструкции, посредством которых выделяются те участки кода, которые должны быть скомпилированы для выполнения на сопроцессоре:

Ответ:

 (1) #pragma offload_attribute 

 (2) #pragma offload_transfer 

 (3) #pragma offload 

 (4) __attribute__((target(mic))) 


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

Ответ:

 (1) #pragma offload_attribute 

 (2) #pragma offload_transfer 

 (3) #pragma offload 

 (4) __attribute__((target(mic))) 


Упражнение 2:
Номер 1
Директива #pragma offload target(mic) обеспечивает:

Ответ:

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

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

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

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


Номер 2
В системе доступно 3 сопроцессора.
Директива #pragma offload target(mic:0) обеспечивает

Ответ:

 (1) выполнение следующего за ней блока кода на сопроцессоре 0 

 (2) выполнение следующего за ней блока кода на сопроцессоре 1 

 (3) выполнение следующего за ней блока кода на сопроцессоре 2 

 (4) приводит к ошибке времени исполнения 


Номер 3
В системе доступно 3 сопроцессора.
Директива #pragma offload target(mic:4) обеспечивает:

Ответ:

 (1) выполнение следующего за ней блока кода на сопроцессоре 0 

 (2) выполнение следующего за ней блока кода на сопроцессоре 1 

 (3) выполнение следующего за ней блока кода на сопроцессоре 2 

 (4) приводит к ошибке времени исполнения 


Номер 4
В системе доступно 3 сопроцессора.
Директива #pragma offload target(mic:5) обеспечивает:


Ответ:

 (1) выполнение следующего за ней блока кода на сопроцессоре 0 

 (2) выполнение следующего за ней блока кода на сопроцессоре 1 

 (3) выполнение следующего за ней блока кода на сопроцессоре 2 

 (4) приводит к ошибке времени исполнения 


Номер 5
В системе доступно 3 сопроцессора.
Директива #pragma offload target(mic:6) обеспечивает:

Ответ:

 (1) выполнение следующего за ней блока кода на сопроцессоре 0 

 (2) выполнение следующего за ней блока кода на сопроцессоре 1 

 (3) выполнение следующего за ней блока кода на сопроцессоре 2 

 (4) приводит к ошибке времени исполнения 


Упражнение 3:
Номер 1
Какой параметр директивы #pragma offload используется для копирования данных с хоста на сопроцессор?

Ответ:

 (1) out 

 (2) in 

 (3) target 

 (4) signal 


Номер 2
Какой параметр директивы #pragma offload используется для копирования данных с сопроцессора на хост?

Ответ:

 (1) out 

 (2) in 

 (3) target 

 (4) signal 


Номер 3
Какой параметр директивы #pragma offload используется для явного указания, где запускать код?

Ответ:

 (1) out 

 (2) in 

 (3) target 

 (4) signal 


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

Ответ:

 (1) out 

 (2) in 

 (3) target 

 (4) signal 


Упражнение 4:
Номер 1
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?

Ответ:

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

 (2) для структур, не содержащих полей-указателей 

 (3) для статических массивов 


Номер 2
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?

Ответ:

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

 (2) для структур с полями любых типов 

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


Номер 3
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?

Ответ:

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

 (2) для динамических массивов с элементами типа структур, не содержащих полей-указателей, при указании размера 

 (3) для структур, не содержащих полей-указателей 


Номер 4
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?

Ответ:

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

 (2) для статических массивов с элементами типа структур, не содержащих полей-указателей 

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


Номер 5
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?

Ответ:

 (1) для динамических массивов с элементами типа структур, не содержащих полей-указателей, при указании размера 

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

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

 (4) для структур, не содержащих полей-указателей 


Упражнение 5:
Номер 1
__attribute__((target(mic))) void func(float* a, 
    float* b, int count, float c, float d)
{
    #pragma omp parallel for 
    for (int i = 0; i < count; ++i)
    {
        a[i] = b[i]*c + d;
    }
}

int main()
{
    const int count = 100;
    float a[count], b[count], c, d;
    …
    #pragma offload target(mic) [Параметры]
        func(a, b, count, c, d);
    …
}
Какие параметры нужно добавить в соответствующее место в приведенном выше коде (вместо "[Параметры]"), чтобы обеспечить корректное и эффективное выполнение кода:

Ответ:

 (1) in(a) inout(b) 

 (2) in(a) out(b) 

 (3) nocopy(a, b) 

 (4) inout(a, b) 


Номер 2
Какие из приведенных ниже ключевых слов расширения Intel Cilk Plus позволяют выполнить функцию на сопроцессоре:

Ответ:

 (1) _Cilk_offload 

 (2) _Cilk_offload_to 

 (3) _Cilk_spawn  

 (4) _Cilk_shared 


Номер 3
Какое из приведенных ниже ключевых слов расширения Intel Cilk Plus отвечает за неблокирующее выполнение кода на сопроцессоре (центральный процессор не ждет, пока сопроцессор закончит свою работу):

Ответ:

 (1) _Cilk_offload 

 (2) _Cilk_offload_to 

 (3) _Cilk_spawn  

 (4) _Cilk_shared 


Номер 4
Какое из приведенных ниже ключевых слов расширения Intel Cilk Plus позволяет объявить переменную, которая будет доступна как на процессоре, так и на сопроцессоре:

Ответ:

 (1) _Cilk_offload 

 (2) _Cilk_offload_to 

 (3) _Cilk_spawn  

 (4) _Cilk_shared 


Упражнение 6:
Номер 1
Какие из приведенных ниже языков программирования поддерживают явную схему работы с памятью в режиме offload:

Ответ:

 (1) C 

 (2) C++ 

 (3) Fortran 

 (4) C# 


Номер 2
Какие из приведенных ниже языков программирования поддерживают неявную схему работы с памятью в режиме offload:

Ответ:

 (1) C 

 (2) C++ 

 (3) Fortran 

 (4) C# 


Номер 3
Использование какого ключевого слова в языках программирования C/C++ позволяет сказать компилятору о том, что доступ к некоторой памяти возможен с использованием только одного указателя (нет перекрытий по памяти с другими указателями)?

Ответ:

 (1) register 

 (2) restrict 

 (3) auto  

 (4) extern 


Номер 4
Какая директива предназначена для того, чтобы сообщить компилятору об отсутствии зависимостей в цикле?

Ответ:

 (1) #pragma ivdep 

 (2) #pragma simd 

 (3) #pragma omp 

 (4) #pragma vector aligned 


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

Ответ:

 (1) #pragma ivdep 

 (2) #pragma simd 

 (3) #pragma omp 

 (4) #pragma vector aligned 


Номер 6
Какая директива предназначена для указания компилятору на то, что все используемые массивы в цикле являются выровненными?

Ответ:

 (1) #pragma ivdep 

 (2) #pragma simd 

 (3) #pragma omp 

 (4) #pragma vector aligned 


Упражнение 7:
Номер 1
Технология Array Notation в Intel Cilk Plus используется для

Ответ:

 (1) распараллеливания кода 

 (2) векторизации кода 

 (3) упрощения кода 


Номер 2
Дан массив A размером 100 элементов. Как с помощью технологии Array Notation получить доступ ко всем элементам массива:

Ответ:

 (1) A[:] 

 (2) A[100] 

 (3) A[0:100] 

 (4) A[0:100:1] 


Номер 3
Дан массив A размером 100 элементов. Как с помощью технологии Array Notation получить доступ к элементам 10, 11, 12, 13, 14:

Ответ:

 (1) A[10:14] 

 (2) A[10:13] 

 (3) A[10:5] 

 (4) A[10:4] 


Номер 4
Отметьте корректные выражения с точки зрения использования технологии Array Notation:

Ответ:

 (1) a[0:5] = b[0:6]; 

 (2) a[0:4] = 5; 

 (3) a[0:4] = b[i]; 

 (4) b[i] = a[0:4]; 


Номер 5
Отметьте некорректные выражения с точки зрения использования технологии Array Notation:

Ответ:

 (1) a[0:5] = b[0:6]; 

 (2) a[0:4] = 5; 

 (3) a[0:4] = b[i]; 

 (4) b[i] = a[0:4]; 


Номер 6
Дан массив A размером 100 элементов. Как с помощью технологии Array Notation получить доступ к элементам 2, 4, 6, 8, 10:

Ответ:

 (1) A[2:10] 

 (2) A[2:2:10] 

 (3) A[2:5:2] 

 (4) A[2:2:5] 


Упражнение 8:
Номер 1
Технология Elemental Functions в Intel Cilk Plus используется для

Ответ:

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

 (2) распараллеливания кода 

 (3) упрощения кода 


Номер 2
Отметьте корректные утверждения касательно правил вызова элементарных функций (технология Elemental Functions):

Ответ:

 (1) непрямые вызовы запрещены 

 (2) передача структур по ссылке запрещена 

 (3) передача структур по значению запрещена 

 (4) синхронизация запрещена 


Номер 3
Отметьте некорректное утверждение касательно правил вызова элементарных функций (технология Elemental Functions):

Ответ:

 (1) непрямые вызовы запрещены 

 (2) передача структур по ссылке запрещена 

 (3) передача структур по значению запрещена 

 (4) синхронизация запрещена 


Номер 4
Какой ключ компилятора Intel позволяет получить наиболее полный отчет о векторизации вашего кода:

Ответ:

 (1) –vec-report3 

 (2) –vec-report6 

 (3) –vec-report5 

 (4) –vec-report1 


Номер 5
Ключ компилятора Intel -vec-report3 позволяет получить сообщения о невозможности векторизовать цикл вида:

Ответ:

 (1) loop was not vectorized 

 (2) loop was not vectorized: unsupported data type 

 (3) vectorization support: type TTT is not supported for operation OOO 


Номер 6
Ключ компилятора Intel -vec-report6 позволяет получить сообщения о невозможности векторизовать цикл вида:

Ответ:

 (1) loop was not vectorized 

 (2) loop was not vectorized: unsupported data type 

 (3) vectorization support: type TTT is not supported for operation OOO 


Упражнение 9:
Номер 1
Какая из предложенных ниже синтаксических конструкций обеспечивает выравнивание статических массивов?

Ответ:

 (1) __declspec(align(64)) или __attribute__((aligned(64))) 

 (2) _mm_malloc(bufsize, 64) 

 (3) __assume_aligned(A, 64) 

 (4) __assume(n1%16==0) 

 (5) #pragma vector aligned 


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

Ответ:

 (1) __declspec(align(64)) или __attribute__((aligned(64))) 

 (2) _mm_malloc(bufsize, 64) 

 (3) __assume_aligned(A, 64) 

 (4) __assume(n1%16==0) 

 (5) #pragma vector aligned 


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

Ответ:

 (1) __declspec(align(64)) или __attribute__((aligned(64))) 

 (2) _mm_malloc(bufsize, 64) 

 (3) __assume_aligned(A, 64) 

 (4) __assume(n1%16==0) 

 (5) #pragma vector aligned 


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

Ответ:

 (1) __declspec(align(64)) или __attribute__((aligned(64))) 

 (2) _mm_malloc(bufsize, 64) 

 (3) __assume_aligned(A, 64) 

 (4) __assume(n1%16==0) 

 (5) #pragma vector aligned 


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

Ответ:

 (1) __declspec(align(64)) или __attribute__((aligned(64))) 

 (2) _mm_malloc(bufsize, 64) 

 (3) __assume_aligned(A, 64) 

 (4) __assume(n1%16==0) 

 (5) #pragma vector aligned 


Упражнение 10:
Номер 1
Опция компилятора Intel -vec-report позволяет получить:

Ответ:

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

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

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

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


Номер 2
Опция компилятора Intel -guide-vec позволяет получить:

Ответ:

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

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

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

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


Номер 3
Опция компилятора Intel -guide позволяет получить:

Ответ:

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

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

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

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


Номер 4
Опция компилятора Intel -opt-report позволяет получить:

Ответ:

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

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

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

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


Упражнение 11:
Номер 1
Алгоритм распределения потоков по ядрам сопроцессора Intel Xeon Phi, максимально заполняющий ядра потоками (часть ядер при этом может быть свободна), можно задать как:

Ответ:

 (1) KMP_AFFINITY=”balanced” 

 (2) KMP_AFFINITY=”scatter” 

 (3) KMP_AFFINITY=”compact” 


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

Ответ:

 (1) к неэффективной работе программы 

 (2) к ошибкам в процессе вычислений 

 (3) к нехватке памяти 


Номер 3
Признаками наличия неравномерной вычислительной нагрузки между потоками являются:

Ответ:

 (1) неправильные результаты расчетов 

 (2) большая доля последовательного выполнения 

 (3) малое ускорение по сравнению с последовательной программой 


Упражнение 12:
Номер 1
На эффективность работы параллельной программы существенное влияние оказывают следующие факторы:

Ответ:

 (1) выбор примитивов синхронизации 

 (2) наличие синхронизации между потоками 

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

 (4) объем исходного кода программы 

 (5) балансировка вычислительной загрузки 

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


Номер 2
Какова цель балансировки нагрузки между потоками:

Ответ:

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

 (2) повысить производительность параллельной программы 

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


Номер 3
Вы написали программу на языке C. Эта программа работает корректно на подготовленных тестовых данных, но скорость работы вас не устраивает. Какими инструментами, входящими в комплект поставки Intel Parallel Studio, вы воспользуетесь для увеличения скорости работы вашей программы?

Ответ:

 (1) Parallel Composer 

 (2) Parallel Inspector 

 (3) Parallel Amplifier 

 (4) Parallel Adviser 


Номер 4
Вы написали программу на языке C. Эта программа работает корректно на подготовленных тестовых данных, но скорость работы вас не устраивает. Каким инструментом, входящим в комплект поставки Intel Parallel Studio, вы воспользуетесь для определения участка программы, на выполнение которого расходуется наибольшее количество времени?

Ответ:

 (1) Parallel Composer 

 (2) Parallel Inspector 

 (3) Parallel Amplifier 

 (4) Parallel Adviser 




Главная / Программирование / Введение в принципы функционирования и применения современных мультиядерных архитектур (на примере Intel Xeon Phi) / Тест 5