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

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

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

Ответ:

 (1) Offload, OpenMP 

 (2) Offload, MPI 

 (3) MPI, OpenMP 


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

Ответ:

 (1) требуется использовать специальный язык программирования 

 (2) можно использовать языки C\C++ и Fortran 


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

Ответ:

 (1) требуется использовать специальную библиотеку функций 

 (2) можно использовать MPI, OpenMP, Cilk Plus, TBB 


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

Ответ:

 (1) для систем с общей памятью 

 (2) для систем с распределенной памятью 


Номер 5
Технология программирования OpenMP расширяет язык программирования за счет:

Ответ:

 (1) новых ключевых слов 

 (2) новых библиотечных функций и переменных окружения 

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


Упражнение 2:
Номер 1
Отметьте верные утверждения об OpenMP:

Ответ:

 (1) OpenMP ориентирован в первую очередь на написание программ для векторно-конвейерных компьютеров 

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

 (3) число параллельных потоков OpenMP приложения может определяться переменной окружения 

 (4) весь параллелизм приложения реализуется только с помощью параллельных циклов  


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

Ответ:

 (1) #pragma parallel 

 (2) #pragma omp parallel 

 (3) #pragma omp 

 (4) #pragma omp for 


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

Ответ:

 (1) меньше количества вычислительных элементов 

 (2) большее количества вычислительных элементов 

 (3) равное количеству вычислительных элементов 


Номер 4
Что определяет количество потоков в рамках параллельной секции?

Ответ:

 (1) количество вычислительных элементов 

 (2) значение переменных окружений 

 (3) вызовы библиотечных функций библиотеки OpenMP 


Упражнение 3:
Номер 1
Для распределения итераций цикла между потоками необходимо использовать следующую директиву OpenMP:

Ответ:

 (1) #pragma omp parallel for  

 (2) #pragma omp for, если данная директива находится внутри параллельной области 

 (3) #pragma parallel for 

 (4) #pragma omp sections 


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

Ответ:

 (1) #pragma omp barrier 

 (2) #pragma omp waitall 

 (3) #pragma omp wait 


Номер 3
Можно ли в OpenMP программе управлять количеством потоков выполняющих работу, не меняя кода программы?

Ответ:

 (1) нет, программа сама определяет количество потоков 

 (2) да, если в программе явно не определяется количество потоков 

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


Номер 4
Под параллельной программой в рамках MPI понимается:

Ответ:

 (1) множество одновременно выполняемых процессов 

 (2) множество одновременно выполняемых потоков 

 (3) множество одновременно работающих процессоров 


Номер 5
Как определяется число процессов при запуске MPI-программы?

Ответ:

 (1) оно будет равно числу узлов в кластере 

 (2) оно задается непосредственно в коде программы средствами MPI 

 (3) оно задается явно при запуске MPI-программы 

 (4) оно устанавливается через специальную переменную окружения 


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

Ответ:

 (1) это будет сделано автоматически по общему число процессов 

 (2) вызвать MPI-функцию, которая для каждого процесса определит, какие итерации цикла должен выполнить данный процесс 

 (3) разделить общее число итераций цикла на число процессов. По рангу каждого процесса определить начальное и конечное значение счетчика цикла.  


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

Ответ:

 (1) могут выполняться на разных процессорах, на одном процессоре могут располагаться несколько процессов 

 (2) могут выполняться только на разных процессорах 

 (3) обязательно выполняются на одном процессоре 


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

Ответ:

 (1) операции приема и передачи данных 

 (2) операции передачи данных и коллективные операции 

 (3) только коллективные операции 


Номер 4
Intel Cilk Plus – это:

Ответ:

 (1) библиотека, независимая от компилятора 

 (2) расширение языка С и С++, поддерживаемое компилятором Intel 

 (3) виртуальная машина, векторизующая параллельные программы 

 (4) новая модель процессоров Intel, созданная специально для параллельных программ  


