Сертификат "Программирование на Intel Cilk Plus"
  • Сертификат "Программирование на Intel Cilk Plus"
  • Сертификат "Программирование на Intel Cilk Plus"
Сертификат "Программирование на Intel Cilk Plus"
  • Сертификат "Программирование на Intel Cilk Plus"
  • Сертификат "Программирование на Intel Cilk Plus"

Программирование на Intel Cilk Plus

700,00 руб.
В течение часа!
Экзамен "Программирование на Intel Cilk Plus" для пользователей и системных администраторов.
Количество
Есть в наличии!

Форма сдачи теста: Экстерн
Количество вопросов: 30
Проходной балл: 90% и выше
Срок действия сертификата: неограничен

Сертификат появляется в профиле ресурса INTUIT, и Вы можете заказать его бумажную версию на сайте INTUIT.
11754 шт.
Внимание !
Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier!

Какие из нижеперечисленных являются ключевыми словами Intel® Cilk™ Plus?

cilk_init
cilk_open
cilk_start
cilk_send
cilk_spawn


Какие из нижеперечисленных являются ключевыми словами Intel® Cilk™ Plus?

cilk_open
cilk_open
grainsize
cilk_send
cilk_init


Какие из нижеперечисленных являются ключевыми словами Intel® Cilk™ Plus?

cilk_init
cilk_send
cilk_open
cilk_start
cilk_for


Является ли cilk_init допустимым ключевым словом Intel® Cilk™ Plus?

нет
да


Является ли cilk_for допустимым ключевым словом Intel® Cilk™ Plus?

да
нет


Является ли cilk_start допустимым ключевым словом Intel® Cilk™ Plus?

нет
да


Является ли cilk_send допустимым ключевым словом Intel® Cilk™ Plus?

нет
да


Является ли cilk_spawn допустимым ключевым словом Intel® Cilk™ Plus?

да
нет


Является ли cilk_sync допустимым ключевым словом Intel® Cilk™ Plus?

да
нет


Поддерживает ли Intel® Cilk™ Plus компилятор GCC?

нет
да, начиная с версии 4.7
да, любая версия


Поддерживает ли Intel® Cilk™ Plus компилятор ifort?

нет
да


Что такое "точка синхронизации"?

в этой точке выполняется сохранение промежуточных результатов вычислений
в этой точке выполняется проверка корректности расчётов
в этой точке выполнение задач синхронизуется


Поддерживает ли Intel® Cilk™ Plus компилятор icc?

да (все версии)
нет
да (начиная с версии 12.0)


Прагма SIMD используется в Intel® Cilk™ Plus для:

оптимизации кода уровня O2
распараллеливания кода для графических процессоров
распараллеливания кода с помощью OpenMP
векторизации кода


Что такое "точка порождения"?

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


Являются ли переходы из тела цикла препятствием к распараллеливанию цикла?

да
нет


"Гонок за данными" можно избежать, используя:

векторизацию кода
гиперобъекты Cilk
синхронизацию доступа


Какое ключевое слово в Intel® Cilk™ Plus используется для распараллеливания цикла

cilk_spawn
cilk_for
cilk_sync


Являются ли цикловые зависимости препятствием к распараллеливанию цикла?

да
нет


Какой из вариантов распараллеливания допускается в Intel® Cilk™ Plus?

замена заголовка цикла for на cilk_for
использование прагмы распараллеливания цикла
в Intel® Cilk™ Plus циклы не распараллеливаются


Для того, чтобы обозначить точку порождения в Cilk-программе, необходимо:

добавить в соответствующем месте программы cilk_sync
добавить в соответствующем месте программы cilk_spawn имя_функции()


Назначение переменной окружения CILK_NWORKERS:

задание количества потоков
задание количества ядер процессора
задание количества процессов


Являются ли переходы в тело цикла препятствием к распараллеливанию цикла?

нет
да


В каком случае при диспетчеризации задач Cilk происходит захват работы?

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


