Введение в принципы функционирования и применения современных мультиядерных архитектур (на примере Intel Xeon Phi)
700,00 руб.
В течение часа!
Экзамен "Введение в принципы функционирования и применения современных мультиядерных архитектур (на примере Intel Xeon Phi)" для пользователей и системных администраторов.
Внимание ! Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier! Одна из формулировок закона Мура гласит:
производительность микропроцессоров удваивается каждые 18 месяцев производительность микропроцессоров удваивается каждые два года производительность микропроцессоров удваивается каждый год
Одна из формулировок закона Мура гласит:
число транзисторов в производимых чипах удваивается каждый год число транзисторов в производимых чипах удваивается каждые 18 месяцев число транзисторов в производимых чипах удваивается каждые два года
Уменьшение техпроцесса производства процессоров приводит к:
увеличению тепловыделения процессора увеличению количества транзисторов на кристалле уменьшению размеров транзисторов
Уменьшение техпроцесса производства процессоров приводит к:
уменьшению количества транзисторов на кристалле уменьшению тепловыделения процессора уменьшению размеров транзисторов
Уменьшение техпроцесса производства процессоров приводит к:
увеличению количества транзисторов на кристалле увеличению размеров транзисторов уменьшению тепловыделения процессора
Современные персональные компьютеры в основном относятся к:
SMP системам кластерным системам MPP системам
Главным преимуществом кластерных систем является:
наличие эффективных систем управления задачами простота обслуживания. построение из стандартных массово выпускающихся компонентов
Основным способом построения суперкомпьютеров на данный момент является:
кластеры SMP системы MPP системы
Один гигафлопс это?
1012 операций с плавающей запятой в секунду 109 операций с плавающей запятой в секунду 106 операций с плавающей запятой в секунду
Один гигафлопс это?
109 любых вычислительных операций в секунду 109 операций с плавающей запятой в секунду 109 целочисленных операций в секунду
Какой порог производительности преодолевают лидеры списка Top 500?
гигафлопс терафлопс петафлопс
К классу систем с неоднородным доступом к памяти (NUMA) относятся:
Кластеры векторные параллельные процессоры (parallel vector processor, PVP) симметричные мультипроцессоры (symmetric multiprocessor, SMP) системы, в которых обеспечивается когерентность локальных кэшей разных процессоров (cache-coherent NUMA)
К классу систем с однородным доступом к памяти (UMA) относятся:
кластеры векторные параллельные процессоры (parallel vector processor, PVP) симметричные мультипроцессоры (symmetric multiprocessor, SMP) системы, в которых обеспечивается когерентность локальных кэшей разных процессоров (cache-coherent NUMA)
Какой порог производительности преодолеют лидеры списка Top 500 в ближайшие годы?
экзафлопс терафлопс петафлопс
Информационная целостность (когерентность) кэшей может быть организована на программном уровне.
да нет
Информационная целостность (когерентность) кэшей может быть организована на аппаратном уровне.
да нет
К классу мультикомпьютеров относятся:
симметричные мультипроцессоры (symmetric multiprocessor, SMP) системы, в которых обеспечивается когерентность локальных кэшей разных процессоров (cache-coherent NUMA) векторные параллельные процессоры (parallel vector processor, PVP) кластеры
Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
некэшируемые данные бинарные деревья поиска протоколы на основе справочника совместно используемая кэш-память
При использовании политики обратной записи (write back) данных из кэша в оперативную память:
данные помещаются только в кэш и переписываются в оперативную память только тогда, когда необходимо освободить строку кэша все записываемые данные сразу дублируются в оперативную память
При использовании политики сквозной записи (write through) данных из кэша в оперативную память:
данные помещаются только в кэш и переписываются в оперативную память только тогда, когда необходимо освободить строку кэша все записываемые данные сразу дублируются в оперативную память
Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
ассоциативные контейнеры некэшируемые данные протоколы наблюдения хэш-таблицы.
Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
списки протоколы на основе справочника. протоколы наблюдения таблицы виртуальных страниц
Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
широковещательная запись таблицы виртуальных методов файловый ввод-вывод некэшируемые данные протоколы на основе справочника
Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
широковещательная запись сегментная адресация сегментные регистры протоколы на основе справочника некэшируемые данные
Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
сопроцессор вещественной арифметики протоколы наблюдения страничная адресация некэшируемые данные протоколы на основе справочника
Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
совместно используемая кэш-память котики протокол TCP/IP протоколы на основе справочника
Какие из указанных состояний строки кэша используются в протоколе MESI:
single (данные содержатся только в конкретной строке кэша, в оперативной памяти данных нет) private (данные этой строки кэша не могут быть использованы другими процессорами) invalid (строка содержит недостоверные данные) valid (данные корректны)
Какие из указанных состояний строки кэша используются в протоколе MESI:
valid (данные корректны) modified (строка была изменена и изменения не отражены в оперативной памяти) single (данные содержатся только в конкретной строке кэша, в оперативной памяти данных нет) invalid (строка содержит недостоверные данные)
Какие из указанных состояний строки кэша используются в протоколе MESI:
single (данные содержатся только в конкретной строке кэша, в оперативной памяти данных нет) shared (данные в строке кэша и оперативной памяти одинаковы, в каких-то других кэшах этих данные тоже присутствуют) exclusive (данные в строке кэша и оперативной памяти одинаковы, в остальных кэшах этих данных нет) private (данные этой строки кэша не могут быть использованы другими процессорами)
Какие из указанных состояний строки кэша используются в протоколе MESI:single
(данные содержатся только в конкретной строке кэша, в оперативной памяти данных нет) valid (данные корректны) exclusive (данные в строке кэша и оперативной памяти одинаковы, в остальных кэшах этих данных нет) shared (данные в строке кэша и оперативной памяти одинаковы, в каких-то других кэшах этих данные тоже присутствуют)
Какие из указанных состояний строки кэша используются в протоколе MESI:
shared (данные в строке кэша и оперативной памяти одинаковы, в каких-то других кэшах этих данные тоже присутствуют) valid (данные корректны) private (данные этой строки кэша не могут быть использованы другими процессорами) invalid (строка содержит недостоверные данные)
Необходимыми средствами при реализации одновременной многопоточности (simul-taneous multithreading, SMT) являются:
дополнительные блоки вещественной арифметики блоки предсказания ветвлений средства запоминания состояния потоков, схемы контроля одновременного выполнения нескольких потоков и т. д
В каких случаях одновременная многопоточность может положительно сказаться на производительности:
если на одном ядре выполняется несколько потоков с интенсивным вводом-выводом высокопроизводительные приложения если на одном ядре выполняются потоки разнотипных приложений (например, просмотр почты и проигрывание музыки) Теоретическая производительность сопроцессора Intel Xeon Phi больше производительности процессоров общего назначения. любое приложение работает медленнее на Xeon Phi, чем на менее производительном процессоре общего назначения приложения из определённого класса задач работают быстрее на Xeon Phi, чем на менее производительном процессоре общего назначения любое приложение работает быстрее на Xeon Phi, чем на менее производительном процессоре общего назначения
В каких случаях одновременная многопоточность может негативно сказаться на производительности:
высокопроизводительные приложения если на одном ядре выполняется несколько потоков с интенсивным вводом-выводом если на одном ядре выполняются потоки разнотипных приложений (например, просмотр почты и проигрывание музыки)
Теоретическая производительность сопроцессора Intel Xeon Phi больше производительности процессоров общего назначения.
любое последовательное приложение работает быстрее на Xeon Phi, чем на менее производительном процессоре общего назначения любое приложение работает быстрее на Xeon Phi, чем на менее производительном процессоре общего назначения приложения из определённого класса задач работают медленнее на Xeon Phi, чем на менее производительном процессоре общего назначения
Сколько потоков может одновременно выполняться на сопроцессоре Intel Xeon Phi?
60 244 240 61
Сколько ядер рекомендуется использовать для вычислений на сопроцессоре Intel Xeon Phi?
240 61 60 244
Сколько ядер содержит сопроцессор Intel Xeon Phi? 60 240 244 61
Сколько конвейеров содержит одно ядро сопроцессора Intel Xeon Phi?
8 2 1 4
Сколько контроллеров памяти содержит сопроцессор Intel Xeon Phi?
1 4 8 2
Сколько каналов доступа к памяти включает каждый контроллер памяти сопроцессора Intel Xeon Phi?
4 2 1 3
Какие векторные расширения поддерживает сопроцессор Intel Xeon Phi?
MultiMedia Extension (MMX) Streaming SIMD Extensions (SSE) ни одно из перечисленных Advanced Vector Extensions (AVX)
Поддерживает ли ядро сопроцессора Intel Xeon Phi внеочередное выполнение инструкций?
да нет
Реализовано ли в ядрах сопроцессора Intel Xeon Phi аппаратное предсказание переходов и спекулятивное выполнение инструкций?
да нет
На какой конвейер отправляется первая инструкция из пары декодированных?
Какую латентность имеют большинство векторных инструкций?
1 такт 2 такта 4 такта 3 такта
Какова теоретическая производительность сопроцессора Intel Xeon Phi для вещественных чисел одинарной точности при использовании 60 ядер?
4224 GFLOPS 2112 GFLOPS 528 GFLOPS 1056 GFLOPS
Какова теоретическая производительность сопроцессора Intel Xeon Phi для вещественных чисел двойной точности при использовании 60 ядер?
1056 GFLOPS 4224 GFLOPS 528 GFLOPS 2112 GFLOPS
Какую латентность имеют большинство инструкций - арифметических операций с целыми числами и масками?
3 такта 1 такт 4 такта 2 такта
Какой размер имеет кеш L2 ядра сопроцессора Intel Xeon Phi?
1024 Кб 256 Кб 128 Кб 512 Кб
Выберите верное утверждения.
ядро сопроцессора Intel Xeon Phi имеет собственные кеши L1 и L2. ядро сопроцессора Intel Xeon Phi имеет собственный кеш L1 и разделяет кеш L2 с другим ядром/ядрами. ядро сопроцессора Intel Xeon Phi имеет собственные кеши L1 и L2 и разделяет кеш L3 с другим ядром/ядрами.
Выберите все верные утверждения.
для полной загрузки ядра сопроцессора Intel Xeon Phi необходимо выполнять на нем четыре потока одновременно на каждом такте ядро сопроцессора Intel Xeon Phi может параллельно выполнять 4 инструкции для полной загрузки ядра сопроцессора Intel Xeon Phi необходимо выполнять на нем по крайней мере два потока одновременно
Какая архитектура Кеша используется в сопроцессоре Intel Xeon Phi?
эксклюзивная инклюзивная
Какие схемы взаимодействия между кешем и основной памятью реализованы в сопроцессоре Intel Xeon Phi?
объединенная запись (write-combining, WC) сквозная запись (write-through, WT), write-combining (WC), and write-protect (WP)] защита записи (write-protect, WP) отсутствие кеширования (uncacheable, UC) отложенная запись (write-back, WB)
Какие размеры страниц поддерживает сопроцессор Intel Xeon Phi?
2 МБ 2 КБ 4 МБ 1 ГБ 4 КБ
Выберите все верные утверждения.
в сопроцессоре Intel Xeon Phi используются отдельные кеши дескрипторов страниц TLB L1 данных и TLB L1 инструкций/1 в сопроцессоре Intel Xeon Phi используются отдельные кеши дескрипторов страниц TLB L2 данных и TLB L2 инструкций/1 в сопроцессоре Intel Xeon Phi используется общий кеш дескрипторов страниц TLB L1 в сопроцессоре Intel Xeon Phi используется общий кеш дескрипторов страниц TLB L2
Какова суммарная пропускная способность всех контроллеров памяти сопроцессора Intel Xeon Phi?
59,7 ГБ/с 244 ГБ/с 392 ГБ/с 352 ГБ/с
Какова латентность доступа к памяти сопроцессора Intel Xeon Phi?
примерно 400 тактов примерно 200 тактов примерно 300 тактов примерно 100 тактов
Выберите верное утверждение.
каждое ядро содержит только каталог содержимого локального кеша L1 каждое ядро содержит часть распределенного каталога кеша L1
Выберите верное утверждение.
каждое ядро содержит часть распределенного каталога кеша L2 каждое ядро содержит только каталог содержимого локального кеша L2
Какова латентность доступа к памяти сопроцессора Intel Xeon Phi?
примерно 400 тактов примерно 200 тактов примерно 100 тактов примерно 300 тактов
Какие базовые операционные системы позволяют использовать сопроцессор Intel Xeon Phi?
ОС семейства Linux и ОС семейства Microsoft Windows ОС семейства Microsoft Windows. ОС семейства Linux
Какие дополнительные возможности реализованы в сопроцессоре Intel Xeon Phi по сравнению с процессорами Xeon?
реализованы инструкции, которые позволяют упаковывать в векторы для обработки данные, произвольно расположенные в памяти увеличен размер векторных регистров расширен набор команд AVX реализованы специальные регистры масок, использование которых позволяет осуществлять условное выполнение операций над элементами векторов
Что такое Symmetric Communication Interface API (SCIF API)?
API высокого уровня, обеспечивающее пересылку данных между хост-системой и сопроцессором Intel Xeon Phi API, обеспечивающее взаимодействие между хост-системой и сопроцессором Intel Xeon Phi одно из стандартных API разработки высокопроизводительных приложений
Какая операционная система по умолчанию выполняется на и сопроцессоре Intel Xeon Phi?
специализированная версия Linux, основанная на стандартном ядре операционная система семейства Unix, использующая специализированное ядро операционная система семейства Windows, использующая специализированное ядро
В каких случаях предпочтительнее использовать DMA-передачу, а не копирование памяти (выберите все подходящие варианты)?
если необходимо передавать большие блоки данных если необходимо уменьшить нагрузку на процессоры основной системы если необходимо обеспечить параллельное обслуживание множества запросов
При использовании модели симметричного выполнения (Symmetric model)
MPI-процессы выполняются только на процессорах базовой системы MPI-процессы выполняются только на сопроцессорах Intel Xeon Phi MPI-процессы выполняются как на процессорах базовой системы, так и на сопроцессорах Intel Xeon Phi
Как могут использоваться вычислительные мощности системы с установленным сопроцессором Intel Xeon Phi? Выберите все правильные варианты.
могут использоваться вычислительные мощности только процессоров хост-системы вычислительные мощности сопроцессора Intel Xeon Phi могут использоваться только совместно с вычислительными мощностями процессоров хост-системы могут использоваться вычислительные мощности только сопроцессора Intel Xeon Phi
Какие режимы выполнения приложений поддерживаются для систем с установленными сопроцессорами Intel Xeon Phi? Выберите все правильные варианты.
MPI Dynamic Offload
При использовании режима Offload:
MPI-процессы выполняются только на сопроцессорах Intel Xeon Phi MPI-процессы выполняются как на процессорах базовой системы, так и на сопроцессорах Intel Xeon Phi MPI-процессы выполняются только на процессорах базовой системы Что происходит, если при вызове offload-кода сопроцессор Intel Xeon Phi оказывается занят? выполнение версии кода для основного процессора завершение приложения ожидание освобождения сопроцессора Intel Xeon Phi
Выберите технологии и API, которые вы можете использовать при программировании для сопроцессора Intel Xeon Phi?
Intel Cilk Plus pthreads MPI Intel TBB Intel ArBB OpenMP
При использовании модели симметричного выполнения (Symmetric model) для взаимодействия между процессорами базовой системы, в пределах сопроцессора и между сопроцессором и процессорами базовой системы по умолчанию используется
протокол tcp механизм разделяемой памяти
При использовании модели использования только сопроцессоров (Coprocessor-only model)
MPI-процессы выполняются как на процессорах базовой системы, так и на сопроцессорах Intel Xeon Phi PI-процессы выполняются только на процессорах базовой системы MPI-процессы выполняются только на сопроцессорах Intel Xeon Phi
Можно ли при использовании режима Offload выполнять в Offload-части кода вызовы MPI-функций?
нельзя можно, для этого существует специальный механизм
Техника двойной буферизации позволяет
уменьшить или полностью компенсировать латентность передачи входных/выходных данных при использовании режима Offload уменьшить размер необходимой памяти при использовании режима Offload уменьшить время передачи входных/выходных данных при использовании режима Offload
Сколько этапов (стадий) содержит конвейер сопроцессора Intel Xeon Phi?
9 7 6 8
Технология программирования OpenMP расширяет язык программирования за счет:
новых ключевых слов новых директив и специальных комментариев новых библиотечных функций и переменных окружения
Для каких вычислительных систем предназначена технология OpenMP?
для систем с общей памятью для систем с распределенной памятью
При разработке программ для сопроцессора Intel Xeon Phi
требуется использовать специальный язык программирования можно использовать языки C\C++ и Fortran
Модели программирования для сопроцессора Intel Xeon Phi это
Offload, MPI Offload, OpenMP MPI, OpenMP
При разработке программ для сопроцессора Intel Xeon Phi
можно использовать MPI, OpenMP, Cilk Plus, TBB требуется использовать специальную библиотеку функций
Что определяет количество потоков в рамках параллельной секции?
вызовы библиотечных функций библиотеки OpenMP значение переменных окружений количество вычислительных элементов
Для создания параллельной области необходимо использовать директиву:
#pragma omp parallel #pragma omp for #pragma parallel #pragma omp
Отметьте верные утверждения об OpenMP:
весь параллелизм приложения реализуется только с помощью параллельных циклов число параллельных потоков OpenMP приложения может определяться переменной окружения большинство конструкций OpenMP реализуется с помощью директив и/или специальных комментариев OpenMP ориентирован в первую очередь на написание программ для векторно-конвейерных компьютеров
Какое количество потоков может быть создано в рамках параллельной секции?
большее количества вычислительных элементов равное количеству вычислительных элементов меньше количества вычислительных элементов
Как определяется число процессов при запуске MPI-программы?
оно задается непосредственно в коде программы средствами MPI оно устанавливается через специальную переменную окружения оно задается явно при запуске MPI-программы оно будет равно числу узлов в кластере
Под параллельной программой в рамках MPI понимается:
множество одновременно работающих процессоров множество одновременно выполняемых потоков множество одновременно выполняемых процессов
Можно ли в OpenMP программе управлять количеством потоков выполняющих работу, не меняя кода программы?
да, если в программе явно не определяется количество потоков нет, программа сама определяет количество потоков да, используя переменные окружения
Для распределения итераций цикла между потоками необходимо использовать следующую директиву OpenMP:
#pragma omp parallel for #pragma omp sections #pragma parallel for #pragma omp for, если данная директива находится внутри параллельной области
Минимально необходимый набор операций для организации информационного взаимодействия между процессорами в вычислительных системах с распределенной памятью включает в себя только:
операции передачи данных и коллективные операции только коллективные операции операции приема и передачи данных
Процессы параллельной программой в рамках MPI:
могут выполняться только на разных процессорах могут выполняться на разных процессорах, на одном процессоре могут располагаться несколько процессов обязательно выполняются на одном процессоре
В программе на MPI необходимо распределить итерации цикла между процессами, считая, что время выполнения итераций примерно одинаковое
это будет сделано автоматически по общему число процессов разделить общее число итераций цикла на число процессов. По рангу каждого процесса определить начальное и конечное значение счетчика цикла. вызвать MPI-функцию, которая для каждого процесса определит, какие итерации цикла должен выполнить данный процесс
Сколько потоков для вычислений будет создано библиотекой TBB после выполнения указанного ниже кода?
task_scheduler_init init; init.initialize(4);
потоки созданы не будут из-за ошибки повторной инициализации будет создан 1 поток количество создаваемых потоков будет определено автоматически будет создано 4 потока
В Cilk Plus входят:
сопроцессор x87, коммутатор Light Peak, ускоритель графических и физических расчётов набор редьюсеров, 3 ключевых слова, гиперобъекты и расширенная семантика операций над массивами библиотека TBB, расширение языка с помощью прагм и комментариев, векторизация SDK, спецификация промежуточного слоя, библиотеки функций
Код "cilk_for(int i=0; i<maxi; i++) Func(); " позволяет:
распараллелить цикл векторизовать цикл определить экстремум функции распараллелить и векторизовать цикл
Планировщик Cilk Plus основан на распределении работы путём:
захвата доступной работы у случайного потока распределения "билетиков" из центральной очереди запроса работы у следующего узла процессора захвата доступной работы в ближайшем пуле
При реализации функтора для функции parallel_for:
запрещается вызывать напрямую operator() для объекта функтора сохранять результат работы функтора необходимо в полях функтора operator() должен принимать в качестве параметра итерационное пространство
Для чего предназначена операция расщепления в итерационном пространстве?
для разделения итерационного пространство на два одинаковых подмножества для разделения итерационного пространство на два подмножества для порождения копии итерационного пространства
Планирование вычислений в функции parallel_for:
статическое и определено разработчиками библиотеки TBB динамическое, размер порции вычислений определяется параметром grainsize определяется используемым итерационным пространством
Intel Cilk Plus – это:
виртуальная машина, векторизующая параллельные программы новая модель процессоров Intel, созданная специально для параллельных программ библиотека, независимая от компилятора расширение языка С и С++, поддерживаемое компилятором Intel
В коде "cilk_spawn F1(); F2(); cilk_sync;"
обе функции всегда будут выполняться параллельно друг другу функция F1 будет выполнена текущим потоком, а F2 может быть подхвачена другим потоком функция F2 будет выполнена текущим потоком, а F1 может быть подхвачена другим потоком будет произведена дефрагментация стэка для F1, что позволит векторизовать F2
Какой ключ компилятора icc следует использовать для компиляции программы, исполняемой в режиме offload:
дополнительного ключа не требуется -mic -offload -mmic
Какой ключ компилятора icc следует использовать для компиляции программы, если она должна запускаться только на сопроцессоре:
дополнительного ключа не требуется -offload -mic -mmic
Код на сопроцессоре Intel Xeon Phi исполняется в
асинхронном режиме, т.е. при вызове функции управление передается сопроцессору, выполнение основной программы продолжается синхронном режиме, т.е. при вызове функции управление передается сопроцессору, а выполнение основной программы блокируется, пока сопроцессор не завершит свою работу
Какой из представленных ниже скриптов обеспечивает запуск программы в режиме исполнения только на сопроцессоре:
Данный скрипт обеспечивает запуск программы в режиме исполнения только на сопроцессоре на кластере с системой управления SLURM. Сколько процессов на узел будет создано при запуске программы?
8 2 4 1
Какой скрипт обеспечивает получение монопольного доступа к двум узлам кластера, на каждом из которых установлено не менее двух сопроцессоров? Работа ведется на кластере с системой управления SLURM.
Данный скрипт обеспечивает запуск программы в режиме исполнения только на сопроцессоре на кластере с системой управления SLURM. Сколько всего процессов будет создано при запуске программы?
Данный скрипт обеспечивает запуск программы в симметричном режиме на кластере с системой управления SLURM. Сколько всего процессов будет создано при запуске программы?
В каком порядке будут исполняться функции F1 и F2?
асинхронно F1 и F2 вначале F1, затем F2 вначале F2, затем F1
Внимание ! Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier! Для компиляции программы, исполняемой только на сопроцессоре, следует использовать скрипт:
Подход, основанный на организации вычислений с использованием команд SIMD (SSE, SSE2, etc.), называется:
комбинация интерполяция модуляция векторизация
Суть парадигмы SIMD заключается в следующем:
одновременное выполнение операции над разными данными одновременное выполнение разных операций над одними и теми же данными многократное выполнение одинаковых операций над одними и теми же данными одновременное выполнение разных операций над разными данными
Пусть в программе присутствует следующий код:
#define LOOP_SIZE 24 … int rr[LOOP_SIZE]; … p = 1; for(int k = 0; k < LOOP_SIZE; k++) { p *= rr[k]; }
Какого следует ожидать ускорения в результате векторизации по сравнению со скалярной версией на Intel Xeon Phi?
<12 >12 8 16
Пусть в программе присутствует следующий код:
#define LOOP_SIZE 24 … int rr[LOOP_SIZE]; for(int k = 0; k < LOOP_SIZE; k++) { rr[k] = number % k; }
Какого следует ожидать ускорения в результате векторизации по сравнению со скалярной версией на Intel Xeon Phi?
<12 16 8 >12
Пусть в программе присутствует следующий код:
#define LOOP_SIZE 16 … int rr[LOOP_SIZE]; … p = 1; for(int k = 0; k < LOOP_SIZE; k++) { p *= rr[k]; }
Какого следует ожидать ускорения в результате векторизации по сравнению со скалярной версией на Intel Xeon Phi?
8 16 >16 <16
Размер векторного регистра для хранения данных с плавающей запятой в наборе команд Intel Xeon Phi составляет:
32 байт 16 байт 64 байт 8 байт
Размер векторного регистра для хранения данных с плавающей запятой в наборе команд AVX составляет:
8 байт 64 байт 32 байт 16 байт
Размер векторного регистра для хранения данных с плавающей запятой в наборах команд SSE составляет:
64 байт 32 байт 8 байт 16 байт
Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами одинарной точности, на сопроцессоре Intel Xeon Phi
4 раза 2 раза 16 раз 8 раз
Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами одинарной точности, с использованием расширения SSE на процессоре Intel Xeon
4 раза 16 раз 2 раза 8 раз
Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами одинарной точности, с использованием расширения AVX на процессоре Intel Xeon
16 раз 4 раза 2 раза 8 раз
Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами двойной точности, на сопроцессоре Intel Xeon Phi
2 раза 4 раза 8 раз 16 раз
Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами двойной точности, с использованием расширения SSE на процессоре Intel Xeon
16 раз 2 раза 4 раза 8 раз
Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами двойной точности, с использованием расширения AVX на процессоре Intel Xeon
4 раза 16 раз 2 раза 8 раз
Какой процент от пиковой производительности можно получить в функции, работающей с вещественными числами одинарной точности, без использования векторных расширений на процессоре Intel Xeon
до 25% до 6.25% до 100% до 50% до 12.5%
Какой процент от пиковой производительности можно получить в функции, работающей с вещественными числами одинарной точности, без использования векторных расширений на сопроцессоре Intel Xeon Phi
до 25% до 50% до 100% до 6.25% до 12.5%
Какое из следующих замечаний является верным:
использование векторного кода на Intel Xeon Phi не позволит добиться хорошей производительности (в процентах от пика) использование скалярного кода на Intel Xeon Phi не позволит добиться хорошей производительности (в процентах от пика)
Какое из следующих утверждений является верным?
инструкция вида FMA позволяет выполнить 3 арифметических операции с округлением в конце инструкция вида FMA позволяет выполнить 3 арифметических операции за один такт инструкция вида FMA позволяет выполнить 2 арифметических операции без потери точности инструкция вида FMA позволяет выполнить 2 арифметических операции с округлением в конце
Инструкция вида FMA позволяет выполнить следующую операцию:
a = a * b * c; a = a + b * c a = a + b / c; a = a + b
Как реализована расширенная поддержка математических функций в Xeon Phi?
основные математические функции вычисляются без потери точности 4 математические функции реализованы аппаратно для одинарной точности основные математические функции реализованы аппаратно для одинарной точности основные математические функции вычисляются аппаратно
Каким образом возможно использование векторных инструкций в программе?
только при их автоматической генерации компилятором при векторизации циклов при автоматической генерации компилятором или вручную только при вызове специальных функций-интринсик вручную только при использовании специальных векторных языков программирования
Какие из перечисленных директив компилятора предназначены для векторизации кода?
#pragma cilk_for #pragma simd #pragma omp parallel for #pragma ivdep
Векторизация является параллелизмом на уровне:
параллельной работы нескольких процессов параллельной работы нескольких ядер параллельной работы нескольких потоков параллельного исполнения операций на одном ядре
Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер. Массивы a, b не пересекаются.
for (int i = 0; i < n; i++) a[i] = b[i] * 2 + 8;
каждая итерация зависит от предыдущей: a[i + 1] не может быть вычислено до b[i] каждая итерация зависит от предыдущей: a[i + 1] не может быть вычислено до a[i] каждая итерация зависит от предыдущей: a[i] не может быть вычислено до b[i] итерации независимы
Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер.
for (int i = 0; i < n – 1; i++) a[i + 1] = a[i] * 2 – 5;
каждая итерация зависит от предыдущей: a[i + 1] не может быть вычислено до a[i] каждая итерация зависит от предыдущей: a[i] не может быть вычислено до a[i - 1] каждая итерация зависит от следующей: a[i + 1] не может быть вычислено до a[i] итерации независимы
Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер.
for (int i = 0; i < n – 2; i++) a[i + 2] = a[i] * 3 + 1;
все четные итерации зависимы между собой, все нечетные итерации зависимы между собой, четные и нечетные итерации независимы каждая итерация зависит от предыдущей: a[i + 2] не может быть вычислено до a[i] каждая итерация зависит от предыдущей: a[i + 1] не может быть вычислено до a[i] итерации независимы
Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер. Массивы a, b не пересекаются.
for (int i = 0; i < n - 2; i++) a[i] = b[i + 2] * 4 - 5;
каждая итерация зависит от предыдущей: a[i + 1] не может быть вычислено до a[i] итерации независимы все четные итерации зависимы между собой, все нечетные итерации зависимы между собой, четные и нечетные итерации независимы каждая итерация зависит от предыдущей: a[i] не может быть вычислено до b[i + 2]
Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер. Массивы a, b, c не пересекаются.
for (int i = 1; i < n - 2; i++) a[i] = b[i + 2] * c[i – 1];
каждая итерация зависит от следующей: a[i] не может быть вычислено до c[i – 1] каждая итерация зависит от предыдущей: a[i + 1] не может быть вычислено до a[i] каждая итерация зависит от предыдущей: a[i] не может быть вычислено до b[i + 2] итерации независимы
Код «D[:] = sin(S[:]);» в Cilk Plus приведёт к:
потере времени ошибке компиляции инверсии операций векторизации
требуется собрать с поддержкой векторного набора команд AVX (ключ –mavx). Нужно ли модифицировать код?
да, добавить прагму simd перед циклом да, добавить ключевое слово restrict в объявления параметров в функции нет, все, что необходимо компилятору для векторизации, в коде присутствует
Какие ключи компилятора необходимо указать для корректной компиляции следующей функции
Выберите синтаксические конструкции, посредством которых выделяются те участки кода, которые должны быть скомпилированы для выполнения на сопроцессоре:
В системе доступно 3 сопроцессора. Директива #pragma offload target(mic:0) обеспечивает
выполнение следующего за ней блока кода на сопроцессоре 0 приводит к ошибке времени исполнения выполнение следующего за ней блока кода на сопроцессоре 2 выполнение следующего за ней блока кода на сопроцессоре 1
В системе доступно 3 сопроцессора. Директива #pragma offload target(mic:5) обеспечивает:
выполнение следующего за ней блока кода на сопроцессоре 2 выполнение следующего за ней блока кода на сопроцессоре 0 приводит к ошибке времени исполнения выполнение следующего за ней блока кода на сопроцессоре 1
В системе доступно 3 сопроцессора. Директива #pragma offload target(mic:6) обеспечивает:
выполнение следующего за ней блока кода на сопроцессоре 0 выполнение следующего за ней блока кода на сопроцессоре 2 приводит к ошибке времени исполнения выполнение следующего за ней блока кода на сопроцессоре 1
В системе доступно 3 сопроцессора. Директива #pragma offload target(mic:4) обеспечивает:
приводит к ошибке времени исполнения выполнение следующего за ней блока кода на сопроцессоре 1 выполнение следующего за ней блока кода на сопроцессоре 0 выполнение следующего за ней блока кода на сопроцессоре 2
выполнение следующего за ней блока кода на одном из доступных сопроцессоров, а в случае их отсутствия либо занятости приводит к ошибке времени исполнения выполнение следующего за ней блока кода на одном из доступных сопроцессоров, а в случае их отсутствия либо занятости - на центральном процессоре выполнение следующего за ней блока кода на нулевом сопроцессоре выполнение следующего за ней блока кода на центральном процессоре
Какой параметр директивы #pragma offload используется для копирования данных с хоста на сопроцессор?
signal out target in
Какой параметр директивы #pragma offload используется для явного указания, где запускать код?
in signal out target
Какой параметр директивы #pragma offload используется для копирования данных с сопроцессора на хост?
in signal out target
Какой параметр директивы #pragma offload используется для асинхронного выполнения кода на сопроцессоре?
out in signal target
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
для структур с полями любых типов для скалярных переменных всех встроенных типов данных для статических массивов с элементами встроенных типов данных
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
для статических массивов для скалярных переменных всех встроенных типов данных для структур, не содержащих полей-указателей
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
для динамических массивов, при указании размера для динамических массивов с элементами типа структур, не содержащих полей-указателей, при указании размера для структур, не содержащих полей-указателей
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
для скалярных переменных всех встроенных типов данных для статических массивов с элементами встроенных типов данных для динамических массивов с элементами типа структур, не содержащих полей-указателей, при указании размера для структур, не содержащих полей-указателей
При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
для статических массивов с элементами встроенных типов данных для статических массивов с элементами типа структур, не содержащих полей-указателей для динамических массивов, при указании размера
Какие из приведенных ниже ключевых слов расширения Intel Cilk Plus позволяют выполнить функцию на сопроцессоре:
Какое из приведенных ниже ключевых слов расширения Intel Cilk Plus отвечает за неблокирующее выполнение кода на сопроцессоре (центральный процессор не ждет, пока сопроцессор закончит свою работу):
Какое из приведенных ниже ключевых слов расширения Intel Cilk Plus позволяет объявить переменную, которая будет доступна как на процессоре, так и на сопроцессоре:
Какие параметры нужно добавить в соответствующее место в приведенном выше коде (вместо "[Параметры]"), чтобы обеспечить корректное и эффективное выполнение кода:
in(a) inout(b) inout(a, b) nocopy(a, b) in(a) out(b)
Использование какого ключевого слова в языках программирования C/C++ позволяет сказать компилятору о том, что доступ к некоторой памяти возможен с использованием только одного указателя (нет перекрытий по памяти с другими указателями)?
restrict auto extern register
Какие из приведенных ниже языков программирования поддерживают неявную схему работы с памятью в режиме offload:FortranCC++C#
Какие из приведенных ниже языков программирования поддерживают явную схему работы с памятью в режиме offload:FortranC++CC#
Какая директива предназначена для безусловной векторизации цикла?
Дан массив A размером 100 элементов. Как с помощью технологии Array Notation получить доступ к элементам 10, 11, 12, 13, 14:
A[10:4] A[10:14] A[10:13] A[10:5]
Дан массив A размером 100 элементов. Как с помощью технологии Array Notation получить доступ ко всем элементам массива:
A[0:100] A[0:100:1] A[100] A[:]/1
Ключ компилятора Intel -vec-report6 позволяет получить сообщения о невозможности векторизовать цикл вида:
loop was not vectorized loop was not vectorized: unsupported data type vectorization support: type TTT is not supported for operation OOO
Можно ли при использовании режима Offload организовать передачу между хостом и сопроцессором сложных структур данных, например, использующих указатели?
нельзя можно, для этого существует специальный механизм
Ключ компилятора Intel -vec-report3 позволяет получить сообщения о невозможности векторизовать цикл вида:
loop was not vectorized: unsupported data type loop was not vectorized vectorization support: type TTT is not supported for operation OOO
Отметьте некорректное утверждение касательно правил вызова элементарных функций (технология Elemental Functions):
передача структур по ссылке запрещена непрямые вызовы запрещены синхронизация запрещена передача структур по значению запрещена
Отметьте корректные утверждения касательно правил вызова элементарных функций (технология Elemental Functions):
непрямые вызовы запрещены передача структур по ссылке запрещена синхронизация запрещена передача структур по значению запрещена
Какой ключ компилятора Intel позволяет получить наиболее полный отчет о векторизации вашего кода:
Опция компилятора Intel -vec-report позволяет получить:
руководство по дополнительной оптимизации. Позволяет получить ряд советов касательно модификации вашего кода с тем, чтобы компилятор мог лучше его оптимизировать руководство по векторизации. Позволяет получить рекомендации по изменению кода, которые позволят компилятору найти больше возможностей для векторизации отчет о векторизации. Позволяет получить информацию о том, какой код был векторизован, для какого кода это сделать не удалось и почему отчет об оптимизации. Информирует программиста о том, как компилятор модифицирует код, пытаясь сгенерировать наиболее оптимальную его версию
Опция компилятора Intel -guide позволяет получить:
руководство по векторизации. Позволяет получить рекомендации по изменению кода, которые позволят компилятору найти больше возможностей для векторизации руководство по дополнительной оптимизации. Позволяет получить ряд советов касательно модификации вашего кода с тем, чтобы компилятор мог лучше его оптимизировать отчет о векторизации. Позволяет получить информацию о том, какой код был векторизован, для какого кода это сделать не удалось и почему отчет об оптимизации. Информирует программиста о том, как компилятор модифицирует код, пытаясь сгенерировать наиболее оптимальную его версию
Опция компилятора Intel -opt-report позволяет получить:
руководство по векторизации. Позволяет получить рекомендации по изменению кода, которые позволят компилятору найти больше возможностей для векторизации руководство по дополнительной оптимизации. Позволяет получить ряд советов касательно модификации вашего кода с тем, чтобы компилятор мог лучше его оптимизировать отчет об оптимизации. Информирует программиста о том, как компилятор модифицирует код, пытаясь сгенерировать наиболее оптимальную его версию отчет о векторизации. Позволяет получить информацию о том, какой код был векторизован, для какого кода это сделать не удалось и почему
Опция компилятора Intel -guide-vec позволяет получить:
отчет об оптимизации. Информирует программиста о том, как компилятор модифицирует код, пытаясь сгенерировать наиболее оптимальную его версию руководство по векторизации. Позволяет получить рекомендации по изменению кода, которые позволят компилятору найти больше возможностей для векторизации руководство по дополнительной оптимизации. Позволяет получить ряд советов касательно модификации вашего кода с тем, чтобы компилятор мог лучше его оптимизировать отчет о векторизации. Позволяет получить информацию о том, какой код был векторизован, для какого кода это сделать не удалось и почему
Признаками наличия неравномерной вычислительной нагрузки между потоками являются:
малое ускорение по сравнению с последовательной программой неправильные результаты расчетов большая доля последовательного выполнения
Алгоритм распределения потоков по ядрам сопроцессора Intel Xeon Phi, максимально заполняющий ядра потоками (часть ядер при этом может быть свободна), можно задать как:
К чему приводит неравномерное распределение вычислительной нагрузки между потоками?
к нехватке памяти к ошибкам в процессе вычислений к неэффективной работе программы
Вы написали программу на языке C. Эта программа работает корректно на подготовленных тестовых данных, но скорость работы вас не устраивает. Каким инструментом, входящим в комплект поставки Intel Parallel Studio, вы воспользуетесь для определения участка программы, на выполнение которого расходуется наибольшее количество времени?
обеспечить корректность работы параллельной программы повысить производительность параллельной программы обеспечить максимальную утилизацию вычислительных ресурсов
На эффективность работы параллельной программы существенное влияние оказывают следующие факторы:
минимизация непроизводительных издержек при работе с потоками выбор примитивов синхронизации доля времени, которое приложение проводит в режиме последовательного выполнения наличие синхронизации между потоками объем исходного кода программы балансировка вычислительной загрузки
Вы написали программу на языке C. Эта программа работает корректно на подготовленных тестовых данных, но скорость работы вас не устраивает. Какими инструментами, входящими в комплект поставки Intel Parallel Studio, вы воспользуетесь для увеличения скорости работы вашей программы?
Экзамен "Введение в принципы функционирования и применения современных мультиядерных архитектур (на примере Intel Xeon Phi)" для пользователей и системных администраторов.