Упражнение 5:
Номер 1
В Cilk Plus входят:

Ответ:

 (1) библиотека TBB, расширение языка с помощью прагм и комментариев, векторизация 

 (2) сопроцессор x87, коммутатор Light Peak, ускоритель графических и физических расчётов 

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

 (4) SDK, спецификация промежуточного слоя, библиотеки функций 


Номер 2
Планировщик Cilk Plus основан на распределении работы путём:

Ответ:

 (1) захвата доступной работы у случайного потока 

 (2) распределения "билетиков" из центральной очереди 

 (3) запроса работы у следующего узла процессора 

 (4) захвата доступной работы в ближайшем пуле 


Номер 3
В коде "cilk_spawn F1(); F2(); cilk_sync;"

Ответ:

 (1) функция F1 будет выполнена текущим потоком, а F2 может быть подхвачена другим потоком 

 (2) функция F2 будет выполнена текущим потоком, а F1 может быть подхвачена другим потоком 

 (3) обе функции всегда будут выполняться параллельно друг другу 

 (4) будет произведена дефрагментация стэка для F1, что позволит векторизовать F2 


Номер 4
Код "cilk_for(int i=0; i<maxi; i++) Func(); " позволяет:

Ответ:

 (1) распараллелить и векторизовать цикл 

 (2) распараллелить цикл 

 (3) векторизовать цикл 

 (4) определить экстремум функции 


Номер 5
Сколько потоков для вычислений будет создано библиотекой TBB после выполнения указанного ниже кода?
		task_scheduler_init init; 
init.initialize(4);      

		

Ответ:

 (1) будет создано 4 потока 

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

 (3) потоки созданы не будут из-за ошибки повторной инициализации 

 (4) будет создан 1 поток 


Упражнение 6:
Номер 1
Для чего предназначена операция расщепления в итерационном пространстве?

Ответ:

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

 (2) для разделения итерационного пространство на два подмножества 

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


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

Ответ:

 (1) статическое и определено разработчиками библиотеки TBB 

 (2) динамическое, размер порции вычислений определяется параметром grainsize 

 (3) определяется используемым итерационным пространством 


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

Ответ:

 (1) запрещается вызывать напрямую operator() для объекта функтора 

 (2) сохранять результат работы функтора необходимо в полях функтора 

 (3) operator() должен принимать в качестве параметра итерационное пространство 


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

Ответ:

 (1) статическое и определено разработчиками библиотеки TBB 

 (2) динамическое, размер порции вычислений определяется параметром grainsize 

 (3) определяется используемым итерационным пространством 


Упражнение 7:
Номер 1
Код на сопроцессоре Intel Xeon Phi исполняется в

Ответ:

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

 (2) асинхронном режиме, т.е. при вызове функции управление передается сопроцессору, выполнение основной программы продолжается 


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

Ответ:

 (1) -mmic 

 (2) -mic 

 (3) дополнительного ключа не требуется 

 (4) -offload 


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

Ответ:

 (1) -mmic 

 (2) -mic 

 (3) дополнительного ключа не требуется 

 (4) -offload 


Номер 4
#!/bin/sh
mpicc –O2 –openmp main.cpp –o ./program_name
mpicc –O2 –openmp –mmic main.cpp –o ./program_name.mic
Данный скрипт используется для компиляции программы, которая должна исполняться в режиме:

Ответ:

 (1) offload 

 (2) исполнения только на сопроцессоре 

 (3) симметричном 


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

Ответ:

 (1) #!/bin/sh mpicc -02 -openmp main.cpp –o program_name 

 (2) #!/bin/sh mpicc -02 -openmp -mmic main.cpp –o program_name.mic 

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


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

Ответ:

 (1) #!/bin/sh mpicc -02 -openmp main.cpp –o program_name  

 (2) #!/bin/sh mpicc -02 -openmp -mmic main.cpp –o program_name.mic  

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


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