В программе имеются операторы cilk_spawn g() и cilk_sync. Как будет выполняться фрагмент программы между этими операторами?

как "продолжение"
как потомок


Может ли произойти возврат из функции, вызванной в одном потоке, в другом потоке?

нет
да, в любом случае
да, если функция содержит cilk_spawn


Допускаются ли вложенные (рекурсивные) ветвления в Intel® Cilk™ Plus?

да
нет


Intel® Cilk™ Plus поддерживается компиляторами Portland Group.

да
нет


Как выполняется Cilk-программа, если нет свободных рабочих потоков?

как параллельная программа
как обычная последовательная программа


Intel® Cilk™ Plus входит в состав среды разработки Delphi.

нет
да


Как в Linux (bash) задать количество исполнителей?

export CILK_NWORKERS= количество исполнителей
NWORKERS= количество исполнителей
export CILK= количество исполнителей


Что выполняет балансировку Cilk-программы?

брокер ресурсов Cilk
runtime система
сама программа


Intel® Cilk™ Plus является библиотекой, имеющей интерфейсы к языкам программирования Fortran. C/C++, Java?

да
нет


В программе имеется оператор cilk_spawn g(). Как будет выполняться функция g()?

как продолжение
функция g() не выполняется
как порождённая функция (потомок)


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

добавить в соответствующем месте программы cilk_sync
добавить в соответствующем месте программы cilk_spawn имя_функции()


Выполняется ли в конце параллельного цикла барьерная синхронизация?

нет
да


Для чего предназначена прагма grainsize?

задаёт объём памяти
задаёт гранулярность распараллеливания
задаёт размер кэш-памяти ядра


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

set __NWORKERS= количество исполнителей
set CILK_N= количество исполнителей
set CILK_NWORKERS= количество исполнителей


Intel® Cilk™ Plus поддерживает только параллелизм типа fork-join.

да
нет


Intel® Cilk™ Plus поддерживается компиляторами Intel версий 10.0 и 11.0.

нет
да


Что произойдёт при обработке программы с прагмой #pragma simd компилятором, не поддерживающим Intel® Cilk™ Plus?

прагма игнорируется
происходит сбой программы


Intel® Cilk™ Plus поддерживает только векторный параллелизм.

нет
да


В Cilk-программе имеется следующий код: cilk_sync; … cilk_spawn g();. В чём заключается ошибка?

используются несуществующие ключевые слова
неправильный порядок cilk_spawn и cilk_syn
используются несуществующее ключевое слово


Допускается ли использование 32 битовых переменных с плавающей точкой в элементных функциях?

да
нет


В чём различие между Cilk™ Plus и Cilk™?

в использовании в Cilk™ Plus расширенной индексной нотации
в наличии в Cilk™ Plus гиперобъектов
в использовании прагмы simd
различия нет


Должны ли быть определены аргументы порождённой функции в родительском коде до момента порождения потомка?

нет
да


Имеется следующий фрагмент кода:

cilk_init();
cilk_spawn f()

cilk_sync


В чём состоит ошибка программиста?

в неправильной последовательности ключевых слов
в данном контексте нельзя использовать cilk_spawn
в использовании несуществующей конструкции cilk_init


Чему по умолчанию равно количество исполнителей в Cilk-программе?

не определено
числу ядер процессора
1


Допустимо ли следующее выражение в Cilk-программе: cilk_spawn [&]{ g(f()); }();?

да
нет


В чём различие конструкций cilk_spawn [&]{ g(f()); }(); и cilk_spawn g(f());?

в первом случае порождённой является только функция g(), а во втором случае обе функции выполняются как порождённые
различия нет
в первом случае обе функции выполняются как порождённые, а во втором случае порождённой является только функция g()


Допустима ли следующая форма распараллеливания цикла: cilk_for (unsigned int i, j = 42; j < 1; i++, j++)?

нет
да


Допустимо ли следующее выражение в Cilk-программе: g(cilk_spawn f());?

да
нет


