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

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

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

Уменьшение техпроцесса производства процессоров приводит к:

Современные персональные компьютеры в основном относятся к:

К классу мультикомпьютеров относятся:

Одна из формулировок закона Мура гласит:

К классу систем с неоднородным доступом к памяти (NUMA) относятся:

Информационная целостность (когерентность) кэшей может быть организована на программном уровне.

Теоретическая производительность сопроцессора Intel Xeon Phi больше производительности процессоров общего назначения.

Один гигафлопс это?

Какой порог производительности преодолеют лидеры списка Top 500 в ближайшие годы?

При использовании политики обратной записи (write back) данных из кэша в оперативную память:

Одна из формулировок закона Мура гласит:

Основным способом построения суперкомпьютеров на данный момент является:

Необходимыми средствами при реализации одновременной многопоточности (simul-taneous multithreading, SMT) являются:

Информационная целостность (когерентность) кэшей может быть организована на аппаратном уровне.

Какой порог производительности преодолевают лидеры списка Top 500?

Главным преимуществом кластерных систем является:

Какие из указанных состояний строки кэша используются в протоколе MESI:

Необходимыми средствами при реализации одновременной многопоточности (simul-taneous multithreading, SMT) являются:

При использовании политики сквозной записи (write through) данных из кэша в оперативную память:

Информационную целостность (когерентность) кэшей на аппаратном уровне могут обеспечить:

Какой размер имеет кеш L2 ядра сопроцессора Intel Xeon Phi?

Какие типы передачи данных могут выполнять ядра сопроцессора Intel Xeon Phi?

Какую латентность имеют большинство инструкций — арифметических операций с целыми числами и масками?

Выберите верное утверждения.

Выберите верное утверждение.

При использовании модели использования только сопроцессоров (Coprocessor-only model)

Сколько контроллеров памяти содержит сопроцессор Intel Xeon Phi?

Блок векторных вычислений:

Какова теоретическая производительность сопроцессора Intel Xeon Phi для вещественных чисел двойной точности при использовании 60 ядер?

При использовании режима Offload:

Операционная система, выполняющаяся на сопроцессоре Intel Xeon Phi:

При использовании модели симметричного выполнения (Symmetric model) для взаимодействия между процессорами базовой системы, в пределах сопроцессора и между сопроцессором и процессорами базовой системы по умолчанию используется

Какова разрядность блока векторных вычислений сопроцессора Intel Xeon Phi (длина обрабатываемых векторов)?

Каким образом можно передавать данные между памятью хост-системы и памятью сопроцессора Intel Xeon Phi?

Что происходит, если при вызове offload-кода сопроцессор Intel Xeon Phi оказывается занят?

Техника двойной буферизации позволяет

На какой конвейер отправляется первая инструкция из пары декодированных?

Что такое Symmetric Communication Interface API (SCIF API)?

Сколько ядер рекомендуется использовать для вычислений на сопроцессоре Intel Xeon Phi?

Реализовано ли в ядрах сопроцессора Intel Xeon Phi аппаратное предсказание переходов и спекулятивное выполнение инструкций?

При использовании модели симметричного выполнения (Symmetric model)

Сколько потоков может одновременно выполняться на сопроцессоре Intel Xeon Phi?

Выберите верное утверждение.

Какая операционная система по умолчанию выполняется на и сопроцессоре Intel Xeon Phi?

Какова суммарная пропускная способность всех контроллеров памяти сопроцессора Intel Xeon Phi?

Сколько конвейеров содержит одно ядро сопроцессора Intel Xeon Phi?

Сколько потоков может одновременно выполняться на одном ядре сопроцессоре Intel Xeon Phi?

В каких случаях предпочтительнее использовать DMA-передачу, а не копирование памяти (выберите все подходящие варианты)?

Можно ли при использовании режима Offload выполнять в Offload-части кода вызовы MPI-функций?

Какие дополнительные возможности реализованы в сопроцессоре Intel Xeon Phi по сравнению с процессорами Xeon?

Выберите все верные утверждения.

Можно ли при использовании режима Offload организовать передачу между хостом и сопроцессором сложных структур данных, например, использующих указатели?

Сколько ядер содержит сопроцессор Intel Xeon Phi?

Какие характеристики имеют кеши L1 (кеш инструкций L1 I-Cache и кеш данных L1 D-Cache) ядра сопроцессора Intel Xeon Phi?

Какова латентность доступа к памяти сопроцессора Intel Xeon Phi?

Для чего предназначена операция расщепления в итерационном пространстве?

#!/bin/sh
mpicc –O2 –openmp main.cpp –o ./program_name
mpicc –O2 –openmp –mmic main.cpp –o ./program_name.mic

Данный скрипт используется для компиляции программы, которая должна исполняться в режиме:


Следующий код
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--;
      }
    }

Пусть разработан код представленный ниже:
int r = 0;

int main()
{

  #pragma offload target(mic:0)
  {
    setR(); 
  }
  printf("%d", r);
}
...
setR()
{
  r = 1;
}

Что будет выведено на экран?


Для создания параллельной области необходимо использовать директиву:

Планирование вычислений в функции parallel_for:

Какой ключ компилятора icc следует использовать для компиляции программы, если она должна запускаться только на сопроцессоре:

#!/bin/sh
mpiexec.hydra –host mic0 –n 1 –perhost 1 ./program_name.mic

Данный скрипт обеспечивает запуск программы в режиме:


Пусть разработан код представленный ниже:
  #pragma offload target(mic:0) wait (s1)
  {
  F1(p1, p2);
  }
  F2();

В каком порядке будут исполняться функции F1 и F2?