Ответ:

 (1) #!/bin/sh mpicc -02 -openmp main.cpp –o program_name  

 (2) #!/bin/sh mpicc -02 -openmp -mmic main.cpp –o program_name.mic  

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


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

Ответ:

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

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

 (3) #!/bin/sh mpiexec.hydra –hosts 2 node0 node1 –n 2 –perhost 1 ./program_name: \ –hosts 4 mic0 mic1 mic2 mic3 –n 4 –perhost 1 ./program_name.mic  

 (4)  


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

Ответ:

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

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

 (3) #!/bin/sh mpiexec.hydra –hosts 2 node0 node1 –n 2 –perhost 1 ./program_name: \ –hosts 4 mic0 mic1 mic2 mic3 –n 4 –perhost 1 ./program_name.mic  


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

Ответ:

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

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

 (3) #!/bin/sh mpiexec.hydra –hosts 2 node0 node1 –n 2 –perhost 1 ./program_name: \ –hosts 4 mic0 mic1 mic2 mic3 –n 4 –perhost 1 ./program_name.mic  


Номер 2
#!/bin/sh
mpiexec.hydra –perhost 1 ./program_name
Данный скрипт обеспечивает запуск программы в режиме:

Ответ:

 (1) offload 

 (2) исполнения только на сопроцессоре 

 (3) симметричном 


Номер 3
#!/bin/sh
mpiexec.hydra –host mic0 –n 1 –perhost 1 ./program_name.mic
Данный скрипт обеспечивает запуск программы в режиме:

Ответ:

 (1) offload 

 (2) исполнения только на сопроцессоре 

 (3) симметричном 


Номер 4
#!/bin/sh
mpiexec.hydra –hosts 2 node0 node1 –n 2 –perhost 1 ./program_name: \
–hosts 4 mic0 mic1 mic2 mic3 –n 4 –perhost 1 ./program_name.mic
Данный скрипт обеспечивает запуск программы в режиме:

Ответ:

 (1) offload 

 (2) исполнения только на сопроцессоре 

 (3) симметричном 


Упражнение 10:
Номер 1
#!/bin/sh
export MICperNODE=1
sbatch –N 4 –-gres=mic:2 native_run.sh ./program_name
Данный скрипт обеспечивает запуск программы в режиме исполнения только на сопроцессоре на кластере с системой управления SLURM.
Сколько процессов на узел будет создано при запуске программы?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 2
#!/bin/sh
export MICperNODE=2
sbatch –N 2 –-gres=mic:4 native_run.sh ./program_name
Данный скрипт обеспечивает запуск программы в режиме исполнения только на сопроцессоре на кластере с системой управления SLURM.
Сколько всего процессов будет создано при запуске программы?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 3
S,N,1,2.0.0.
#!/bin/sh
export PPN=2
export MICperNODE=2
sbatch –N 2 –-gres=mic:2 symmetric_run.sh ./program_name
Данный скрипт обеспечивает запуск программы в симметричном режиме на кластере с системой управления SLURM.
Сколько всего процессов будет создано при запуске программы?

Ответ:

 (1)

 (2)

 (3)

 (4)


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

Ответ:

 (1) #!/bin/sh sbatch –N 2 –-gres=mic:1  

 (2) #!/bin/sh salloc –N 1 --gres=mic:2  

 (3) #!/bin/sh salloc –N 2 --gres=mic:2  

 (4) #!/bin/sh sbatch –N 2 –-gres=mic:2  


Упражнение 11:
Номер 1
Задача факторизации натурального числа N состоит в

Ответ:

 (1) вычислении факториала N! 

 (2) разложении на простые сомножители 

 (3) разложении на сумму простых слагаемых 


Номер 3
Следующий псевдокод 
		1.   i  number;
2.   for j = 2 to number
3.     if (i == 1) break; 
4.     r  i % j;
5.     if (r == 0)
6.       i  i / j;
7.       save_divisor(number, j);
8.       j  j - 1;
		