Допустимо ли следующее выражение в Cilk-программе: var = cilk_spawn (object.*pointer)(args);?

да
нет


Допустимо ли следующее выражение в Cilk-программе: cilk_spawn g(f());?

да
нет


Распространяется ли действие cilk_sync на все порождённые функции?

нет, только на потомки той функции, где находится cilk_sync
да


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

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


Сколько изображений переменной, описанной как гиперобъект, будет использоваться в программе, исполняющейся в 5 потоках?

5
15
0
1


Допустима ли следующая форма распараллеливания цикла: cilk_for (unsigned int i = 1; i < x; ++i) x = f();?

да
нет


Допустима ли следующая форма распараллеливания цикла: cilk_for (unsigned int i = 1; i < 16; ++i) i = f();?

нет
да


Допустима ли следующая форма распараллеливания цикла: int i; cilk_for (i = 0; i < 100; i++);?

только в C (не в C++)
нет
да


Допускается ли использование оператора goto в цикле cilk_for?

да
только если переход происходит внутри цикла
нет


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

уменьшить
увеличить


Допускается ли использование оператора return в цикле cilk_for?

нет
да


Допускается ли использование оператора break в цикле cilk_for?

да
нет


Есть два фрагмента кода: 1) cilk_spawn f(); cilk_spawn g(); cilk_sync; 2) cilk_spawn f(); g(); cilk_sync; Какой из них является предпочтительным с точки зрения стиля и эффективности?

1)
2)


Какая функция в Cilk-программе называется "порождающей"?

Функция, в которой находится прагма simd
Функция, в которой находится оператор cilk_spawn


Как можно задать "зернистость" распараллеливания цикла, равную единице?

с помощью ключа компилятора
с помощью переменной окружения
с помощью прагмы #pragma cilk grainsize = 1


Допустима ли следующая форма распараллеливания цикла: cilk_for (unsigned int i = 0; i != i; i += 0);?

да
нет


Что определяет величина grainsize в параллельных циклах cilk_for?

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


Как влияет на величину накладных расходов маленькое значение grainsize?

уменьшает
увеличивает


Как влияет на величину накладных расходов большое значение grainsize?

уменьшает
увеличивает


Как задаётся "зернистость" распараллеливания цикла по умолчанию?

согласно формуле grainsize = min(512, N / (8*p))
не определена



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

"зернистость" будет нулевой
будет использоваться значение по умолчанию
"зернистость" будет равна 1


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

результат не определён
будет использоваться значение по умолчанию
1


Что будет происходить, если "зернистость" распараллеливания цикла в Cilk-программе задана следующим образом: #pragma cilk grainsize = n/(4*__cilkrts_get_nworkers())?

такая конструкция недопустима
"Зернистость" распараллеливания цикла определяется в соответствии с числом исполнителей


В каком случае уменьшение "зернистости" распараллеливания цикла приводит к улучшению производительности Cilk-программы?

в любом случае
если объём вычислительной работы незначительно меняется от итерации к итерации
если объём вычислительной работы значительно меняется от итерации к итерации
Не влияет в любом случае


Что такое редуктор?

оператор, выполняющий редукцию массива
локальная переменная в Cilk-программе
операция редукции
"Безопасная" реализация глобальной переменной в Cilk-программах


Может ли влиять на наличие "гонок за данными" размер машинного слова?

нет
да


Что такое cilk::reducer?

гиперобъект
массив
мьютекс


Что такое reducer_max?

мьютекс
гиперобъект
массив


Что такое reducer_max_index?

мьютекс
массив
гиперобъект


В чём заключается отрицательный эффект "гонок за данными"?

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


Что такое reducer_basic_string?

мьютекс
гиперобъект
массив


Имеется следующий код:

cilk::reducer_opadd<int> sum(3);
void f()
{cilk_spawn g(); sum += 2; cilk_sync;}
void g()
{sum++;}       


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

4
8
6
2


Может ли влиять на наличие "гонок за данными" уровень оптимизации?