Какой из представленных ниже скриптов обеспечивает запуск программы в симметричном режиме:

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.
Сколько всего процессов будет создано при запуске программы?


Для каких вычислительных систем предназначена технология OpenMP?

Код на сопроцессоре Intel Xeon Phi исполняется в

Следующий псевдокод

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;

Intel Cilk Plus – это:

Какая директива OpenMP может быть использована для синхронизации потоков?

Для компиляции программы, исполняемой только на сопроцессоре, следует использовать скрипт:

Какой из представленных ниже скриптов обеспечивает запуск программы в режиме offload:

Пусть разработан код представленный ниже:
  #pragma offload target(mic:0)  signal(s1)
  {
  F1(p1, p2);
  }
  F2();

В каком порядке будут исполняться функции F1 и F2?


При разработке программ для сопроцессора Intel Xeon Phi

В программе на MPI необходимо распределить итерации цикла между процессами, считая, что время выполнения итераций примерно одинаковое

Для компиляции программы, исполняемой в режиме offload, следует использовать скрипт:

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

Следующая функция
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


Какой ключ компилятора icc следует использовать для компиляции программы, исполняемой в режиме offload:

Пусть разработан код представленный ниже:
  F1();  
#pragma offload target(mic:0)  signal(s1)
  {
  F2(p1, p2);
  }

В каком порядке будут исполняться функции F1 и F2?


Модели программирования для сопроцессора Intel Xeon Phi это

Сколько потоков для вычислений будет создано библиотекой TBB после выполнения указанного ниже кода?

task_scheduler_init init; 
init.initialize(4);      

При реализации функтора для функции parallel_for:

Пусть разработан код представленный ниже:
  F1();  
#pragma offload target(mic:0) wait(s1)
  {
  F2(p1, p2);
  }

В каком порядке будут исполняться функции F1 и F2?


При разработке программ для сопроцессора Intel Xeon Phi

Процессы параллельной программой в рамках MPI:

#!/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

Данный скрипт обеспечивает запуск программы в режиме:


В Cilk Plus входят:

#!/bin/sh
mpiexec.hydra –perhost 1 ./program_name

Данный скрипт обеспечивает запуск программы в режиме:


Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер. Массивы a, b не пересекаются.
for (int i = 0; i < n - 2; i++)
    a[i] = b[i + 2] * 4 - 5;

Пусть в программе присутствует следующий код:
#define LOOP_SIZE 16
…
int rr[LOOP_SIZE];
…
p = 1;
for(int k = 0; k < LOOP_SIZE; k++)
{
  p *= rr[k];
}

Возможна ли векторизация данного цикла средствами компилятора, для исполнения на Intel Xeon Phi?


Какое из следующих замечаний является верным:

Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер. Массивы a, b не пересекаются.
for (int i = 0; i < n; i++)
    a[i] = b[i] * 2 + 8;

Какие ключи компилятора необходимо указать для корректной компиляции следующей функции
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;
  }
}

Пусть в программе присутствует следующий код:
    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?


Размер векторного регистра для хранения данных с плавающей запятой в наборе команд Intel Xeon Phi составляет:

Как реализована расширенная поддержка математических функций в 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?


Какое из следующих утверждений является верным?

Размер векторного регистра для хранения данных с плавающей запятой в наборе команд AVX составляет:

Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами одинарной точности, с использованием расширения AVX на процессоре Intel Xeon

Какой процент от пиковой производительности можно получить в функции, работающей с вещественными числами одинарной точности, без использования векторных расширений на сопроцессоре Intel Xeon Phi

Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами одинарной точности, с использованием расширения SSE на процессоре Intel Xeon

Следующую функцию
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. Какие ключи компилятора необходимо использовать


Пусть в программе присутствует следующий код:
#define LOOP_SIZE 128
…
int rr[LOOP_SIZE];
for(int k = 0; k < LOOP_SIZE; k++)
{
  rr[k] = number % k;
}

Возможна ли векторизация данного цикла средствами компилятора для исполнения на Intel Xeon Phi?


Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами одинарной точности, на сопроцессоре Intel Xeon Phi

Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами двойной точности, с использованием расширения SSE на процессоре Intel Xeon

Суть парадигмы SIMD заключается в следующем:

Какого потенциального ускорения можно добиться при векторизации функции, работающей с вещественными числами двойной точности, с использованием расширения AVX на процессоре Intel Xeon

Каким образом возможно использование векторных инструкций в программе?

Код «D[:] = sin(S[:]);» в Cilk Plus приведёт к:

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

Технология Array Notation в Intel Cilk Plus используется для

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Директива #pragma offload target(mic) обеспечивает:

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

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

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

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

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

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

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

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

Теоретическая производительность сопроцессора Intel Xeon Phi больше производительности процессоров общего назначения.

Один гигафлопс это?

Какие из указанных состояний строки кэша используются в протоколе MESI:

Пусть в программе присутствует следующий код:
#define LOOP_SIZE 24
…
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?


__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);
    …
}

Какие параметры нужно добавить в соответствующее место в приведенном выше коде (вместо «[Параметры]»), чтобы обеспечить корректное и эффективное выполнение кода:


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

Технология Elemental Functions в Intel Cilk Plus используется для

Для данного цикла определите, зависимы ли его итерации. При наличии зависимости охарактеризуйте ее характер.
for (int i = 0; i < n – 2; i++)
    a[i + 2] = a[i] * 3 + 1;

Размер векторного регистра для хранения данных с плавающей запятой в наборах команд SSE составляет:

Какие векторные расширения поддерживает сопроцессор Intel Xeon Phi?

Comments are closed.


Яндекс.Метрика