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

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

Правильные ответы выделены зелёным цветом.
Все ответы: В курсе изучаются вопросы разработки и оптимизации программного обеспечения, ориентированного на эффективное использование мультиядерных архитектур на примере сопроцессора Intel Xeon Phi.
Смотрите также:
Одна из формулировок закона Мура гласит:
(1) производительность вычислительных систем удваивается каждый год
(2) производительность вычислительных систем удваивается каждые 2 года
(3) производительность вычислительных систем удваивается каждые 18 месяцев
Сколько ядер содержит сопроцессор Intel Xeon Phi?
(1) 60
(2) 61
(3) 240
(4) 244
Модели программирования для сопроцессора Intel Xeon Phi это
(1) Offload, OpenMP
(2) Offload, MPI
(3) MPI, OpenMP
Подход, основанный на организации вычислений с использованием команд SIMD (SSE, SSE2, etc.), называется:
(1) интерполяция
(2) модуляция
(3) векторизация
(4) комбинация
Выберите синтаксическую конструкцию, которая бы обеспечивала запуск участка кода на сопроцессоре (язык C/C++):
(1) #pragma offload_attribute
(2) #pragma offload_transfer
(3) #pragma offload
(4) __attribute__((target(mic)))
Уменьшение техпроцесса производства процессоров приводит к:
(1) уменьшению количества транзисторов на кристалле
(2) уменьшению размеров транзисторов
(3) уменьшению тепловыделения процессора
Сколько потоков может одновременно выполняться на одном ядре сопроцессоре Intel Xeon Phi?
(1) 1
(2) 2
(3) 4
(4) 8
Отметьте верные утверждения об OpenMP:
(1) OpenMP ориентирован в первую очередь на написание программ для векторно-конвейерных компьютеров
(2) большинство конструкций OpenMP реализуется с помощью директив и/или специальных комментариев
(3) число параллельных потоков OpenMP приложения может определяться переменной окружения
(4) весь параллелизм приложения реализуется только с помощью параллельных циклов
Размер векторного регистра для хранения данных с плавающей запятой в наборах команд SSE составляет:
(1) 64 байт
(2) 32 байт
(3) 16 байт
(4) 8 байт
Директива #pragma offload target(mic) обеспечивает:
(1) выполнение следующего за ней блока кода на нулевом сопроцессоре
(2) выполнение следующего за ней блока кода на одном из доступных сопроцессоров, а в случае их отсутствия либо занятости приводит к ошибке времени исполнения
(3) выполнение следующего за ней блока кода на одном из доступных сопроцессоров, а в случае их отсутствия либо занятости - на центральном процессоре
(4) выполнение следующего за ней блока кода на центральном процессоре
Основным способом построения суперкомпьютеров на данный момент является:
(1) SMP системы
(2) MPP системы
(3) кластеры
Реализовано ли в ядрах сопроцессора Intel Xeon Phi аппаратное предсказание переходов и спекулятивное выполнение инструкций?
(1) да
(2) нет
Для распределения итераций цикла между потоками необходимо использовать следующую директиву OpenMP:
(1) #pragma omp parallel for
(2) #pragma omp for, если данная директива находится внутри параллельной области
(3) #pragma parallel for
(4) #pragma omp sections
Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами одинарной точности, с использованием расширения SSE на процессоре Intel Xeon
(1) 8 раз
(2) 2 раза
(3) 4 раза
(4) 16 раз
Какой параметр директивы #pragma offload используется для копирования данных с хоста на сопроцессор?
(1) out
(2) in
(3) target
(4) signal
Один гигафлопс это?
(1) 1012 операций с плавающей запятой в секунду
(2) 106 операций с плавающей запятой в секунду
(3) 109 операций с плавающей запятой в секунду
Какую латентность имеют большинство инструкций - арифметических операций с целыми числами и масками?
(1) 1 такт
(2) 2 такта
(3) 3 такта
(4) 4 такта
В программе на MPI необходимо распределить итерации цикла между процессами, считая, что время выполнения итераций примерно одинаковое
(1) это будет сделано автоматически по общему число процессов
(2) вызвать MPI-функцию, которая для каждого процесса определит, какие итерации цикла должен выполнить данный процесс
(3) разделить общее число итераций цикла на число процессов. По рангу каждого процесса определить начальное и конечное значение счетчика цикла.
Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами двойной точности, с использованием расширения SSE на процессоре Intel Xeon
(1) 8 раз
(2) 2 раза
(3) 4 раза
(4) 16 раз
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
(1) для скалярных переменных всех встроенных типов данных
(2) для структур, не содержащих полей-указателей
(3) для статических массивов
Какой порог производительности преодолеют лидеры списка Top 500 в ближайшие годы?
(1) терафлопс
(2) петафлопс
(3) экзафлопс
Выберите все верные утверждения.
(1) на каждом такте ядро сопроцессора Intel Xeon Phi может параллельно выполнять 4 инструкции
(2) для полной загрузки ядра сопроцессора Intel Xeon Phi необходимо выполнять на нем четыре потока одновременно
(3) для полной загрузки ядра сопроцессора Intel Xeon Phi необходимо выполнять на нем по крайней мере два потока одновременно
В Cilk Plus входят:
(1) библиотека TBB, расширение языка с помощью прагм и комментариев, векторизация
(2) сопроцессор x87, коммутатор Light Peak, ускоритель графических и физических расчётов
(3) набор редьюсеров, 3 ключевых слова, гиперобъекты и расширенная семантика операций над массивами
(4) SDK, спецификация промежуточного слоя, библиотеки функций
Какой процент от пиковой производительности можно получить в функции, работающей с вещественными числами одинарной точности, без использования векторных расширений на процессоре Intel Xeon
(1) до 6.25%
(2) до 12.5%
(3) до 25%
(4) до 50%
(5) до 100%
__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)
К классу мультикомпьютеров относятся:
(1) симметричные мультипроцессоры (symmetric multiprocessor, SMP)
(2) векторные параллельные процессоры (parallel vector processor, PVP)
(3) кластеры
(4) системы, в которых обеспечивается когерентность локальных кэшей разных процессоров (cache-coherent NUMA)
Какие схемы взаимодействия между кешем и основной памятью реализованы в сопроцессоре Intel Xeon Phi?
(1) отсутствие кеширования (uncacheable, UC)
(2) сквозная запись (write-through, WT), write-combining (WC), and write-protect (WP)]
(3) отложенная запись (write-back, WB)
(4) объединенная запись (write-combining, WC)
(5) защита записи (write-protect, WP)
Для чего предназначена операция расщепления в итерационном пространстве?
(1) для порождения копии итерационного пространства
(2) для разделения итерационного пространство на два подмножества
(3) для разделения итерационного пространство на два одинаковых подмножества
Инструкция вида FMA позволяет выполнить следующую операцию:
(1) a = a + b
(2) a = a + b * c
(3) a = a + b / c;
(4) a = a * b * c;
Какие из приведенных ниже языков программирования поддерживают явную схему работы с памятью в режиме offload:
(1) C
(2) C++
(3) Fortran
(4) C#
При использовании политики обратной записи (write back) данных из кэша в оперативную память:
(1) все записываемые данные сразу дублируются в оперативную память
(2) данные помещаются только в кэш и переписываются в оперативную память только тогда, когда необходимо освободить строку кэша
Какова суммарная пропускная способность всех контроллеров памяти сопроцессора Intel Xeon Phi?
(1) 59,7 ГБ/с
(2) 244 ГБ/с
(3) 352 ГБ/с
(4) 392 ГБ/с
Код на сопроцессоре Intel Xeon Phi исполняется в
(1) синхронном режиме, т.е. при вызове функции управление передается сопроцессору, а выполнение основной программы блокируется, пока сопроцессор не завершит свою работу
(2) асинхронном режиме, т.е. при вызове функции управление передается сопроцессору, выполнение основной программы продолжается
Векторизация является параллелизмом на уровне:
(1) параллельной работы нескольких процессов
(2) параллельной работы нескольких потоков
(3) параллельной работы нескольких ядер
(4) параллельного исполнения операций на одном ядре
Технология Array Notation в Intel Cilk Plus используется для
(1) распараллеливания кода
(2) векторизации кода
(3) упрощения кода
Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
(1) хэш-таблицы.
(2) ассоциативные контейнеры
(3) некэшируемые данные
(4) протоколы наблюдения
Какова латентность доступа к памяти сопроцессора Intel Xeon Phi?
(1) примерно 100 тактов
(2) примерно 200 тактов
(3) примерно 300 тактов
(4) примерно 400 тактов
Для компиляции программы, исполняемой в режиме offload, следует использовать скрипт:
(1) #!/bin/sh mpicc -02 -openmp main.cpp –o program_name
(2) #!/bin/sh mpicc -02 -openmp -mmic main.cpp –o program_name.mic
(3) #!/bin/sh mpicc –O2 –openmp main.cpp –o ./program_name mpicc –O2 –openmp –mmic main.cpp –o ./program_name.mic
Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер.for (int i = 0; i < n – 1; i++) a[i + 1] = a[i] * 2 – 5;
(1) итерации независимы
(2) каждая итерация зависит от предыдущей: a[i + 1] не может быть вычислено до a[i]
(3) каждая итерация зависит от следующей: a[i + 1] не может быть вычислено до a[i]
(4) каждая итерация зависит от предыдущей: a[i] не может быть вычислено до a[i - 1]
Технология Elemental Functions в Intel Cilk Plus используется для
(1) векторизации кода
(2) распараллеливания кода
(3) упрощения кода
Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
(1) протокол TCP/IP
(2) протоколы на основе справочника
(3) котики
(4) совместно используемая кэш-память
Что такое Symmetric Communication Interface API (SCIF API)?
(1) одно из стандартных API разработки высокопроизводительных приложений
(2) API высокого уровня, обеспечивающее пересылку данных между хост-системой и сопроцессором Intel Xeon Phi
(3) API, обеспечивающее взаимодействие между хост-системой и сопроцессором Intel Xeon Phi
Какой из представленных ниже скриптов обеспечивает запуск программы в симметричном режиме:
(1) #!/bin/sh mpiexec.hydra –perhost 1 ./program_name
(2) #!/bin/sh mpiexec.hydra –host mic0 –n 1 –perhost 1 ./program_name.mic
(3) #!/bin/sh mpiexec.hydra –hosts 2 node0 node1 –n 2 –perhost 1 ./program_name: \ –hosts 4 mic0 mic1 mic2 mic3 –n 4 –perhost 1 ./program_name.mic
Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер. Массивы a, b не пересекаются.for (int i = 0; i < n - 2; i++) a[i] = b[i + 2] * 4 - 5;
(1) итерации независимы
(2) каждая итерация зависит от предыдущей: a[i + 1] не может быть вычислено до a[i]
(3) каждая итерация зависит от предыдущей: a[i] не может быть вычислено до b[i + 2]
(4) все четные итерации зависимы между собой, все нечетные итерации зависимы между собой, четные и нечетные итерации независимы
Какая из предложенных ниже синтаксических конструкций обеспечивает выравнивание статических массивов?
(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
Какие из указанных состояний строки кэша используются в протоколе MESI:
(1) modified (строка была изменена и изменения не отражены в оперативной памяти)
(2) invalid (строка содержит недостоверные данные)
(3) valid (данные корректны)
(4) single (данные содержатся только в конкретной строке кэша, в оперативной памяти данных нет)
Как могут использоваться вычислительные мощности системы с установленным сопроцессором Intel Xeon Phi? Выберите все правильные варианты.
(1) могут использоваться вычислительные мощности только процессоров хост-системы
(2) могут использоваться вычислительные мощности только сопроцессора Intel Xeon Phi
(3) вычислительные мощности сопроцессора Intel Xeon Phi могут использоваться только совместно с вычислительными мощностями процессоров хост-системы
#!/bin/sh export MICperNODE=1 sbatch –N 4 –-gres=mic:2 native_run.sh ./program_name Данный скрипт обеспечивает запуск программы в режиме исполнения только на сопроцессоре на кластере с системой управления SLURM. Сколько процессов на узел будет создано при запуске программы?
(1) 1
(2) 2
(3) 4
(4) 8
Какой скрипт обеспечивает получение монопольного доступа к двум узлам кластера, на каждом из которых установлено не менее двух сопроцессоров? Работа ведется на кластере с системой управления SLURM.
(1) #!/bin/sh sbatch –N 2 –-gres=mic:1
(2) #!/bin/sh salloc –N 1 --gres=mic:2
(3) #!/bin/sh salloc –N 2 --gres=mic:2
(4) #!/bin/sh sbatch –N 2 –-gres=mic:2
Какие ключи компилятора необходимо указать для корректной компиляции следующей функцииvoid GetOptionPrices( float * restrict pT, float * restrict pK, float * restrict pS0, float * restrict pC) { int i; float d1, d2, erf1, erf2; for (i = 0; i < N; i++) { d1 = (logf(pS0[i] / pK[i]) + (r + sig * sig * 0.5f) * pT[i]) / (sig * sqrtf(pT[i])); d2 = (logf(pS0[i] / pK[i]) + (r - sig * sig * 0.5f) * pT[i]) / (sig * sqrtf(pT[i])); erf1 = 0.5f + 0.5f * erff(d1 / sqrtf(2.0f)); erf2 = 0.5f + 0.5f * erff(d2 / sqrtf(2.0f)); pC[i] = pS0[i] * erf1 - pK[i] * expf((-1.0f) * r * pT[i]) * erf2; } }
(1) никаких, достаточно ключевого слова restrict
(2) -restrict
(3) -O2
(4) -debug
Опция компилятора Intel -vec-report позволяет получить:
(1) отчет о векторизации. Позволяет получить информацию о том, какой код был векторизован, для какого кода это сделать не удалось и почему
(2) руководство по векторизации. Позволяет получить рекомендации по изменению кода, которые позволят компилятору найти больше возможностей для векторизации
(3) руководство по дополнительной оптимизации. Позволяет получить ряд советов касательно модификации вашего кода с тем, чтобы компилятор мог лучше его оптимизировать
(4) отчет об оптимизации. Информирует программиста о том, как компилятор модифицирует код, пытаясь сгенерировать наиболее оптимальную его версию
Какие из указанных состояний строки кэша используются в протоколе MESI:
(1) modified (строка была изменена и изменения не отражены в оперативной памяти)
(2) exclusive (данные в строке кэша и оперативной памяти одинаковы, в остальных кэшах этих данных нет)
(3) single (данные содержатся только в конкретной строке кэша, в оперативной памяти данных нет)
(4) invalid (строка содержит недостоверные данные)
При использовании модели использования только сопроцессоров (Coprocessor-only model)
(1) MPI-процессы выполняются как на процессорах базовой системы, так и на сопроцессорах Intel Xeon Phi
(2) MPI-процессы выполняются только на процессорах базовой системы
(3) MPI-процессы выполняются только на сопроцессорах Intel Xeon Phi
Задача факторизации натурального числа N состоит в
(1) вычислении факториала N!
(2) разложении на простые сомножители
(3) разложении на сумму простых слагаемых
Пусть в программе присутствует следующий код: for (int j = 2; j < 1000; j++) { if (number == 1) break; int r; r = number % j; if (r == 0) { number /= j; divisors[idx].push_back(j); j--; } } Возможна ли векторизация данного цикла средствами компилятора для исполнения на Intel Xeon Phi?
(1) нет, между итерациями есть зависимость
(2) векторизация возможна
(3) нет, длина цикла не кратна 2
Алгоритм распределения потоков по ядрам сопроцессора Intel Xeon Phi, максимально заполняющий ядра потоками (часть ядер при этом может быть свободна), можно задать как:
(1) KMP_AFFINITY=”balanced”
(2) KMP_AFFINITY=”scatter”
(3) KMP_AFFINITY=”compact”
В каких случаях одновременная многопоточность может положительно сказаться на производительности:
(1) если на одном ядре выполняются потоки разнотипных приложений (например, просмотр почты и проигрывание музыки)
(2) если на одном ядре выполняется несколько потоков с интенсивным вводом-выводом
(3) высокопроизводительные приложения
Техника двойной буферизации позволяет
(1) уменьшить время передачи входных/выходных данных при использовании режима Offload
(2) уменьшить размер необходимой памяти при использовании режима Offload
(3) уменьшить или полностью компенсировать латентность передачи входных/выходных данных при использовании режима Offload
Пусть разработан код представленный ниже: #pragma offload target(mic:0) signal(s1) { F1(p1, p2); } F2(); В каком порядке будут исполняться функции F1 и F2?
(1) вначале F1, затем F2
(2) вначале F2, затем F1
(3) асинхронно F1 и F2
Пусть в программе присутствует следующий код:#define LOOP_SIZE 16 … int rr[LOOP_SIZE]; for(int k = 0; k < LOOP_SIZE; k++) { rr[k] = number % k; } Возможна ли векторизация данного цикла средствами компилятора, для исполнения на Intel Xeon Phi?
(1) нет, между итерациями есть зависимость
(2) векторизация возможна
(3) нет, длина цикла мала
На эффективность работы параллельной программы существенное влияние оказывают следующие факторы:
(1) выбор примитивов синхронизации
(2) наличие синхронизации между потоками
(3) доля времени, которое приложение проводит в режиме последовательного выполнения
(4) объем исходного кода программы
(5) балансировка вычислительной загрузки
(6) минимизация непроизводительных издержек при работе с потоками
Одна из формулировок закона Мура гласит:
(1) число транзисторов в производимых чипах удваивается каждые два года
(2) число транзисторов в производимых чипах удваивается каждый год
(3) число транзисторов в производимых чипах удваивается каждые 18 месяцев
Сколько ядер рекомендуется использовать для вычислений на сопроцессоре Intel Xeon Phi?
(1) 60
(2) 61
(3) 240
(4) 244
При разработке программ для сопроцессора Intel Xeon Phi
(1) требуется использовать специальный язык программирования
(2) можно использовать языки C\C++ и Fortran
Суть парадигмы SIMD заключается в следующем:
(1) одновременное выполнение операции над разными данными
(2) одновременное выполнение разных операций над одними и теми же данными
(3) одновременное выполнение разных операций над разными данными
(4) многократное выполнение одинаковых операций над одними и теми же данными
Выберите синтаксические конструкции, посредством которых выделяются те участки кода, которые должны быть скомпилированы для выполнения на сопроцессоре:
(1) #pragma offload_attribute
(2) #pragma offload_transfer
(3) #pragma offload
(4) __attribute__((target(mic)))
Уменьшение техпроцесса производства процессоров приводит к:
(1) увеличению количества транзисторов на кристалле
(2) увеличению размеров транзисторов
(3) уменьшению тепловыделения процессора
Сколько контроллеров памяти содержит сопроцессор Intel Xeon Phi?
(1) 1
(2) 2
(3) 4
(4) 8
Для создания параллельной области необходимо использовать директиву:
(1) #pragma parallel
(2) #pragma omp parallel
(3) #pragma omp
(4) #pragma omp for
Размер векторного регистра для хранения данных с плавающей запятой в наборе команд AVX составляет:
(1) 64 байт
(2) 32 байт
(3) 16 байт
(4) 8 байт
В системе доступно 3 сопроцессора. Директива #pragma offload target(mic:0) обеспечивает
(1) выполнение следующего за ней блока кода на сопроцессоре 0
(2) выполнение следующего за ней блока кода на сопроцессоре 1
(3) выполнение следующего за ней блока кода на сопроцессоре 2
(4) приводит к ошибке времени исполнения
Главным преимуществом кластерных систем является:
(1) построение из стандартных массово выпускающихся компонентов
(2) наличие эффективных систем управления задачами
(3) простота обслуживания.
Какова разрядность блока векторных вычислений сопроцессора Intel Xeon Phi (длина обрабатываемых векторов)?
(1) 128 бит
(2) 256 бит
(3) 512 бит
(4) 1024 бит
Какая директива OpenMP может быть использована для синхронизации потоков?
(1) #pragma omp barrier
(2) #pragma omp waitall
(3) #pragma omp wait
Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами одинарной точности, с использованием расширения AVX на процессоре Intel Xeon
(1) 8 раз
(2) 2 раза
(3) 4 раза
(4) 16 раз
Какой параметр директивы #pragma offload используется для копирования данных с сопроцессора на хост?
(1) out
(2) in
(3) target
(4) signal
Один гигафлопс это?
(1) 109 целочисленных операций в секунду
(2) 109 любых вычислительных операций в секунду
(3) 109 операций с плавающей запятой в секунду
Какую латентность имеют большинство векторных инструкций?
(1) 1 такт
(2) 2 такта
(3) 3 такта
(4) 4 такта
Процессы параллельной программой в рамках MPI:
(1) могут выполняться на разных процессорах, на одном процессоре могут располагаться несколько процессов
(2) могут выполняться только на разных процессорах
(3) обязательно выполняются на одном процессоре
Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами двойной точности, с использованием расширения AVX на процессоре Intel Xeon
(1) 8 раз
(2) 2 раза
(3) 4 раза
(4) 16 раз
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
(1) для статических массивов с элементами встроенных типов данных
(2) для структур с полями любых типов
(3) для скалярных переменных всех встроенных типов данных
К классу систем с однородным доступом к памяти (UMA) относятся:
(1) симметричные мультипроцессоры (symmetric multiprocessor, SMP)
(2) векторные параллельные процессоры (parallel vector processor, PVP)
(3) кластеры
(4) системы, в которых обеспечивается когерентность локальных кэшей разных процессоров (cache-coherent NUMA)
Выберите верное утверждения.
(1) ядро сопроцессора Intel Xeon Phi имеет собственные кеши L1 и L2.
(2) ядро сопроцессора Intel Xeon Phi имеет собственный кеш L1 и разделяет кеш L2 с другим ядром/ядрами.
(3) ядро сопроцессора Intel Xeon Phi имеет собственные кеши L1 и L2 и разделяет кеш L3 с другим ядром/ядрами.
Какой размер имеет кеш L2 ядра сопроцессора Intel Xeon Phi?
(1) 128 Кб
(2) 256 Кб
(3) 512 Кб
(4) 1024 Кб
Планировщик Cilk Plus основан на распределении работы путём:
(1) захвата доступной работы у случайного потока
(2) распределения "билетиков" из центральной очереди
(3) запроса работы у следующего узла процессора
(4) захвата доступной работы в ближайшем пуле
Какой процент от пиковой производительности можно получить в функции, работающей с вещественными числами одинарной точности, без использования векторных расширений на сопроцессоре Intel Xeon Phi
(1) до 6.25%
(2) до 12.5%
(3) до 25%
(4) до 50%
(5) до 100%
Какие из приведенных ниже ключевых слов расширения Intel Cilk Plus позволяют выполнить функцию на сопроцессоре:
(1) _Cilk_offload
(2) _Cilk_offload_to
(3) _Cilk_spawn
(4) _Cilk_shared
Информационная целостность (когерентность) кэшей может быть организована на аппаратном уровне.
(1) да
(2) нет
Какие режимы работы и разрядность физического адреса поддерживает сопроцессор Intel Xeon Phi?
(1) 32-битный режим работы, разрядность физического адреса – 32 бита
(2) 32-битный режим работы, разрядность физического адреса – 36 бит
(3) 64-битный режим работы, разрядность физического адреса – 40 бита
(4) 64-битный режим работы, разрядность физического адреса – 64 бита
Планирование вычислений в функции parallel_for:
(1) статическое и определено разработчиками библиотеки TBB
(2) динамическое, размер порции вычислений определяется параметром grainsize
(3) определяется используемым итерационным пространством
Какое из следующих утверждений является верным?
(1) инструкция вида FMA позволяет выполнить 3 арифметических операции за один такт
(2) инструкция вида FMA позволяет выполнить 2 арифметических операции без потери точности
(3) инструкция вида FMA позволяет выполнить 2 арифметических операции с округлением в конце
(4) инструкция вида FMA позволяет выполнить 3 арифметических операции с округлением в конце
Какие из приведенных ниже языков программирования поддерживают неявную схему работы с памятью в режиме offload:
(1) C
(2) C++
(3) Fortran
(4) C#
При использовании политики сквозной записи (write through) данных из кэша в оперативную память:
(1) все записываемые данные сразу дублируются в оперативную память
(2) данные помещаются только в кэш и переписываются в оперативную память только тогда, когда необходимо освободить строку кэша
Какова латентность доступа к памяти сопроцессора Intel Xeon Phi?
(1) примерно 100 тактов
(2) примерно 200 тактов
(3) примерно 300 тактов
(4) примерно 400 тактов
Какой ключ компилятора icc следует использовать для компиляции программы, исполняемой в режиме offload:
(1) -mmic
(2) -mic
(3) дополнительного ключа не требуется
(4) -offload
Какие из перечисленных директив компилятора предназначены для векторизации кода?
(1) #pragma omp parallel for
(2) #pragma ivdep
(3) #pragma simd
(4) #pragma cilk_for
Дан массив A размером 100 элементов. Как с помощью технологии Array Notation получить доступ ко всем элементам массива:
(1) A[:]
(2) A[100]
(3) A[0:100]
(4) A[0:100:1]
Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
(1) протоколы на основе справочника.
(2) списки
(3) протоколы наблюдения
(4) таблицы виртуальных страниц
Какие дополнительные возможности реализованы в сопроцессоре Intel Xeon Phi по сравнению с процессорами Xeon?
(1) увеличен размер векторных регистров
(2) расширен набор команд AVX
(3) реализованы специальные регистры масок, использование которых позволяет осуществлять условное выполнение операций над элементами векторов
(4) реализованы инструкции, которые позволяют упаковывать в векторы для обработки данные, произвольно расположенные в памяти
Для компиляции программы, исполняемой только на сопроцессоре, следует использовать скрипт:
(1) #!/bin/sh mpicc -02 -openmp main.cpp –o program_name
(2) #!/bin/sh mpicc -02 -openmp -mmic main.cpp –o program_name.mic
(3) #!/bin/sh mpicc –O2 –openmp main.cpp –o ./program_name mpicc –O2 –openmp –mmic main.cpp –o ./program_name.mic
Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер.for (int i = 0; i < n – 2; i++) a[i + 2] = a[i] * 3 + 1;
(1) итерации независимы
(2) каждая итерация зависит от предыдущей: a[i + 1] не может быть вычислено до a[i]
(3) все четные итерации зависимы между собой, все нечетные итерации зависимы между собой, четные и нечетные итерации независимы
(4) каждая итерация зависит от предыдущей: a[i + 2] не может быть вычислено до a[i]
Отметьте корректные утверждения касательно правил вызова элементарных функций (технология Elemental Functions):
(1) непрямые вызовы запрещены
(2) передача структур по ссылке запрещена
(3) передача структур по значению запрещена
(4) синхронизация запрещена
Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
(1) некэшируемые данные
(2) сегментные регистры
(3) протоколы на основе справочника
(4) широковещательная запись
(5) сегментная адресация
Какая операционная система по умолчанию выполняется на и сопроцессоре Intel Xeon Phi?
(1) специализированная версия Linux, основанная на стандартном ядре
(2) операционная система семейства Unix, использующая специализированное ядро
(3) операционная система семейства Windows, использующая специализированное ядро
#!/bin/sh mpiexec.hydra –perhost 1 ./program_name Данный скрипт обеспечивает запуск программы в режиме:
(1) offload
(2) исполнения только на сопроцессоре
(3) симметричном
Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер. Массивы a, b, c не пересекаются.for (int i = 1; i < n - 2; i++) a[i] = b[i + 2] * c[i – 1];
(1) итерации независимы
(2) каждая итерация зависит от предыдущей: a[i + 1] не может быть вычислено до a[i]
(3) каждая итерация зависит от предыдущей: a[i] не может быть вычислено до b[i + 2]
(4) каждая итерация зависит от следующей: a[i] не может быть вычислено до c[i – 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
Какие из указанных состояний строки кэша используются в протоколе MESI:
(1) private (данные этой строки кэша не могут быть использованы другими процессорами)
(2) exclusive (данные в строке кэша и оперативной памяти одинаковы, в остальных кэшах этих данных нет)
(3) shared (данные в строке кэша и оперативной памяти одинаковы, в каких-то других кэшах этих данные тоже присутствуют)
(4) single (данные содержатся только в конкретной строке кэша, в оперативной памяти данных нет)
Какие режимы выполнения приложений поддерживаются для систем с установленными сопроцессорами Intel Xeon Phi? Выберите все правильные варианты.
(1) Offload
(2) MPI
(3) Dynamic
#!/bin/sh export MICperNODE=2 sbatch –N 2 –-gres=mic:4 native_run.sh ./program_name Данный скрипт обеспечивает запуск программы в режиме исполнения только на сопроцессоре на кластере с системой управления SLURM. Сколько всего процессов будет создано при запуске программы?
(1) 1
(2) 2
(3) 4
(4) 8
Следующую функцию void GetOptionPricesV4(float *pT, float *pK, float *pS0, float *pC) { int i; float d1, d2, erf1, erf2; #pragma simd for (i = 0; i < N; i++) { d1 = (logf(pS0[i] / pK[i]) + (r + sig * sig * 0.5f) * pT[i]) / (sig * sqrtf(pT[i])); d2 = (logf(pS0[i] / pK[i]) + (r - sig * sig * 0.5f) * pT[i]) / (sig * sqrtf(pT[i])); erf1 = 0.5f + 0.5f * erff(d1 / sqrtf(2.0f)); erf2 = 0.5f + 0.5f * erff(d2 / sqrtf(2.0f)); pC[i] = pS0[i] * erf1 - pK[i] * expf((-1.0f) * r * pT[i]) * erf2; } } требуется собрать с поддержкой векторного набора команд AVX. Какие ключи компилятора необходимо использовать
(1) никаких, достаточно указания #pragma simd
(2) -mavx
(3) -O3
Опция компилятора Intel -guide-vec позволяет получить:
(1) отчет о векторизации. Позволяет получить информацию о том, какой код был векторизован, для какого кода это сделать не удалось и почему
(2) руководство по векторизации. Позволяет получить рекомендации по изменению кода, которые позволят компилятору найти больше возможностей для векторизации
(3) руководство по дополнительной оптимизации. Позволяет получить ряд советов касательно модификации вашего кода с тем, чтобы компилятор мог лучше его оптимизировать
(4) отчет об оптимизации. Информирует программиста о том, как компилятор модифицирует код, пытаясь сгенерировать наиболее оптимальную его версию
Какие из указанных состояний строки кэша используются в протоколе MESI:
(1) invalid (строка содержит недостоверные данные)
(2) private (данные этой строки кэша не могут быть использованы другими процессорами)
(3) valid (данные корректны)
(4) shared (данные в строке кэша и оперативной памяти одинаковы, в каких-то других кэшах этих данные тоже присутствуют)
Выберите технологии и API, которые вы можете использовать при программировании для сопроцессора Intel Xeon Phi?
(1) OpenMP
(2) Intel TBB
(3) Intel ArBB
(4) Intel Cilk Plus
(5) pthreads
(6) MPI
Следующий кодint idx = number; for (int j = 2; j < number; j++) { if (idx == 1) break; int r; r = idx % j; if (r == 0) { idx /= j; divisors[number].push_back(j); j--; } }
(1) раскладывает число number на сумму простых слагаемых
(2) вычисляет факториал числа number
(3) раскладывает число number на простые сомножители
Пусть в программе присутствует следующий код:#define LOOP_SIZE 128 … int rr[LOOP_SIZE]; for(int k = 0; k < LOOP_SIZE; k++) { rr[k] = number % k; } Возможна ли векторизация данного цикла средствами компилятора для исполнения на Intel Xeon Phi?
(1) нет, между итерациями есть зависимость
(2) векторизация возможна
(3) нет, длина цикла мала
К чему приводит неравномерное распределение вычислительной нагрузки между потоками?
(1) к неэффективной работе программы
(2) к ошибкам в процессе вычислений
(3) к нехватке памяти
В каких случаях одновременная многопоточность может негативно сказаться на производительности:
(1) если на одном ядре выполняются потоки разнотипных приложений (например, просмотр почты и проигрывание музыки)
(2) если на одном ядре выполняется несколько потоков с интенсивным вводом-выводом
(3) высокопроизводительные приложения
Можно ли при использовании режима Offload организовать передачу между хостом и сопроцессором сложных структур данных, например, использующих указатели?
(1) нельзя
(2) можно, для этого существует специальный механизм
Пусть разработан код представленный ниже: #pragma offload target(mic:0) { F1(p1, p2); } F2(); В каком порядке будут исполняться функции F1 и F2?
(1) вначале F1, затем F2
(2) вначале F2, затем F1
(3) асинхронно F1 и F2
Пусть в программе присутствует следующий код:#define LOOP_SIZE 16 … int rr[LOOP_SIZE]; … p = 1; for(int k = 0; k < LOOP_SIZE; k++) { p *= rr[k]; } Возможна ли векторизация данного цикла средствами компилятора, для исполнения на Intel Xeon Phi?
(1) нет, между итерациями есть зависимость
(2) векторизация возможна
(3) нет, длина цикла мала
Какова цель балансировки нагрузки между потоками:
(1) обеспечить корректность работы параллельной программы
(2) повысить производительность параллельной программы
(3) обеспечить максимальную утилизацию вычислительных ресурсов
Одна из формулировок закона Мура гласит:
(1) производительность микропроцессоров удваивается каждые 18 месяцев
(2) производительность микропроцессоров удваивается каждый год
(3) производительность микропроцессоров удваивается каждые два года
Сколько потоков может одновременно выполняться на сопроцессоре Intel Xeon Phi?
(1) 60
(2) 61
(3) 240
(4) 244
При разработке программ для сопроцессора Intel Xeon Phi
(1) требуется использовать специальную библиотеку функций
(2) можно использовать MPI, OpenMP, Cilk Plus, TBB
Пусть в программе присутствует следующий код:#define LOOP_SIZE 16 … int rr[LOOP_SIZE]; … p = 1; for(int k = 0; k < LOOP_SIZE; k++) { p *= rr[k]; } Какого следует ожидать ускорения в результате векторизации по сравнению со скалярной версией на Intel Xeon Phi?
(1) <16
(2) 16
(3) >16
(4) 8
Выберите синтаксические конструкции, которые позволяют обеспечить обмен данными между процессором и сопроцессором:
(1) #pragma offload_attribute
(2) #pragma offload_transfer
(3) #pragma offload
(4) __attribute__((target(mic)))
Уменьшение техпроцесса производства процессоров приводит к:
(1) увеличению количества транзисторов на кристалле
(2) уменьшению размеров транзисторов
(3) увеличению тепловыделения процессора
Сколько каналов доступа к памяти включает каждый контроллер памяти сопроцессора Intel Xeon Phi?
(1) 1
(2) 2
(3) 3
(4) 4
Какие векторные расширения поддерживает сопроцессор Intel Xeon Phi?
(1) MultiMedia Extension (MMX)
(2) Streaming SIMD Extensions (SSE)
(3) Advanced Vector Extensions (AVX)
(4) ни одно из перечисленных
Какое количество потоков может быть создано в рамках параллельной секции?
(1) меньше количества вычислительных элементов
(2) большее количества вычислительных элементов
(3) равное количеству вычислительных элементов
Размер векторного регистра для хранения данных с плавающей запятой в наборе команд Intel Xeon Phi составляет:
(1) 64 байт
(2) 32 байт
(3) 16 байт
(4) 8 байт
В системе доступно 3 сопроцессора. Директива #pragma offload target(mic:4) обеспечивает:
(1) выполнение следующего за ней блока кода на сопроцессоре 0
(2) выполнение следующего за ней блока кода на сопроцессоре 1
(3) выполнение следующего за ней блока кода на сопроцессоре 2
(4) приводит к ошибке времени исполнения
Современные персональные компьютеры в основном относятся к:
(1) SMP системам
(2) MPP системам
(3) кластерным системам
Блок векторных вычислений:
(1) не конвейеризован
(2) имеет конвейерную структуру
Можно ли в OpenMP программе управлять количеством потоков выполняющих работу, не меняя кода программы?
(1) нет, программа сама определяет количество потоков
(2) да, если в программе явно не определяется количество потоков
(3) да, используя переменные окружения
Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами одинарной точности, на сопроцессоре Intel Xeon Phi
(1) 8 раз
(2) 2 раза
(3) 4 раза
(4) 16 раз
Какой параметр директивы #pragma offload используется для явного указания, где запускать код?
(1) out
(2) in
(3) target
(4) signal
Какой порог производительности преодолевают лидеры списка Top 500?
(1) гигафлопс
(2) терафлопс
(3) петафлопс
Какова теоретическая производительность сопроцессора Intel Xeon Phi для вещественных чисел одинарной точности при использовании 60 ядер?
(1) 528 GFLOPS
(2) 1056 GFLOPS
(3) 2112 GFLOPS
(4) 4224 GFLOPS
Минимально необходимый набор операций для организации информационного взаимодействия между процессорами в вычислительных системах с распределенной памятью включает в себя только:
(1) операции приема и передачи данных
(2) операции передачи данных и коллективные операции
(3) только коллективные операции
Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами двойной точности, на сопроцессоре Intel Xeon Phi
(1) 8 раз
(2) 2 раза
(3) 4 раза
(4) 16 раз
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
(1) для динамических массивов, при указании размера
(2) для динамических массивов с элементами типа структур, не содержащих полей-указателей, при указании размера
(3) для структур, не содержащих полей-указателей
К классу систем с неоднородным доступом к памяти (NUMA) относятся:
(1) симметричные мультипроцессоры (symmetric multiprocessor, SMP)
(2) векторные параллельные процессоры (parallel vector processor, PVP)
(3) кластеры
(4) системы, в которых обеспечивается когерентность локальных кэшей разных процессоров (cache-coherent NUMA)
Какая архитектура Кеша используется в сопроцессоре Intel Xeon Phi?
(1) эксклюзивная
(2) инклюзивная
В коде "cilk_spawn F1(); F2(); cilk_sync;"
(1) функция F1 будет выполнена текущим потоком, а F2 может быть подхвачена другим потоком
(2) функция F2 будет выполнена текущим потоком, а F1 может быть подхвачена другим потоком
(3) обе функции всегда будут выполняться параллельно друг другу
(4) будет произведена дефрагментация стэка для F1, что позволит векторизовать F2
Какое из следующих замечаний является верным:
(1) использование скалярного кода на Intel Xeon Phi не позволит добиться хорошей производительности (в процентах от пика)
(2) использование векторного кода на Intel Xeon Phi не позволит добиться хорошей производительности (в процентах от пика)
Какое из приведенных ниже ключевых слов расширения Intel Cilk Plus отвечает за неблокирующее выполнение кода на сопроцессоре (центральный процессор не ждет, пока сопроцессор закончит свою работу):
(1) _Cilk_offload
(2) _Cilk_offload_to
(3) _Cilk_spawn
(4) _Cilk_shared
Информационная целостность (когерентность) кэшей может быть организована на программном уровне.
(1) да
(2) нет
Какие размеры страниц поддерживает сопроцессор Intel Xeon Phi?
(1) 2 КБ
(2) 4 КБ
(3) 2 МБ
(4) 4 МБ
(5) 1 ГБ
При реализации функтора для функции parallel_for:
(1) запрещается вызывать напрямую operator() для объекта функтора
(2) сохранять результат работы функтора необходимо в полях функтора
(3) operator() должен принимать в качестве параметра итерационное пространство
Как реализована расширенная поддержка математических функций в Xeon Phi?
(1) основные математические функции вычисляются аппаратно
(2) основные математические функции вычисляются без потери точности
(3) 4 математические функции реализованы аппаратно для одинарной точности
(4) основные математические функции реализованы аппаратно для одинарной точности
Использование какого ключевого слова в языках программирования C/C++ позволяет сказать компилятору о том, что доступ к некоторой памяти возможен с использованием только одного указателя (нет перекрытий по памяти с другими указателями)?
(1) register
(2) restrict
(3) auto
(4) extern
Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
(1) совместно используемая кэш-память
(2) некэшируемые данные
(3) бинарные деревья поиска
(4) протоколы на основе справочника
Какие типы передачи данных могут выполнять ядра сопроцессора Intel Xeon Phi?
(1) из GDDR5-памяти сопроцессора в оперативную память хоста
(2) из оперативной памяти хоста в GDDR5-память сопроцессора
(3) из GDDR5-памяти в GDDR5-память в пределах сопроцессора
(4) все перечисленные варианты
Какой ключ компилятора icc следует использовать для компиляции программы, если она должна запускаться только на сопроцессоре:
(1) -mmic
(2) -mic
(3) дополнительного ключа не требуется
(4) -offload
Каким образом возможно использование векторных инструкций в программе?
(1) только при их автоматической генерации компилятором при векторизации циклов
(2) только при вызове специальных функций-интринсик вручную
(3) при автоматической генерации компилятором или вручную
(4) только при использовании специальных векторных языков программирования
Дан массив 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]
Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
(1) широковещательная запись
(2) файловый ввод-вывод
(3) таблицы виртуальных методов
(4) некэшируемые данные
(5) протоколы на основе справочника
Какие базовые операционные системы позволяют использовать сопроцессор Intel Xeon Phi?
(1) ОС семейства Linux
(2) ОС семейства Microsoft Windows.
(3) ОС семейства Linux и ОС семейства Microsoft Windows
Для компиляции программы, исполняемой в симметричном режиме, следует использовать скрипт:
(1) #!/bin/sh mpicc -02 -openmp main.cpp –o program_name
(2) #!/bin/sh mpicc -02 -openmp -mmic main.cpp –o program_name.mic
(3) #!/bin/sh mpicc –O2 –openmp main.cpp –o ./program_name mpicc –O2 –openmp –mmic main.cpp –o ./program_name.mic
Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер. Массивы a, b не пересекаются.for (int i = 0; i < n; i++) a[i] = b[i] * 2 + 8;
(1) итерации независимы
(2) каждая итерация зависит от предыдущей: a[i + 1] не может быть вычислено до a[i]
(3) каждая итерация зависит от предыдущей: a[i] не может быть вычислено до b[i]
(4) каждая итерация зависит от предыдущей: a[i + 1] не может быть вычислено до b[i]
Отметьте некорректное утверждение касательно правил вызова элементарных функций (технология Elemental Functions):
(1) непрямые вызовы запрещены
(2) передача структур по ссылке запрещена
(3) передача структур по значению запрещена
(4) синхронизация запрещена
Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
(1) некэшируемые данные
(2) протоколы наблюдения
(3) сопроцессор вещественной арифметики
(4) страничная адресация
(5) протоколы на основе справочника
Каким образом можно передавать данные между памятью хост-системы и памятью сопроцессора Intel Xeon Phi?
(1) копирование данных через шину PCI Express
(2) использование DMA-передачи
(3) использование механизма отображения диапазона адресов памяти сопроцессора на память хост-системы
#!/bin/sh mpiexec.hydra –host mic0 –n 1 –perhost 1 ./program_name.mic Данный скрипт обеспечивает запуск программы в режиме:
(1) offload
(2) исполнения только на сопроцессоре
(3) симметричном
Код «D[:] = sin(S[:]);» в Cilk Plus приведёт к:
(1) ошибке компиляции
(2) векторизации
(3) инверсии операций
(4) потере времени
Какая из предложенных ниже синтаксических конструкций говорит компилятору о том, что данный адрес выровнен по границе в 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
Какие из указанных состояний строки кэша используются в протоколе MESI:
(1) valid (данные корректны)
(2) invalid (строка содержит недостоверные данные)
(3) private (данные этой строки кэша не могут быть использованы другими процессорами)
(4) single (данные содержатся только в конкретной строке кэша, в оперативной памяти данных нет)
При использовании модели симметричного выполнения (Symmetric model)
(1) MPI-процессы выполняются как на процессорах базовой системы, так и на сопроцессорах Intel Xeon Phi
(2) MPI-процессы выполняются только на процессорах базовой системы
(3) MPI-процессы выполняются только на сопроцессорах Intel Xeon Phi
S,N,1,2.0.0. #!/bin/sh export PPN=2 export MICperNODE=2 sbatch –N 2 –-gres=mic:2 symmetric_run.sh ./program_name Данный скрипт обеспечивает запуск программы в симметричном режиме на кластере с системой управления SLURM. Сколько всего процессов будет создано при запуске программы?
(1) 1
(2) 2
(3) 4
(4) 8
Следующую функциюvoid GetOptionPricesV7(float *pT, float *pK, float *pS0, float *pC) { int i; float d1, d2, erf1, erf2, invf; float sig2 = sig * sig; #pragma omp parallel for private(invf, d1, d2, erf1, erf2) for (i = 0; i < N; i++) { invf = invsqrtf(sig2 * pT[i]); d1 = (logf(pS0[i] / pK[i]) + (r + sig2 * 0.5f) * pT[i]) * invf; d2 = (logf(pS0[i] / pK[i]) + (r - sig2 * 0.5f) * pT[i]) * invf; erf1 = 0.5f + 0.5f * erff(d1 * invsqrt2); erf2 = 0.5f + 0.5f * erff(d2 * invsqrt2); pC[i] = pS0[i] * erf1 - pK[i] * expf((-1.0f) * r * pT[i]) * erf2; } } требуется собрать с поддержкой векторного набора команд AVX (ключ –mavx). Нужно ли модифицировать код?
(1) нет, все, что необходимо компилятору для векторизации, в коде присутствует
(2) да, добавить ключевое слово restrict в объявления параметров в функции
(3) да, добавить прагму simd перед циклом
Опция компилятора Intel -guide позволяет получить:
(1) отчет о векторизации. Позволяет получить информацию о том, какой код был векторизован, для какого кода это сделать не удалось и почему
(2) руководство по векторизации. Позволяет получить рекомендации по изменению кода, которые позволят компилятору найти больше возможностей для векторизации
(3) руководство по дополнительной оптимизации. Позволяет получить ряд советов касательно модификации вашего кода с тем, чтобы компилятор мог лучше его оптимизировать
(4) отчет об оптимизации. Информирует программиста о том, как компилятор модифицирует код, пытаясь сгенерировать наиболее оптимальную его версию
Какие из указанных состояний строки кэша используются в протоколе MESI:
(1) single (данные содержатся только в конкретной строке кэша, в оперативной памяти данных нет)
(2) valid (данные корректны)
(3) shared (данные в строке кэша и оперативной памяти одинаковы, в каких-то других кэшах этих данные тоже присутствуют)
(4) exclusive (данные в строке кэша и оперативной памяти одинаковы, в остальных кэшах этих данных нет)
При использовании модели симметричного выполнения (Symmetric model) для взаимодействия между процессорами базовой системы, в пределах сопроцессора и между сопроцессором и процессорами базовой системы по умолчанию используется
(1) протокол tcp
(2) механизм разделяемой памяти
Следующий псевдокод 1. i number; 2. for j = 2 to number 3. if (i == 1) break; 4. r i % j; 5. if (r == 0) 6. i i / j; 7. save_divisor(number, j); 8. j j - 1;
(1) раскладывает число number на простые сомножители
(2) раскладывает число number на сумму простых слагаемых
(3) вычисляет факториал числа number
Следующая функцияvoid factorization() { #pragma omp parallel for for (int i = 1; i < NUM_NUMBERS; i++) { int number = i; int idx = number; for (int j = 2; j < idx; j++) { if (number == 1) break; int r; r = number % j; if (r == 0) { number /= j; divisors[idx].push_back(j); j--; } } } } факторизует числа в диапазоне от 1 до NUM_NUMBERS. Добавление к прагме parallel параметра schedule(static, 1) приведет к
(1) уменьшит время работы
(2) не изменит время работы
(3) увеличит время работы
Пусть в программе присутствует следующий код:#define LOOP_SIZE 130 … int rr[LOOP_SIZE]; for(int k = 0; k < LOOP_SIZE; k++) { rr[k] = number % k; } Возможна ли векторизация данного цикла средствами компилятора, для исполнения на Intel Xeon Phi?
(1) нет, между итерациями есть зависимость
(2) векторизация возможна для части цикла
(3) нет, длина цикла мала
(4) нет, длина цикла не кратна 2
Признаками наличия неравномерной вычислительной нагрузки между потоками являются:
(1) неправильные результаты расчетов
(2) большая доля последовательного выполнения
(3) малое ускорение по сравнению с последовательной программой
Теоретическая производительность сопроцессора Intel Xeon Phi больше производительности процессоров общего назначения.
(1) любое приложение работает быстрее на Xeon Phi, чем на менее производительном процессоре общего назначения
(2) любое приложение работает медленнее на Xeon Phi, чем на менее производительном процессоре общего назначения
(3) приложения из определённого класса задач работают быстрее на Xeon Phi, чем на менее производительном процессоре общего назначения
Можно ли при использовании режима Offload выполнять в Offload-части кода вызовы MPI-функций?
(1) нельзя
(2) можно, для этого существует специальный механизм
Пусть разработан код представленный ниже: #pragma offload target(mic:0) wait (s1) { F1(p1, p2); } F2(); В каком порядке будут исполняться функции F1 и F2?
(1) вначале F1, затем F2
(2) вначале F2, затем F1
(3) асинхронно F1 и F2
Пусть в программе присутствует следующий код:#define LOOP_SIZE 30 … int rr[LOOP_SIZE]; … p = 1; for(int k = 0; k < LOOP_SIZE; k++) { p *= rr[k]; } Возможна ли векторизация данного цикла средствами компилятора, для исполнения на Intel Xeon Phi?
(1) нет, между итерациями есть зависимость
(2) векторизация возможна для части цикла
(3) нет, длина цикла мала
Вы написали программу на языке C. Эта программа работает корректно на подготовленных тестовых данных, но скорость работы вас не устраивает. Какими инструментами, входящими в комплект поставки Intel Parallel Studio, вы воспользуетесь для увеличения скорости работы вашей программы?
(1) Parallel Composer
(2) Parallel Inspector
(3) Parallel Amplifier
(4) Parallel Adviser
Необходимыми средствами при реализации одновременной многопоточности (simul-taneous multithreading, SMT) являются:
(1) дополнительные блоки целочисленной арифметики
(2) средства запоминания состояния потоков, схемы контроля одновременного выполнения нескольких потоков и т. д
(3) блоки спекулятивного исполнения
Что происходит, если при вызове offload-кода сопроцессор Intel Xeon Phi оказывается занят?
(1) завершение приложения
(2) ожидание освобождения сопроцессора Intel Xeon Phi
(3) выполнение версии кода для основного процессора
Следующая функция void factorization() { #pragma omp parallel for for (int i = 1; i < NUM_NUMBERS; i++) { int number = i; int idx = number; for (int j = 2; j < idx; j++) { if (number == 1) break; int r; r = number % j; if (r == 0) { number /= j; divisors[idx].push_back(j); j--; } } } } факторизует числа в диапазоне от 1 до NUM_NUMBERS. Добавление к прагме parallel параметра schedule(dynamic) уменьшит время
(1) уменьшит время работы
(2) увеличит время работы
(3) не изменит время работы
Теоретическая производительность сопроцессора Intel Xeon Phi больше производительности процессоров общего назначения.
(1) любое приложение работает быстрее на Xeon Phi, чем на менее производительном процессоре общего назначения
(2) приложения из определённого класса задач работают медленнее на Xeon Phi, чем на менее производительном процессоре общего назначения
(3) любое последовательное приложение работает быстрее на Xeon Phi, чем на менее производительном процессоре общего назначения
Сколько этапов (стадий) содержит конвейер сопроцессора Intel Xeon Phi?
(1) 6
(2) 7
(3) 8
(4) 9
Пусть разработан код представленный ниже: F1(); #pragma offload target(mic:0) signal(s1) { F2(p1, p2); } В каком порядке будут исполняться функции F1 и F2?
(1) вначале F1, затем F2
(2) вначале F2, затем F1
(3) асинхронно F1 и F2
Пусть в программе присутствует следующий код:#define LOOP_SIZE 128 … int rr[LOOP_SIZE]; … p = 1; for(int k = 0; k < LOOP_SIZE; k++) { p *= rr[k]; } Возможна ли векторизация данного цикла средствами компилятора, для исполнения на Intel Xeon Phi?
(1) нет, между итерациями есть зависимость
(2) векторизация возможна
(3) нет, длина цикла мала
Вы написали программу на языке C. Эта программа работает корректно на подготовленных тестовых данных, но скорость работы вас не устраивает. Каким инструментом, входящим в комплект поставки Intel Parallel Studio, вы воспользуетесь для определения участка программы, на выполнение которого расходуется наибольшее количество времени?
(1) Parallel Composer
(2) Parallel Inspector
(3) Parallel Amplifier
(4) Parallel Adviser
Сколько конвейеров содержит одно ядро сопроцессора Intel Xeon Phi?
(1) 1
(2) 2
(3) 4
(4) 8
Для каких вычислительных систем предназначена технология OpenMP?
(1) для систем с общей памятью
(2) для систем с распределенной памятью
Пусть в программе присутствует следующий код:#define LOOP_SIZE 24 … int rr[LOOP_SIZE]; … p = 1; for(int k = 0; k < LOOP_SIZE; k++) { p *= rr[k]; } Какого следует ожидать ускорения в результате векторизации по сравнению со скалярной версией на Intel Xeon Phi?
(1) <12
(2) 16
(3) >12
(4) 8
Поддерживает ли ядро сопроцессора Intel Xeon Phi внеочередное выполнение инструкций?
(1) да
(2) нет
Что определяет количество потоков в рамках параллельной секции?
(1) количество вычислительных элементов
(2) значение переменных окружений
(3) вызовы библиотечных функций библиотеки OpenMP
В системе доступно 3 сопроцессора. Директива #pragma offload target(mic:5) обеспечивает:
(1) выполнение следующего за ней блока кода на сопроцессоре 0
(2) выполнение следующего за ней блока кода на сопроцессоре 1
(3) выполнение следующего за ней блока кода на сопроцессоре 2
(4) приводит к ошибке времени исполнения
На какой конвейер отправляется первая инструкция из пары декодированных?
(1) U-конвейер
(2) V-конвейер
(3) W-конвейер
Под параллельной программой в рамках MPI понимается:
(1) множество одновременно выполняемых процессов
(2) множество одновременно выполняемых потоков
(3) множество одновременно работающих процессоров
Какой параметр директивы #pragma offload используется для асинхронного выполнения кода на сопроцессоре?
(1) out
(2) in
(3) target
(4) signal
Какова теоретическая производительность сопроцессора Intel Xeon Phi для вещественных чисел двойной точности при использовании 60 ядер?
(1) 528 GFLOPS
(2) 1056 GFLOPS
(3) 2112 GFLOPS
(4) 4224 GFLOPS
Intel Cilk Plus – это:
(1) библиотека, независимая от компилятора
(2) расширение языка С и С++, поддерживаемое компилятором Intel
(3) виртуальная машина, векторизующая параллельные программы
(4) новая модель процессоров Intel, созданная специально для параллельных программ
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
(1) для статических массивов с элементами встроенных типов данных
(2) для статических массивов с элементами типа структур, не содержащих полей-указателей
(3) для динамических массивов, при указании размера
Какие характеристики имеют кеши L1 (кеш инструкций L1 I-Cache и кеш данных L1 D-Cache) ядра сопроцессора Intel Xeon Phi?
(1) размер - 32 Кб, размер строки - 32 байта, степень ассоциативности - 4
(2) размер - 32 Кб, размер строки - 64 байта, степень ассоциативности - 4
(3) размер - 32 Кб, размер строки - 64 байта, степень ассоциативности - 8
(4) размер - 64 Кб, размер строки - 64 байта, степень ассоциативности - 8
Код "cilk_for(int i=0; i<maxi; i++) Func(); " позволяет:
(1) распараллелить и векторизовать цикл
(2) распараллелить цикл
(3) векторизовать цикл
(4) определить экстремум функции
Какое из приведенных ниже ключевых слов расширения Intel Cilk Plus позволяет объявить переменную, которая будет доступна как на процессоре, так и на сопроцессоре:
(1) _Cilk_offload
(2) _Cilk_offload_to
(3) _Cilk_spawn
(4) _Cilk_shared
Выберите все верные утверждения.
(1) в сопроцессоре Intel Xeon Phi используются отдельные кеши дескрипторов страниц TLB L1 данных и TLB L1 инструкций
(2) в сопроцессоре Intel Xeon Phi используется общий кеш дескрипторов страниц TLB L1
(3) в сопроцессоре Intel Xeon Phi используются отдельные кеши дескрипторов страниц TLB L2 данных и TLB L2 инструкций
(4) в сопроцессоре Intel Xeon Phi используется общий кеш дескрипторов страниц TLB L2
Планирование вычислений в функции parallel_for:
(1) статическое и определено разработчиками библиотеки TBB
(2) динамическое, размер порции вычислений определяется параметром grainsize
(3) определяется используемым итерационным пространством
Какая директива предназначена для того, чтобы сообщить компилятору об отсутствии зависимостей в цикле?
(1) #pragma ivdep
(2) #pragma simd
(3) #pragma omp
(4) #pragma vector aligned
Выберите верное утверждение.
(1) каждое ядро содержит только каталог содержимого локального кеша L1
(2) каждое ядро содержит часть распределенного каталога кеша L1
#!/bin/sh mpicc –O2 –openmp main.cpp –o ./program_name mpicc –O2 –openmp –mmic main.cpp –o ./program_name.mic Данный скрипт используется для компиляции программы, которая должна исполняться в режиме:
(1) offload
(2) исполнения только на сопроцессоре
(3) симметричном
Отметьте корректные выражения с точки зрения использования технологии 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];
Операционная система, выполняющаяся на сопроцессоре Intel Xeon Phi:
(1) загружается из ROM сопроцессора
(2) загружается из флеш-памяти сопроцессора
(3) загружается по запросу из базовой операционной системы
Какой из представленных ниже скриптов обеспечивает запуск программы в режиме offload:
(1) #!/bin/sh mpiexec.hydra –perhost 1 ./program_name
(2) #!/bin/sh mpiexec.hydra –host mic0 –n 1 –perhost 1 ./program_name.mic
(3) #!/bin/sh mpiexec.hydra –hosts 2 node0 node1 –n 2 –perhost 1 ./program_name: \ –hosts 4 mic0 mic1 mic2 mic3 –n 4 –perhost 1 ./program_name.mic
(4)
Какой ключ компилятора Intel позволяет получить наиболее полный отчет о векторизации вашего кода:
(1) –vec-report3
(2) –vec-report6
(3) –vec-report5
(4) –vec-report1
В каких случаях предпочтительнее использовать DMA-передачу, а не копирование памяти (выберите все подходящие варианты)?
(1) если необходимо уменьшить нагрузку на процессоры основной системы
(2) если необходимо передавать большие блоки данных
(3) если необходимо обеспечить параллельное обслуживание множества запросов
#!/bin/sh mpiexec.hydra –hosts 2 node0 node1 –n 2 –perhost 1 ./program_name: \ –hosts 4 mic0 mic1 mic2 mic3 –n 4 –perhost 1 ./program_name.mic Данный скрипт обеспечивает запуск программы в режиме:
(1) offload
(2) исполнения только на сопроцессоре
(3) симметричном
Какая из предложенных ниже синтаксических конструкций говорит компилятору о том, что значение данной переменной кратно 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
При использовании режима Offload:
(1) MPI-процессы выполняются как на процессорах базовой системы, так и на сопроцессорах Intel Xeon Phi
(2) MPI-процессы выполняются только на процессорах базовой системы
(3) MPI-процессы выполняются только на сопроцессорах Intel Xeon Phi
Опция компилятора Intel -opt-report позволяет получить:
(1) отчет о векторизации. Позволяет получить информацию о том, какой код был векторизован, для какого кода это сделать не удалось и почему
(2) руководство по векторизации. Позволяет получить рекомендации по изменению кода, которые позволят компилятору найти больше возможностей для векторизации
(3) руководство по дополнительной оптимизации. Позволяет получить ряд советов касательно модификации вашего кода с тем, чтобы компилятор мог лучше его оптимизировать
(4) отчет об оптимизации. Информирует программиста о том, как компилятор модифицирует код, пытаясь сгенерировать наиболее оптимальную его версию
Необходимыми средствами при реализации одновременной многопоточности (simul-taneous multithreading, SMT) являются:
(1) средства запоминания состояния потоков, схемы контроля одновременного выполнения нескольких потоков и т. д
(2) дополнительные блоки вещественной арифметики
(3) блоки предсказания ветвлений
Следующая функция void factorization() { #pragma omp parallel for for (int i = 1; i < NUM_NUMBERS; i++) { int number = i; int idx = number; for (int j = 2; j < idx; j++) { if (number == 1) break; int r; r = number % j; if (r == 0) { number /= j; divisors[idx].push_back(j); j--; } } } } факторизует числа в диапазоне от 1 до NUM_NUMBERS. Добавление к прагме parallel параметра schedule(static, chunk) при правильном выборе chunk
(1) уменьшит время работы
(2) увеличит время работы
(3) не изменит время работы
Теоретическая производительность сопроцессора Intel Xeon Phi больше производительности процессоров общего назначения.
(1) приложения из определённого класса задач работают медленнее на Xeon Phi, чем на менее производительном процессоре общего назначения
(2) приложения из определённого класса задач работают быстрее на Xeon Phi, чем на менее производительном процессоре общего назначения
(3) любое последовательное приложение работает быстрее на Xeon Phi, чем на менее производительном процессоре общего назначения
Пусть разработан код представленный ниже: F1(); #pragma offload target(mic:0) wait(s1) { F2(p1, p2); } В каком порядке будут исполняться функции F1 и F2?
(1) вначале F1, затем F2
(2) вначале F2, затем F1
(3) асинхронно F1 и F2
Выберите верное утверждение.
(1) каждое ядро содержит только каталог содержимого локального кеша L2
(2) каждое ядро содержит часть распределенного каталога кеша L2
Отметьте некорректные выражения с точки зрения использования технологии 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];
Технология программирования OpenMP расширяет язык программирования за счет:
(1) новых ключевых слов
(2) новых библиотечных функций и переменных окружения
(3) новых директив и специальных комментариев
Пусть в программе присутствует следующий код:#define LOOP_SIZE 24 … int rr[LOOP_SIZE]; for(int k = 0; k < LOOP_SIZE; k++) { rr[k] = number % k; } Какого следует ожидать ускорения в результате векторизации по сравнению со скалярной версией на Intel Xeon Phi?
(1) <12
(2) 16
(3) >12
(4) 8
Как определяется число процессов при запуске MPI-программы?
(1) оно будет равно числу узлов в кластере
(2) оно задается непосредственно в коде программы средствами MPI
(3) оно задается явно при запуске MPI-программы
(4) оно устанавливается через специальную переменную окружения
Сколько потоков для вычислений будет создано библиотекой TBB после выполнения указанного ниже кода? task_scheduler_init init; init.initialize(4);
(1) будет создано 4 потока
(2) количество создаваемых потоков будет определено автоматически
(3) потоки созданы не будут из-за ошибки повторной инициализации
(4) будет создан 1 поток
Какой из представленных ниже скриптов обеспечивает запуск программы в режиме исполнения только на сопроцессоре:
(1) #!/bin/sh mpiexec.hydra –perhost 1 ./program_name
(2) #!/bin/sh mpiexec.hydra –host mic0 –n 1 –perhost 1 ./program_name.mic
(3) #!/bin/sh mpiexec.hydra –hosts 2 node0 node1 –n 2 –perhost 1 ./program_name: \ –hosts 4 mic0 mic1 mic2 mic3 –n 4 –perhost 1 ./program_name.mic
Ключ компилятора 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
В системе доступно 3 сопроцессора. Директива #pragma offload target(mic:6) обеспечивает:
(1) выполнение следующего за ней блока кода на сопроцессоре 0
(2) выполнение следующего за ней блока кода на сопроцессоре 1
(3) выполнение следующего за ней блока кода на сопроцессоре 2
(4) приводит к ошибке времени исполнения
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
(1) для динамических массивов с элементами типа структур, не содержащих полей-указателей, при указании размера
(2) для статических массивов с элементами встроенных типов данных
(3) для скалярных переменных всех встроенных типов данных
(4) для структур, не содержащих полей-указателей
Какая директива предназначена для безусловной векторизации цикла?
(1) #pragma ivdep
(2) #pragma simd
(3) #pragma omp
(4) #pragma vector aligned
Какая из предложенных ниже синтаксических конструкций говорит компилятору о том, все массивы в рамках цикла выровнены?
(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
Пусть разработан код представленный ниже:int r = 0; int main() { #pragma offload target(mic:0) { setR(); } printf("%d", r); } ... setR() { r = 1; } Что будет выведено на экран?
(1) 0
(2) 1
(3) результат не определен
Какая директива предназначена для указания компилятору на то, что все используемые массивы в цикле являются выровненными?
(1) #pragma ivdep
(2) #pragma simd
(3) #pragma omp
(4) #pragma vector aligned
Дан массив 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]
Ключ компилятора 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