да
нет


"Параллельные" глобальные переменные, позволяющие избежать гонок за данными в Intel® Cilk™ Plus это:

кондукторы
параллели
таких переменных в Intel® Cilk™ Plus нет
редукторы


Для чего предназначена утилита cilkscreen?

для вывода графических изображений в Cilk-программах
такой утилиты нет
для выявления гонок за данными


Что такое reducer_list_append?

мьютекс
гиперобъект
массив


Что такое reducer_min_index?

массив
гиперобъект
мьютекс


В какой момент объединяются изображения переменных?

при объединении потоков
в точке, заданной специальным оператором
каждые 5 секунд


Какой редуктор соответствует операции логического исключающего ИЛИ?

reducer_opand
reducer_opxor
reducer_xor
такого редуктора нет
reducer_or


Что такое "изображение" переменной?

имя переменной
экземпляр переменной
значение переменной


Что такое reducer_opadd?

гиперобъект
массив
мьютекс


Необходимо ли при использовании редукторов применять мьютексы?

да
нет


Что такое reducer_list_prepend?

гиперобъект
массив
мьютекс


Является ли cilk::private гиперобъектом?

да
нет


Можно ли избавиться от гонки за данными изменением алгоритма вычислений?

нет
да


Из каких логических частей состоит пользовательский редуктор?

класс View; класс Monoid
класс View; класс Monoid; гиперобъект, создающий изображения переменной
класс View; класс Monoid; гиперобъект, создающий изображения переменной; реализация действий с данными


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

не влияет
улучшает
ухудшает


Что такое reducer_min?

гиперобъект
мьютекс
массив


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

да
нет


Может ли переменная быть описана как редуктор относительно операции объединения списков?
нет
да


Какой заголовочный файл необходимо использовать в программе на C++, если в ней используется оператор cilk::reducer_opadd<double> result(0);?

cilk_opadd.h
reducer.h
cilk.h
reducer_opadd.h


Является ли cilk::reducer гиперобъектом?

да
нет


Что такое reducer_ostream?

гиперобъект
массив
мьютекс


Какое действие выполняет get_value() в редукторе?

возвращает значение редуктора
инициализирует редуктор


Какой редуктор соответствует операции логического И?

reducer_opand
reducer_or
reducer_xor
такого редуктора нет
reducer_and


Какой редуктор используется при работе с параллельными потоками?

stream
reducer_ostream
reducer_stream


Сохраняют ли гиперобъекты последовательную семантику программы?

да
нет

Имеется следующий код:

cilk::reducer_opadd<int> sum(3);
void f()
{cilk_spawn g(); sum += 2; cilk_sync;}
void g()
{sum++;}    
 

Каким будет результат вычисления suS, если в процессе выполнения произошёл захват работы?

8
4
2
6


В Cilk-программе необходимо выполнить конкатенацию списков. Какой гиперобъект следует для этого использовать?

reducer_add
reducer_list_append
reducer_list_add


Может ли гонка за данными не влиять на результат работы программы?

да
нет


Имеется код

cilk::reducer_opadd<float> sum = 0;
...
cilk_for( size_t i=1; i<n; ++i )
    sum += f(i);
... = sum.get_value();  
 

Что произойдёт с переменной sum после порождения новых потоков?

переменная sum доступна только из мастер-потока
каждый поток получит доступ к собственному "изображению" переменной sum
каждый поток получит доступ к общей переменной sum


Переменная называется глобальной, если

область видимости переменной совпадает со всей программой
переменная является массивом или структурой
область видимости переменной не совпадает со всей программой


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

да
нет


Допустимо ли в программе на C++ использование оператора cilk::reducer_min_index<size_t, T> r;?

да
нет


Имеется код

cilk::reducer_opadd<float> sum;
void f( int m ) {
    sum += m;
}
float g() {
    cilk_spawn f(1);
    f(2);
    cilk_sync;
    return xxx;
}
 

Что следует подставить вместо xxx?

