База ответов ИНТУИТ

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

<<- Назад к вопросам

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

(Отметьте один правильный вариант ответа.)

Варианты ответа
раскладывает число number на простые сомножители(Верный ответ)
вычисляет факториал числа number
раскладывает число number на сумму простых слагаемых
Похожие вопросы
Пусть в программе присутствует следующий код:
    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?
Следующая функция
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, 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(static, chunk) при правильном выборе chunk
Следующий псевдокод
1.   i  number;2.   for j = 2 to number3.     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;
Пусть в программе присутствует следующий код:
#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 24…int rr[LOOP_SIZE];for(int k = 0; k < LOOP_SIZE; k++){  rr[k] = number % 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?