Ответ:

 (1) раскладывает число number на простые сомножители 

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

 (3) вычисляет факториал числа number 


Номер 2
Следующий кодint idx = number;
    for (int j = 2; j < number; j++)
    {
      if (idx == 1) break; 

      int r;
      r = idx % j;
      if (r == 0)
      {
        idx /= j;
        divisors[number].push_back(j);
        j--;
      }
    }

Ответ:

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

 (2) вычисляет факториал числа number 

 (3) раскладывает число number на простые сомножители 


Номер 3
Следующая функцияvoid factorization() 
{
#pragma omp parallel for
  for (int i = 1; i < NUM_NUMBERS; i++)
  {
    int number = i;
    int idx = number;

    for (int j = 2; j < idx; j++)
    {
      if (number == 1) break; 

      int r;
      r = number % j;
      if (r == 0)
      {
        number /= j;
        divisors[idx].push_back(j);
        j--;
      }
    }    
  }
}
факторизует числа в диапазоне от 1 до NUM_NUMBERS. Добавление к прагме parallel параметра schedule(static, 1) приведет к

Ответ:

 (1) уменьшит время работы 

 (2) не изменит время работы 

 (3) увеличит время работы 


Номер 4
Следующая функция void factorization() 
{
#pragma omp parallel for
  for (int i = 1; i < NUM_NUMBERS; i++)
  {
    int number = i;
    int idx = number;

    for (int j = 2; j < idx; j++)
    {
      if (number == 1) break; 

      int r;
      r = number % j;
      if (r == 0)
      {
        number /= j;
        divisors[idx].push_back(j);
        j--;
      }
    }    
  }
}
факторизует числа в диапазоне от 1 до NUM_NUMBERS. Добавление к прагме parallel параметра schedule(dynamic) уменьшит время

Ответ:

 (1) уменьшит время работы 

 (2) увеличит время работы 

 (3) не изменит время работы 


Номер 5
Следующая функция void factorization() 
{
#pragma omp parallel for
  for (int i = 1; i < NUM_NUMBERS; i++)
  {
    int number = i;
    int idx = number;

    for (int j = 2; j < idx; j++)
    {
      if (number == 1) break; 

      int r;
      r = number % j;
      if (r == 0)
      {
        number /= j;
        divisors[idx].push_back(j);
        j--;
      }
    }    
  }
}
факторизует числа в диапазоне от 1 до NUM_NUMBERS. Добавление к прагме parallel параметра schedule(static, chunk) при правильном выборе chunk

Ответ:

 (1) уменьшит время работы 

 (2) увеличит время работы 

 (3) не изменит время работы 


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

Ответ:

 (1) вначале F1, затем F2 

 (2) вначале F2, затем F1 

 (3) асинхронно F1 и F2 


Номер 2
Пусть разработан код представленный ниже:  #pragma offload target(mic:0) 
  {
  F1(p1, p2);
  }
  F2();
В каком порядке будут исполняться функции F1 и F2?

Ответ:

 (1) вначале F1, затем F2 

 (2) вначале F2, затем F1 

 (3) асинхронно F1 и F2 


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

Ответ:

 (1) вначале F1, затем F2 

 (2) вначале F2, затем F1 

 (3) асинхронно F1 и F2 


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

Ответ:

 (1) вначале F1, затем F2 

 (2) вначале F2, затем F1 

 (3) асинхронно F1 и F2 


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

Ответ:

 (1) вначале F1, затем F2 

 (2) вначале F2, затем F1 

 (3) асинхронно F1 и F2 


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

int main()
{

  #pragma offload target(mic:0)
  {
    setR(); 
  }
  printf("%d", r);
}
...
setR()
{
  r = 1;
}
Что будет выведено на экран?

Ответ:

 (1)

 (2)

 (3) результат не определен 




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