sum.get_value()
0
ничего



Какую функцию можно использовать для вычисления суммы всех элементов массива?

__sec_reduce_add(a[:])
__sec_reduce(a[:])
__sec_add(a[:])


Имеется код

cilk::reducer_opadd<double> result(0);
        cilk_for(int i=0; i<data.GetSize(); i++)
            result += operation(data[i]);
        return xxx;

Что следует подставить вместо xxx?

result.get_value()
0
result_of_op

Внимание !
Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier!

Гонки за данными возникают при:

одновременном доступе из разных потоков к одной переменной
одновременном доступе из разных потоков к разным переменным
последовательном доступе из разных потоков к одной переменной


Какой заголовочный файл необходимо использовать в программе на C++, если в ней используется оператор cilk::reducer_min_index<size_t, T> r;?

reducer.h
reducer_min.h
cilk_reducer_min.h


В программе для многоядерной архитектуры имеется потенциальная опасность гонок за данными. Какие средства Intel® Cilk™ Plus Вы будете использовать для того, чтобы избежать гонок за данными?

векторизацию с помощью прагмы simd
расширенную векторную нотацию
редукторы


Относительно какого типа операций задаются редукторы?

коммутативных
ассоциативных


Редукторы можно использовать только в циклах.

да
нет


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

нет
да


Допускается ли в Intel® Cilk™ Plus определение пользовательских гиперобъектов?

да
нет


При использовании редукторов каждый поток имеет доступ к единственному общему экземпляру переменной.

нет
да


Как ведёт себя редуктор, если не происходит захвата работы?

Поведение редуктора в этом случае не определено
Как обычная переменная


Какой редуктор соответствует операции логического ИЛИ?

reducer_xor
reducer_opor
reducer_or
такого редуктора нет


Какой редуктор соответствует операции конкатенации строк?

reducer_basic
такого редуктора нет
reducer_string
reducer_basic_string


Почему использование расширенной индексной нотации в Intel® Cilk™ Plus при работе с массивами позволяет увеличить производительность программы?

выигрыша в эффективности нет, нотация используется для удобства
операции в расширенной индексной нотации заменяются компилятором вызовами функций
операции в расширенной индексной нотации эффективно векторизуются компилятором
OpenMP
операции в расширенной индексной нотации заменяются компилятором вызовами функций MPI


Второй элемент в расширенной векторной нотации <1>:<2>[:<3>] это:

максимальное значение индекса
количество элементов в сечении массива
шаг изменения индекса


Что обозначает символ :, используемый самостоятельно (без указания длины и шага) в расширенной индексной нотации?

динамический массив
все элементы массива
это недопустимая конструкция


Что означает запись b[1:3:4]?

элементы b[1], b[4], b[8], b[11] массива
первый элемент квадратной 3x3 матрицы b
это недопустимая конструкция
элементы b[1], b[5], b[9] массива


Что означает запись b[13:57]?

элементы массива b с 13 по 57
это недопустимая конструкция
элементы массива b[13] и b[57]


Что означает запись b[1:3][0:2]?

элементы b[1][0], b[1][1], b[2][1], b[2][1], b[3][0], b[3][1] массива b
элементы b[1][0], b[1][1], b[2][0], b[2][1], b[3][0], b[3][0] массива b
элементы b[1][0], b[1][1], b[2][0], b[2][1], b[3][0], b[3][1] массива b
элементы b[1][0], b[2][11], b[2][0], b[2][1], b[3][0], b[3][1] массива b
элементы b[0][0], b[1][1], b[2][0], b[2][1], b[3][0], b[3][1] массива b


Правильным ли является оператор присваивания c[1:5] = d[5:5]?

нет
да


Первый элемент в расширенной векторной нотации <1>:<2>[:<3>] это:

начальное значение индекса
максимальное значение индекса
шаг изменения индекса
количество элементов в сечении массива


Что означает запись b[:]?

все элементы массива b
это недопустимая конструкция
первый элемент массива b


