Главная /
Введение в принципы функционирования и применения современных мультиядерных архитектур (на примере Intel Xeon Phi)
Введение в принципы функционирования и применения современных мультиядерных архитектур (на примере Intel Xeon Phi) - ответы на тесты Интуит
В курсе изучаются вопросы разработки и оптимизации программного обеспечения, ориентированного на эффективное использование мультиядерных архитектур на примере сопроцессора Intel Xeon Phi.
Список вопросов:
- # Одна из формулировок закона Мура гласит:
- # Одна из формулировок закона Мура гласит:
- # Одна из формулировок закона Мура гласит:
- # Уменьшение техпроцесса производства процессоров приводит к:
- # Уменьшение техпроцесса производства процессоров приводит к:
- # Уменьшение техпроцесса производства процессоров приводит к:
- # Основным способом построения суперкомпьютеров на данный момент является:
- # Главным преимуществом кластерных систем является:
- # Современные персональные компьютеры в основном относятся к:
- # Один гигафлопс это?
- # Один гигафлопс это?
- # Какой порог производительности преодолевают лидеры списка Top 500?
- # Какой порог производительности преодолеют лидеры списка Top 500 в ближайшие годы?
- # К классу систем с однородным доступом к памяти (UMA) относятся:
- # К классу систем с неоднородным доступом к памяти (NUMA) относятся:
- # К классу мультикомпьютеров относятся:
- # Информационная целостность (когерентность) кэшей может быть организована на аппаратном уровне.
- # Информационная целостность (когерентность) кэшей может быть организована на программном уровне.
- # При использовании политики обратной записи (write back) данных из кэша в оперативную память:
- # При использовании политики сквозной записи (write through) данных из кэша в оперативную память:
- # Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
- # Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
- # Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
- # Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
- # Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
- # Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
- # Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:
- # Какие из указанных состояний строки кэша используются в протоколе MESI:
- # Какие из указанных состояний строки кэша используются в протоколе MESI:
- # Какие из указанных состояний строки кэша используются в протоколе MESI:
- # Какие из указанных состояний строки кэша используются в протоколе MESI:
- # Какие из указанных состояний строки кэша используются в протоколе MESI:
- # Какие из указанных состояний строки кэша используются в протоколе MESI:
- # Необходимыми средствами при реализации одновременной многопоточности (simul-taneous multithreading, SMT) являются:
- # Необходимыми средствами при реализации одновременной многопоточности (simul-taneous multithreading, SMT) являются:
- # В каких случаях одновременная многопоточность может положительно сказаться на производительности:
- # В каких случаях одновременная многопоточность может негативно сказаться на производительности:
- # Теоретическая производительность сопроцессора Intel Xeon Phi больше производительности процессоров общего назначения.
- # Теоретическая производительность сопроцессора Intel Xeon Phi больше производительности процессоров общего назначения.
- # Теоретическая производительность сопроцессора Intel Xeon Phi больше производительности процессоров общего назначения.
- # Сколько ядер содержит сопроцессор Intel Xeon Phi?
- # Сколько ядер рекомендуется использовать для вычислений на сопроцессоре Intel Xeon Phi?
- # Сколько потоков может одновременно выполняться на сопроцессоре Intel Xeon Phi?
- # Сколько конвейеров содержит одно ядро сопроцессора Intel Xeon Phi?
- # Сколько потоков может одновременно выполняться на одном ядре сопроцессоре Intel Xeon Phi?
- # Сколько контроллеров памяти содержит сопроцессор Intel Xeon Phi?
- # Сколько каналов доступа к памяти включает каждый контроллер памяти сопроцессора Intel Xeon Phi?
- # Поддерживает ли ядро сопроцессора Intel Xeon Phi внеочередное выполнение инструкций?
- # Какие векторные расширения поддерживает сопроцессор Intel Xeon Phi?
- # Реализовано ли в ядрах сопроцессора Intel Xeon Phi аппаратное предсказание переходов и спекулятивное выполнение инструкций?
- # Какова разрядность блока векторных вычислений сопроцессора Intel Xeon Phi (длина обрабатываемых векторов)?
- # Блок векторных вычислений:
- # На какой конвейер отправляется первая инструкция из пары декодированных?
- # Какую латентность имеют большинство инструкций - арифметических операций с целыми числами и масками?
- # Какую латентность имеют большинство векторных инструкций?
- # Какова теоретическая производительность сопроцессора Intel Xeon Phi для вещественных чисел одинарной точности при использовании 60 ядер?
- # Какова теоретическая производительность сопроцессора Intel Xeon Phi для вещественных чисел двойной точности при использовании 60 ядер?
- # Выберите все верные утверждения.
- # Выберите верное утверждения.
- # Какая архитектура Кеша используется в сопроцессоре Intel Xeon Phi?
- # Какие характеристики имеют кеши L1 (кеш инструкций L1 I-Cache и кеш данных L1 D-Cache) ядра сопроцессора Intel Xeon Phi?
- # Какой размер имеет кеш L2 ядра сопроцессора Intel Xeon Phi?
- # Какие схемы взаимодействия между кешем и основной памятью реализованы в сопроцессоре Intel Xeon Phi?
- # Какие режимы работы и разрядность физического адреса поддерживает сопроцессор Intel Xeon Phi?
- # Какие размеры страниц поддерживает сопроцессор Intel Xeon Phi?
- # Выберите все верные утверждения.
- # Какова суммарная пропускная способность всех контроллеров памяти сопроцессора Intel Xeon Phi?
- # Какова латентность доступа к памяти сопроцессора Intel Xeon Phi?
- # Какие типы передачи данных могут выполнять ядра сопроцессора Intel Xeon Phi?
- # Выберите верное утверждение.
- # Выберите верное утверждение.
- # Какова латентность доступа к памяти сопроцессора Intel Xeon Phi?
- # Какие дополнительные возможности реализованы в сопроцессоре Intel Xeon Phi по сравнению с процессорами Xeon?
- # Какие базовые операционные системы позволяют использовать сопроцессор Intel Xeon Phi?
- # Операционная система, выполняющаяся на сопроцессоре Intel Xeon Phi:
- # Что такое Symmetric Communication Interface API (SCIF API)?
- # Какая операционная система по умолчанию выполняется на и сопроцессоре Intel Xeon Phi?
- # Каким образом можно передавать данные между памятью хост-системы и памятью сопроцессора Intel Xeon Phi?
- # В каких случаях предпочтительнее использовать DMA-передачу, а не копирование памяти (выберите все подходящие варианты)?
- # Как могут использоваться вычислительные мощности системы с установленным сопроцессором Intel Xeon Phi? Выберите все правильные варианты.
- # Какие режимы выполнения приложений поддерживаются для систем с установленными сопроцессорами Intel Xeon Phi? Выберите все правильные варианты.
- # При использовании модели симметричного выполнения (Symmetric model)
- # При использовании режима Offload:
- # При использовании модели использования только сопроцессоров (Coprocessor-only model)
- # Выберите технологии и API, которые вы можете использовать при программировании для сопроцессора Intel Xeon Phi?
- # При использовании модели симметричного выполнения (Symmetric model) для взаимодействия между процессорами базовой системы, в пределах сопроцессора и между сопроцессором и процессорами базовой системы по умолчанию используется
- # Что происходит, если при вызове offload-кода сопроцессор Intel Xeon Phi оказывается занят?
- # Техника двойной буферизации позволяет
- # Можно ли при использовании режима Offload организовать передачу между хостом и сопроцессором сложных структур данных, например, использующих указатели?
- # Можно ли при использовании режима Offload выполнять в Offload-части кода вызовы MPI-функций?
- # Сколько этапов (стадий) содержит конвейер сопроцессора Intel Xeon Phi?
- # Модели программирования для сопроцессора Intel Xeon Phi это
- # При разработке программ для сопроцессора Intel Xeon Phi
- # При разработке программ для сопроцессора Intel Xeon Phi
- # Для каких вычислительных систем предназначена технология OpenMP?
- # Технология программирования OpenMP расширяет язык программирования за счет:
- # Отметьте верные утверждения об OpenMP:
- # Для создания параллельной области необходимо использовать директиву:
- # Какое количество потоков может быть создано в рамках параллельной секции?
- # Что определяет количество потоков в рамках параллельной секции?
- # Для распределения итераций цикла между потоками необходимо использовать следующую директиву OpenMP:
- # Какая директива OpenMP может быть использована для синхронизации потоков?
- # Можно ли в OpenMP программе управлять количеством потоков выполняющих работу, не меняя кода программы?
- # Под параллельной программой в рамках MPI понимается:
- # Как определяется число процессов при запуске MPI-программы?
- # В программе на MPI необходимо распределить итерации цикла между процессами, считая, что время выполнения итераций примерно одинаковое
- # Процессы параллельной программой в рамках MPI:
- # Минимально необходимый набор операций для организации информационного взаимодействия между процессорами в вычислительных системах с распределенной памятью включает в себя только:
- # Intel Cilk Plus – это:
- # В Cilk Plus входят:
- # Планировщик Cilk Plus основан на распределении работы путём:
- # В коде "cilk_spawn F1(); F2(); cilk_sync;"
- # Код "cilk_for(int i=0; i<maxi; i++) Func(); " позволяет:
- # Сколько потоков для вычислений будет создано библиотекой TBB после выполнения указанного ниже кода? task_scheduler_init init; init.initialize(4);
- # Для чего предназначена операция расщепления в итерационном пространстве?
- # Планирование вычислений в функции parallel_for:
- # При реализации функтора для функции parallel_for:
- # Планирование вычислений в функции parallel_for:
- # Код на сопроцессоре Intel Xeon Phi исполняется в
- # Какой ключ компилятора icc следует использовать для компиляции программы, исполняемой в режиме offload:
- # Какой ключ компилятора icc следует использовать для компиляции программы, если она должна запускаться только на сопроцессоре:
- # #!/bin/sh mpicc –O2 –openmp main.cpp –o ./program_name mpicc –O2 –openmp –mmic main.cpp –o ./program_name.mic Данный скрипт используется для компиляции программы, которая должна исполняться в режиме:
- # Для компиляции программы, исполняемой в режиме offload, следует использовать скрипт:
- # Для компиляции программы, исполняемой только на сопроцессоре, следует использовать скрипт:
- # Для компиляции программы, исполняемой в симметричном режиме, следует использовать скрипт:
- # Какой из представленных ниже скриптов обеспечивает запуск программы в режиме offload:
- # Какой из представленных ниже скриптов обеспечивает запуск программы в режиме исполнения только на сопроцессоре:
- # Какой из представленных ниже скриптов обеспечивает запуск программы в симметричном режиме:
- # #!/bin/sh mpiexec.hydra –perhost 1 ./program_name Данный скрипт обеспечивает запуск программы в режиме:
- # #!/bin/sh mpiexec.hydra –host mic0 –n 1 –perhost 1 ./program_name.mic Данный скрипт обеспечивает запуск программы в режиме:
- # #!/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 Данный скрипт обеспечивает запуск программы в режиме:
- # #!/bin/sh export MICperNODE=1 sbatch –N 4 –-gres=mic:2 native_run.sh ./program_name Данный скрипт обеспечивает запуск программы в режиме исполнения только на сопроцессоре на кластере с системой управления SLURM. Сколько процессов на узел будет создано при запуске программы?
- # #!/bin/sh export MICperNODE=2 sbatch –N 2 –-gres=mic:4 native_run.sh ./program_name Данный скрипт обеспечивает запуск программы в режиме исполнения только на сопроцессоре на кластере с системой управления SLURM. Сколько всего процессов будет создано при запуске программы?
- # 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. Сколько всего процессов будет создано при запуске программы?
- # Какой скрипт обеспечивает получение монопольного доступа к двум узлам кластера, на каждом из которых установлено не менее двух сопроцессоров? Работа ведется на кластере с системой управления SLURM.
- # Задача факторизации натурального числа N состоит в
- # Следующий псевдокод 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;
- # Следующий код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--; } }
- # Следующая функция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) приведет к
- # Следующая функция 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) уменьшит время
- # Следующая функция 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
- # Пусть разработан код представленный ниже: #pragma offload target(mic:0) signal(s1) { F1(p1, p2); } F2(); В каком порядке будут исполняться функции F1 и F2?
- # Пусть разработан код представленный ниже: #pragma offload target(mic:0) { F1(p1, p2); } F2(); В каком порядке будут исполняться функции F1 и F2?
- # Пусть разработан код представленный ниже: #pragma offload target(mic:0) wait (s1) { F1(p1, p2); } F2(); В каком порядке будут исполняться функции F1 и F2?
- # Пусть разработан код представленный ниже: F1(); #pragma offload target(mic:0) signal(s1) { F2(p1, p2); } В каком порядке будут исполняться функции F1 и F2?
- # Пусть разработан код представленный ниже: F1(); #pragma offload target(mic:0) wait(s1) { F2(p1, p2); } В каком порядке будут исполняться функции F1 и F2?
- # Пусть разработан код представленный ниже:int r = 0; int main() { #pragma offload target(mic:0) { setR(); } printf("%d", r); } ... setR() { r = 1; } Что будет выведено на экран?
- # Подход, основанный на организации вычислений с использованием команд SIMD (SSE, SSE2, etc.), называется:
- # Суть парадигмы SIMD заключается в следующем:
- # Пусть в программе присутствует следующий код:#define LOOP_SIZE 16 … int rr[LOOP_SIZE]; … p = 1; for(int k = 0; k < LOOP_SIZE; k++) { p *= rr[k]; } Какого следует ожидать ускорения в результате векторизации по сравнению со скалярной версией на Intel Xeon Phi?
- # Пусть в программе присутствует следующий код:#define LOOP_SIZE 24 … int rr[LOOP_SIZE]; … p = 1; for(int k = 0; k < LOOP_SIZE; k++) { p *= rr[k]; } Какого следует ожидать ускорения в результате векторизации по сравнению со скалярной версией на Intel Xeon Phi?
- # Пусть в программе присутствует следующий код:#define LOOP_SIZE 24 … int rr[LOOP_SIZE]; for(int k = 0; k < LOOP_SIZE; k++) { rr[k] = number % k; } Какого следует ожидать ускорения в результате векторизации по сравнению со скалярной версией на Intel Xeon Phi?
- # Размер векторного регистра для хранения данных с плавающей запятой в наборах команд SSE составляет:
- # Размер векторного регистра для хранения данных с плавающей запятой в наборе команд AVX составляет:
- # Размер векторного регистра для хранения данных с плавающей запятой в наборе команд Intel Xeon Phi составляет:
- # Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами одинарной точности, с использованием расширения SSE на процессоре Intel Xeon
- # Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами одинарной точности, с использованием расширения AVX на процессоре Intel Xeon
- # Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами одинарной точности, на сопроцессоре Intel Xeon Phi
- # Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами двойной точности, с использованием расширения SSE на процессоре Intel Xeon
- # Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами двойной точности, с использованием расширения AVX на процессоре Intel Xeon
- # Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами двойной точности, на сопроцессоре Intel Xeon Phi
- # Какой процент от пиковой производительности можно получить в функции, работающей с вещественными числами одинарной точности, без использования векторных расширений на процессоре Intel Xeon
- # Какой процент от пиковой производительности можно получить в функции, работающей с вещественными числами одинарной точности, без использования векторных расширений на сопроцессоре Intel Xeon Phi
- # Какое из следующих замечаний является верным:
- # Инструкция вида FMA позволяет выполнить следующую операцию:
- # Какое из следующих утверждений является верным?
- # Как реализована расширенная поддержка математических функций в Xeon Phi?
- # Векторизация является параллелизмом на уровне:
- # Какие из перечисленных директив компилятора предназначены для векторизации кода?
- # Каким образом возможно использование векторных инструкций в программе?
- # Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер.for (int i = 0; i < n – 1; i++) a[i + 1] = a[i] * 2 – 5;
- # Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер.for (int i = 0; i < n – 2; i++) a[i + 2] = a[i] * 3 + 1;
- # Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер. Массивы a, b не пересекаются.for (int i = 0; i < n; i++) a[i] = b[i] * 2 + 8;
- # Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер. Массивы a, b не пересекаются.for (int i = 0; i < n - 2; i++) a[i] = b[i + 2] * 4 - 5;
- # Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер. Массивы a, b, c не пересекаются.for (int i = 1; i < n - 2; i++) a[i] = b[i + 2] * c[i – 1];
- # Код «D[:] = sin(S[:]);» в Cilk Plus приведёт к:
- # Какие ключи компилятора необходимо указать для корректной компиляции следующей функции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; } }
- # Следующую функцию 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. Какие ключи компилятора необходимо использовать
- # Следующую функцию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). Нужно ли модифицировать код?
- # Пусть в программе присутствует следующий код: 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?
- # Пусть в программе присутствует следующий код:#define LOOP_SIZE 128 … int rr[LOOP_SIZE]; for(int k = 0; k < LOOP_SIZE; k++) { rr[k] = number % k; } Возможна ли векторизация данного цикла средствами компилятора для исполнения на Intel Xeon Phi?
- # Пусть в программе присутствует следующий код:#define LOOP_SIZE 130 … int rr[LOOP_SIZE]; for(int k = 0; k < LOOP_SIZE; k++) { rr[k] = number % k; } Возможна ли векторизация данного цикла средствами компилятора, для исполнения на Intel Xeon Phi?
- # Пусть в программе присутствует следующий код:#define LOOP_SIZE 16 … int rr[LOOP_SIZE]; for(int k = 0; k < LOOP_SIZE; k++) { rr[k] = number % k; } Возможна ли векторизация данного цикла средствами компилятора, для исполнения на Intel Xeon Phi?
- # Пусть в программе присутствует следующий код:#define LOOP_SIZE 16 … int rr[LOOP_SIZE]; … p = 1; for(int k = 0; k < LOOP_SIZE; k++) { p *= rr[k]; } Возможна ли векторизация данного цикла средствами компилятора, для исполнения на Intel Xeon Phi?
- # Пусть в программе присутствует следующий код:#define LOOP_SIZE 30 … int rr[LOOP_SIZE]; … p = 1; for(int k = 0; k < LOOP_SIZE; k++) { p *= rr[k]; } Возможна ли векторизация данного цикла средствами компилятора, для исполнения на Intel Xeon Phi?
- # Пусть в программе присутствует следующий код:#define LOOP_SIZE 128 … int rr[LOOP_SIZE]; … p = 1; for(int k = 0; k < LOOP_SIZE; k++) { p *= rr[k]; } Возможна ли векторизация данного цикла средствами компилятора, для исполнения на Intel Xeon Phi?
- # Выберите синтаксическую конструкцию, которая бы обеспечивала запуск участка кода на сопроцессоре (язык C/C++):
- # Выберите синтаксические конструкции, посредством которых выделяются те участки кода, которые должны быть скомпилированы для выполнения на сопроцессоре:
- # Выберите синтаксические конструкции, которые позволяют обеспечить обмен данными между процессором и сопроцессором:
- # Директива #pragma offload target(mic) обеспечивает:
- # В системе доступно 3 сопроцессора. Директива #pragma offload target(mic:0) обеспечивает
- # В системе доступно 3 сопроцессора. Директива #pragma offload target(mic:4) обеспечивает:
- # В системе доступно 3 сопроцессора. Директива #pragma offload target(mic:5) обеспечивает:
- # В системе доступно 3 сопроцессора. Директива #pragma offload target(mic:6) обеспечивает:
- # Какой параметр директивы #pragma offload используется для копирования данных с хоста на сопроцессор?
- # Какой параметр директивы #pragma offload используется для копирования данных с сопроцессора на хост?
- # Какой параметр директивы #pragma offload используется для явного указания, где запускать код?
- # Какой параметр директивы #pragma offload используется для асинхронного выполнения кода на сопроцессоре?
- # При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
- # При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
- # При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
- # При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
- # При использовании директивы #pragma offload с параметром in для каких данных поддерживается копирование?
- # __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); … } Какие параметры нужно добавить в соответствующее место в приведенном выше коде (вместо "[Параметры]"), чтобы обеспечить корректное и эффективное выполнение кода:
- # Какие из приведенных ниже ключевых слов расширения Intel Cilk Plus позволяют выполнить функцию на сопроцессоре:
- # Какое из приведенных ниже ключевых слов расширения Intel Cilk Plus отвечает за неблокирующее выполнение кода на сопроцессоре (центральный процессор не ждет, пока сопроцессор закончит свою работу):
- # Какое из приведенных ниже ключевых слов расширения Intel Cilk Plus позволяет объявить переменную, которая будет доступна как на процессоре, так и на сопроцессоре:
- # Какие из приведенных ниже языков программирования поддерживают явную схему работы с памятью в режиме offload:
- # Какие из приведенных ниже языков программирования поддерживают неявную схему работы с памятью в режиме offload:
- # Использование какого ключевого слова в языках программирования C/C++ позволяет сказать компилятору о том, что доступ к некоторой памяти возможен с использованием только одного указателя (нет перекрытий по памяти с другими указателями)?
- # Какая директива предназначена для того, чтобы сообщить компилятору об отсутствии зависимостей в цикле?
- # Какая директива предназначена для безусловной векторизации цикла?
- # Какая директива предназначена для указания компилятору на то, что все используемые массивы в цикле являются выровненными?
- # Технология Array Notation в Intel Cilk Plus используется для
- # Дан массив A размером 100 элементов. Как с помощью технологии Array Notation получить доступ ко всем элементам массива:
- # Дан массив A размером 100 элементов. Как с помощью технологии Array Notation получить доступ к элементам 10, 11, 12, 13, 14:
- # Отметьте корректные выражения с точки зрения использования технологии Array Notation:
- # Отметьте некорректные выражения с точки зрения использования технологии Array Notation:
- # Дан массив A размером 100 элементов. Как с помощью технологии Array Notation получить доступ к элементам 2, 4, 6, 8, 10:
- # Технология Elemental Functions в Intel Cilk Plus используется для
- # Отметьте корректные утверждения касательно правил вызова элементарных функций (технология Elemental Functions):
- # Отметьте некорректное утверждение касательно правил вызова элементарных функций (технология Elemental Functions):
- # Какой ключ компилятора Intel позволяет получить наиболее полный отчет о векторизации вашего кода:
- # Ключ компилятора Intel -vec-report3 позволяет получить сообщения о невозможности векторизовать цикл вида:
- # Ключ компилятора Intel -vec-report6 позволяет получить сообщения о невозможности векторизовать цикл вида:
- # Какая из предложенных ниже синтаксических конструкций обеспечивает выравнивание статических массивов?
- # Какая из предложенных ниже синтаксических конструкций обеспечивает выравнивание динамических массивов?
- # Какая из предложенных ниже синтаксических конструкций говорит компилятору о том, что данный адрес выровнен по границе в 64 байта?
- # Какая из предложенных ниже синтаксических конструкций говорит компилятору о том, что значение данной переменной кратно 16?
- # Какая из предложенных ниже синтаксических конструкций говорит компилятору о том, все массивы в рамках цикла выровнены?
- # Опция компилятора Intel -vec-report позволяет получить:
- # Опция компилятора Intel -guide-vec позволяет получить:
- # Опция компилятора Intel -guide позволяет получить:
- # Опция компилятора Intel -opt-report позволяет получить:
- # Алгоритм распределения потоков по ядрам сопроцессора Intel Xeon Phi, максимально заполняющий ядра потоками (часть ядер при этом может быть свободна), можно задать как:
- # К чему приводит неравномерное распределение вычислительной нагрузки между потоками?
- # Признаками наличия неравномерной вычислительной нагрузки между потоками являются:
- # На эффективность работы параллельной программы существенное влияние оказывают следующие факторы:
- # Какова цель балансировки нагрузки между потоками:
- # Вы написали программу на языке C. Эта программа работает корректно на подготовленных тестовых данных, но скорость работы вас не устраивает. Какими инструментами, входящими в комплект поставки Intel Parallel Studio, вы воспользуетесь для увеличения скорости работы вашей программы?
- # Вы написали программу на языке C. Эта программа работает корректно на подготовленных тестовых данных, но скорость работы вас не устраивает. Каким инструментом, входящим в комплект поставки Intel Parallel Studio, вы воспользуетесь для определения участка программы, на выполнение которого расходуется наибольшее количество времени?