Третий элемент в расширенной векторной нотации <1>:<2>[:<3>] это:

начальное значение индекса
шаг изменения индекса
максимальное значение индекса
количество элементов в сечении массива


Правильным ли является оператор присваивания c[1:5] = d[1:5]?

нет
да


Что означает запись b[:][5]?

это недопустимая конструкция
5 столбец матрицы b
5-й элемент одномерного массива b
5 строку матрицы b


Правильным ли является оператор присваивания c[:] = d[:][:]?

нет
да


Правильным ли является оператор присваивания c[1:5] = d[2:15]?

да
нет


Правильным ли является оператор присваивания c[:] = d[:]?

Да
Да, если оба массива имеют одинаковое число элементов
Нет


Является ли правильным следующее выражение a[0:4][1:2] + b[1:2]?

нет
да


Какое действие выполняется в следующем выражении a[:]*b[:]?

умножение первых элементов a и b
это недопустимая конструкция
поэлементное умножение массивов a и b


Каким будет результат вычисления следующего выражения a[:][:] + b[0][1]?

это недопустимая конструкция
каждый элемент массива a суммируется с b[0][1]
поэлементная сумма массивов a и b


Является ли правильным следующий оператор: a[1:s] = a[0:s] + 1;?

нет
да


Какое действие выполняется в следующем выражении a[3:2][3:2] + b[5:2][5:2]?

это недопустимая конструкция
сложение двух матриц 2x2


Является ли правильным следующее выражение a[:][:] + b[0][1]?

нет
да


Является ли правильным следующий оператор: c[0:s] = a[b[:]];?

да
нет


Какое действие выполняет функция __sec_shift?

циклический сдвиг массива
линейный сдвиг массива
такой функции нет


Что означает запись a[17:3:2]?

такая запись недопустима
элементы массива a[17], a[20]
элементы массива a[17], a[19], a[21]


Является ли правильным следующий оператор: a[:] = c;?

нет
да


Корректен ли оператор c[2:10:2] = a[1:10] - b[14:11:10]?

нет
да


Могут ли перечисленные операции применяться к сечениям массивов: *=, /=?

да
нет
только /=
только *=


Является ли правильным следующий оператор: a[b[0:s]] = c[:];?

да
нет


Какое действие выполняет функция __sec_rotate?

такой функции нетт
циклический сдвиг массива
линейный сдвиг массива


Принадлежит ли элемент a[15] сечению массива a[11:4:3]?

да
нет


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

AVX
SIMD
MIMD
SSE


Какие операции машинного уровня генерирует компилятор для выражений вида a[b[0:s]] = c[:] и c[0:s] = a[b[:]]?

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


Какая структура данных чаще всего встречается в вычислительных приложениях?

скалярная переменная
структура
массив


Принадлежит ли элемент b[35] сечению массива b[9:16]?

нет
да


Могут ли перечисленные операции применяться к сечениям массивов: +, -, *, /?

да
только + и -
нет


Могут ли перечисленные операции применяться к сечениям массивов: ++,--, +=, -=?

только += и -=
да
нет
только ++


В Cilk-программе необходимо использовать циклический сдвиг элементов массива. Какую функцию можно использовать для выполнения такого сдвига?

такой функции нет
__sec_rotate(a[:], shift_val)
__sec_shift(a[:], shift_val)


Корректен ли оператор c[2:10:2] = a[1:10] - b[14:10:11]?

нет
да


Совпадает ли синтаксис расширенной индексной нотации Intel® Cilk™ Plus и индексной нотации Fortran 90?

нет
да


Могут ли перечисленные операции применяться к сечениям массивов: |,&,,&&?

нет
да
только


Как выполняются операции с разными элементами в выражении a[:] * b[:]?

параллельно
последовательно


Могут ли перечисленные операции применяться к сечениям массивов: %, <,==,!=,>?

да
нет
только = = и !=


Правильно ли запрограммировано умножение двух матриц в выражении a[:][:]*b[:][:]?

да
нет


Можно ли использовать сечение массива в качестве аргумента функции?

да
нет


Какое действие выполняет следующий оператор: vx[i:m][j:n] += a*(U[i:m][j+1:n]-U[i:m][j:n]);?

модификацию подматрицы размером i x j, начиная с элемента (S, n)
модификацию подматрицы размером m x n, начиная с элемента (i, j)


Имеется следующий фрагмент программы:

if(a[0:n] < b[0:n])
    c[0:n] = 0;
else
    c[0:n] = 1;

присваивание нулевых значений элементам массива c с индексами, для которых a[i]<b[i] и единицы для всех прочих
такая конструкция недопустима
присваивание единичных значений элементам массива c с индексами, для которых a[i]<b[i] и нулевых для всех прочих


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

такое использование допустимо в любом случае
Фактический и формальный аргументы должны быть согласованы


Правильно ли задано сечение массива: [12:10]?

нет
да


Правильно ли запрограммировано вычисление скалярного произведения двух векторов в выражении a[:]*b[:]?

да
нет
да, если они содержат одинаковое количество элементов


Правильно ли запрограммировано вычисление скалярного произведения двух векторов в выражении a[12:12]*b[1:12]?

нет
да


Правильно ли запрограммировано вычисление скалярного произведения двух векторов в выражении a[12:12]*b[12:15]?

нет
да


Элементные функции - это функции, которые:

скалярные математические функции
реализации элементарных математических функций
обеспечивают векторизацию вычисления математических функций


Директива SIMD - это:

подсказка компилятору выполнить векторизацию тех фрагментов кода, которые необходимо векторизовать
подсказка компилятору выполнить OpenMP-распараллеливание тех фрагментов кода, которые необходимо векторизовать
такой директивы в Intel® Cilk™ Plus нет


Каким будет результат вычисления следующего выражения a[:] = pow(b[:], c);?

массив c**b[:]
степень с суммы элементов массива b
массив b[:]**c
это недопустимая конструкция


Допускается ли использование операторов выбора в элементных функциях?

нет
да


Допускается ли использование многопоточности Cilk в элементных функциях?

да
нет


Что можно использовать в левой части оператора присваивания x = sin(b[:]);?

сечение массива, конформного b
простую переменную
любой массив


Допускается ли использование выражений с индексной нотацией в элементных функциях?

да
нет


Допускается ли использование 32 битовых переменных типа signed int в элементных функциях?

да
нет


Что является результатом операции редукции?

массив
сечение массива
скалярное значение


Какое действие выполняет функция __sec_reduce(f, a[:])?

суммирование элементов массива a
перемножение элементов массива a
редукция массива a с помощью функции f
такой функции нет


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

параллельный код с использованием MPI
параллельный OpenMP-код
компилятор генерирует обращения к векторизованным функциям


Должен ли программист явным образом задавать способ диспетчеризации параллельной Cilk-программы?

да
нет


Может ли элементная функция возвращать сечение массива?

да
нет


Для чего используется оператор linear в прагме #pragma simd linear(x,y) reduction(+:sum)?

для решения линейных уравнений
для достижения линейной масштабируемости программы
для описания индуктивных операций


Какие средства Intel® Cilk™ Вы будете использовать для того, чтобы использовать возможности векторной архитектуры?

прагму SIMD
редукторы
специальные ключи компиляции


Допускается ли использование прагм OpenMP в элементных функциях?

да
нет


Каким будет результат вычисления следующего выражения a[:] = pow(c, b[:]);?

это недопустимая конструкция
массив c**b[:]
степень с суммы элементов массива b
массив b[:]**c


Допускается ли использование многопоточности OpenMP в элементных функциях?

да
нет


Что такое "элементная функция"?

таких функций в Intel® Cilk™ Plus нет
функция, которая формирует результат вычисления скалярной функции для каждого элемента массива-аргумента


Допускается ли использование 64 битовых переменных с плавающей точкой в элементных

да
нет


Допускается ли использование циклов for в элементных функциях?

нет
да


Допускается ли использование указателей в элементных функциях?

нет
да


ЯДопускается ли использование указателей на функции в элементных функциях?

нет
да


Какие операции являются операциями редукции?

sin
pow
mul
cos
add


Какие операции являются операциями редукции?

cos
all_zero
pow
mul
min_ind
sin


В каком режиме выполняется программа на Cilk, если нет свободных рабочих потоков?

в последовательном
в параллельном


Выберите 3 способа векторизации кода в Cilk-программах.

замена арифметических операций функциями SSE
расширенная векторная нотация
использование элементных функций
прагма SIMD


Можно ли использовать прагму #pragma simd в цикле с условным оператором (if)?

нет
да


Какое действие выполняет функция __sec_reduce_add(a[:])?

такой функции нет
перемножение элементов массива a
суммирование элементов массива a


Имеются ли в Intel® Cilk™ Plus средства обмена сообщениями между процессами?

нет
да


Для чего предназначена функция __cilkrts_get_worker_number()?

для определения количества исполнителей
для определения идентификатора исполнителя


Для чего используется оператор reduction в прагме #pragma simd linear(x,y) reduction(+:sum)?

такого оператора нет
для описания операции редукции
для описания переменной редукции


Для чего предназначена функция __cilkrts_get_nworkers()?

для определения идентификатора исполнителя
для определения количества исполнителей


Допускается ли использование ассемблерных вставок в элементных функциях?

да
нет


Что является аргументом операции редукции?

сечение массива
скалярное значение
функция
массив


В Cilk-программе для одномерного массива значений необходимо сформировать одномерный массив синусов. Как это сделать?

использовать соответствующую элементную функцию
использовать цикл и "стандартную" функцию sin


Может ли пользователь явно управлять балансировкой загрузки в Cilk-программе?

да
нет


Имеются ли в Intel® Cilk™ Plus собственные таймеры?

нет
да


Для чего предназначена функция __cilkrts_set_param()?

для задания параметров гиперобъекта
для задания параметров исполнения заданного потока
для задания параметров исполнения Cilk-программы


В каком случае в Cilk-программе используется заголовочный файл cilk_api.h?

всегда
такого заголовочного файла нет
в случае использования в программе функций прикладного программного интерфейса Cilk


Идентификаторы исполнителей непрерывно заполняют определённый диапазон значений. Верно ли это утверждение?

да
нет


Каким будет действие функции __cilkrts_get_nworkers, вызов которой размещён после оператора cilk_spawn?

В этом случае вызов функции __cilkrts_get_nworkers работает так же, как и при вызове до оператора cilk_spawn
В этом случае вызов функции __cilkrts_get_nworkers не приводит ни к каким действиям


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

api.h
cilk.h
никакой
cilk_api.h


Какое значение возвращает вызов __cilkrts_get_nworkers при выполнении Cilk-программы в последовательном режиме?

1
100
0
4


Можно ли изменить число исполнителей после вызова функции __cilkrts_get_nworkers?

да
нет


Для чего предназначена функция __cilkrts_get_total_workers()?

для определения суммарного числа активных слотов ID
для определения суммарного числа слотов ID, в том числе и тех, которые являются неактивными


Какие средства Intel® Cilk™ Plus Вы будете использовать для того, чтобы использовать возможности векторной архитектуры?

расширенную векторную нотацию для массивов
редукторы
специальные ключи компиляции


Имеется следующий код:

b[0] = 0; b[1] = 3.14159; с[3:1] = sin(b[:]);

Каким будет результат вычисления c?
c[3] = 0; c[4] = 1;
c[3] = 0; c[4] = 0;
c[3] = 1; c[4] = 0;

Вы можете обратится к нам напрямую, через:

skype По Skype: molodoyberkut
telegram По Telegram: @MolodoyBerkut
icq По ICQ: 657089516

Или через форму обратной связи на нашем сайте
Пока сочиняется...
4.png