Cilk - ответы на тесты Интуит

Правильные ответы выделены зелёным цветом.
Все ответы: Проверка знаний расширения языка C++ от компании Intel.
Смотрите также:
Что такое Intel® Cilk™ Plus?
(1) расширение C/C++ для разработки параллельных приложений
(2) расширение C/C++ для разработки приложений для графических процессоров
(3) программный инструмент динамического анализа приложений
(4) программный инструмент анализа безопасности приложений
(5) программный инструмент отладки параллельных MPI-приложений
К IPC относятся:
(1) именованные каналы
(2) обмен с помощью сообщений
(3) семафоры
(4) сокеты
(5) обмен через общую память
(6) OpenMP
(7) MPI
Из каких компонентов состоит OpenMP?
(1) директивы компилятору
(2) подпрограммы
(3) переменные окружения
(4) утилит мониторинга OpenMP-программ
Какое свойство Cilk-программы позволяет оптимизировать диспетчеризация методом захвата работы?
(1) динамическую балансировку
(2) объём занимаемой памяти
(3) кэш-эффективности
При разработке многопоточных приложений возникают следующие проблемы:
(1) гонки за данными
(2) блокировки
(3) несбалансированность загрузки
(4) только "обычные" проблемы последовательного программирования
С какой средой разработки совместим Intel® Cilk™ Plus в операционной системе Microsoft Windows?
(1) Microsoft Visual Studio
(2) Delphi
Intel® Cilk™ Plus можно применять совместно с MPI. Правильно ли это утверждение?
(1) да
(2) нет
Каким должен быть размер (в смысле вычислительной сложности) порождённых задач для достижения наибольшей эффективности Cilk-программ?
(1) достаточно большим
(2) достаточно маленьким
Является ли cilk_sync допустимым ключевым словом Intel® Cilk™ Plus?
(1) да
(2) нет
Выполняется ли в конце параллельного цикла барьерная синхронизация?
(1) да
(2) нет
В программе имеется оператор cilk_spawn g(). Как будет выполняться функция g()?
(1) как порождённая функция (потомок)
(2) как продолжение
(3) функция g() не выполняется
Intel® Cilk™ Plus поддерживается компиляторами Portland Group.
(1) да
(2) нет
Имеется следующий фрагмент кода: cilk_init(); cilk_spawn f() … cilk_sync

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

(1) в использовании несуществующей конструкции cilk_init
(2) в неправильной последовательности ключевых слов
(3) в данном контексте нельзя использовать cilk_spawn
Допустима ли следующая форма распараллеливания цикла: cilk_for (unsigned int i = 1; i < 16; ++i) i = f();?
(1) да
(2) нет
Как можно задать "зернистость" распараллеливания цикла, равную единице?
(1) с помощью прагмы #pragma cilk grainsize = 1
(2) с помощью ключа компилятора
(3) с помощью переменной окружения
"Гонок за данными" можно избежать, используя:
(1) синхронизацию доступа
(2) гиперобъекты Cilk
(3) векторизацию кода
Что такое reducer_max?
(1) гиперобъект
(2) мьютекс
(3) массив
При использовании редукторов каждый поток имеет доступ к единственному общему экземпляру переменной.
(1) да
(2) нет
Сколько изображений переменной, описанной как гиперобъект, будет использоваться в программе, исполняющейся в 5 потоках?
(1) 5
(2) 0
(3) 1
(4) 15
Можно ли избавиться от гонки за данными изменением алгоритма вычислений?
(1) да
(2) нет
Какой редуктор соответствует операции конкатенации строк?
(1) reducer_basic_string
(2) reducer_string
(3) reducer_basic
(4) такого редуктора нет
Что означает запись b[1:3:4]?
(1) элементы b[1], b[5], b[9] массива
(2) элементы b[1], b[4], b[8], b[11] массива
(3) первый элемент квадратной 3x3 матрицы b
(4) это недопустимая конструкция
Является ли правильным следующее выражение a[:][:] + b[0][1]?
(1) да
(2) нет
Что означает запись a[17:3:2]?
(1) элементы массива a[17], a[19], a[21]
(2) элементы массива a[17], a[20]
(3) такая запись недопустима
Могут ли перечисленные операции применяться к сечениям массивов: *=, /=?
(1) да
(2) нет
(3) только *=
(4) только /=
Правильно ли запрограммировано вычисление скалярного произведения двух векторов в выражении a[12:12]*b[12:15]?
(1) да
(2) нет
Допускается ли использование ассемблерных вставок в элементных функциях?
(1) нет
(2) да
ЯДопускается ли использование указателей на функции в элементных функциях?
(1) нет
(2) да
Имеется следующий код: b[0] = 0; b[1] = 3.14159; с[3:1] = sin(b[:]);

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

(1) c[3] = 0; c[4] = 0;
(2) c[3] = 0; c[4] = 1;
(3) c[3] = 1; c[4] = 0;
В Cilk-программе для одномерного массива значений необходимо сформировать одномерный массив синусов. Как это сделать?
(1) использовать соответствующую элементную функцию
(2) использовать цикл и "стандартную" функцию sin
Поддерживает ли Intel® Cilk™ Plus языки C/C++?
(1) да
(2) нет
Что такое POSIX Threads?
(1) стандарт POSIX реализации потоков (нитей) выполнения, определяющий API для создания и управления ими
(2) стандарт реализации параллельных приложений с использованием обмена сообщениями интегральная среда быстрой разработки параллельных приложений
Какой формат директив OpenMP является правильным?
(1) #pragma omp директива [оператор_1[, оператор_2, :]]
(2) #pragma директива [оператор_1[, оператор_2, :]]
(3) #omp директива [оператор_1[, оператор_2, :]]
(4) #pragma omp директива
Сохраняет ли Cilk последовательную семантику программ?
(1) да
(2) нет
Средства борьбы с гонками за данными:
(1) использование преимущественно локальных по отношению к потоку, а не разделяемых переменных
(2) управление доступом к разделяемым переменным с помощью различных средств синхронизации
Позволяет ли Intel® Trace Collector собирать статистику выполнения Cilk-программы?
(1) да
(2) нет
Intel® Cilk™ Plus можно использовать для программирования вычислений на графических процессорах. Правильно ли это утверждение?
(1) да
(2) нет
Почему небольшой (в смысле вычислительной сложности) размер порождённых задач снижает эффективность Cilk-программы?
(1) увеличивается доля накладных расходов на создание порождённых задач
(2) в этом случае плохо работает алгоритм диспетчеризации
Является ли cilk_spawn допустимым ключевым словом Intel® Cilk™ Plus?
(1) да
(2) нет
Являются ли цикловые зависимости препятствием к распараллеливанию цикла?
(1) да
(2) нет
В программе имеются операторы cilk_spawn g() и cilk_sync. Как будет выполняться фрагмент программы между этими операторами?
(1) как "продолжение"
(2) как потомок
Intel® Cilk™ Plus входит в состав среды разработки Delphi.
(1) да
(2) нет
Чему по умолчанию равно количество исполнителей в Cilk-программе?
(1) числу ядер процессора
(2) 1
(3) не определено
Допустима ли следующая форма распараллеливания цикла: cilk_for (unsigned int i = 1; i < x; ++i) x = f();?
(1) да
(2) нет
Как задаётся "зернистость" распараллеливания цикла по умолчанию?
(1) согласно формуле grainsize = min(512, N / (8*p))
(2) 1
(3) не определена
Может ли влиять на наличие "гонок за данными" размер машинного слова?
(1) да
(2) нет
Что такое reducer_max_index?
(1) гиперобъект
(2) мьютекс
(3) массив
Имеется код cilk::reducer_opadd<float> sum = 0; ... cilk_for( size_t i=1; i<n; ++i ) sum += f(i); ... = sum.get_value();

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

(1) каждый поток получит доступ к собственному "изображению" переменной sum
(2) каждый поток получит доступ к общей переменной sum
(3) переменная sum доступна только из мастер-потока
Какой заголовочный файл необходимо использовать в программе на C++, если в ней используется оператор cilk::reducer_opadd<double> result(0);?
(1) reducer_opadd.h
(2) reducer.h
(3) cilk_opadd.h
(4) cilk.h
Может ли гонка за данными не влиять на результат работы программы?
(1) да
(2) нет
Какой редуктор используется при работе с параллельными потоками?
(1) reducer_ostream
(2) reducer_stream
(3) stream
Что означает запись b[1:3][0:2]?
(1) элементы b[1][0], b[1][1], b[2][0], b[2][1], b[3][0], b[3][1] массива b
(2) элементы b[0][0], b[1][1], b[2][0], b[2][1], b[3][0], b[3][1] массива b
(3) элементы b[1][0], b[2][11], b[2][0], b[2][1], b[3][0], b[3][1] массива b
(4) элементы b[1][0], b[1][1], b[2][1], b[2][1], b[3][0], b[3][1] массива b
(5) элементы b[1][0], b[1][1], b[2][0], b[2][1], b[3][0], b[3][0] массива b
Каким будет результат вычисления следующего выражения a[:][:] + b[0][1]?
(1) каждый элемент массива a суммируется с b[0][1]
(2) поэлементная сумма массивов a и b
(3) это недопустимая конструкция
Принадлежит ли элемент a[15] сечению массива a[11:4:3]?
(1) да
(2) нет
Как выполняются операции с разными элементами в выражении a[:] * b[:]?
(1) параллельно
(2) последовательно
Правильно ли задано сечение массива: [12:10]?
(1) да
(2) нет
Допускается ли использование прагм OpenMP в элементных функциях?
(1) нет
(2) да
Что является результатом операции редукции?
(1) скалярное значение
(2) массив
(3) сечение массива
Выберите 3 способа векторизации кода в Cilk-программах.
(1) расширенная векторная нотация
(2) использование элементных функций
(3) прагма SIMD
(4) замена арифметических операций функциями SSE
Для чего предназначена функция __cilkrts_get_worker_number()?
(1) для определения идентификатора исполнителя
(2) для определения количества исполнителей
Поддерживает ли Intel® Cilk™ Plus языки Fortran?
(1) да
(2) нет
Что такое OpenMP?
(1) стандарт программного интерфейса приложений для параллельных систем с общей памятью стандарт POSIX реализации потоков (нитей) выполнения, определяющий API для создания и управления ими
(2) стандарт реализации параллельных приложений с использованием обмена сообщениями интегральная среда быстрой разработки параллельных приложений
Какой заголовочный файл используется в OpenMP-программах?
(1) omp.h
(2) parallel.h
(3) threads.h
Какой модификацией исходного кода можно сериализовать выполнение Cilk-программы?
(1) заменой заголовочного файла с cilk.h на cilk_stub.h
(2) заменой всех операторов cilk_spawn на cilk_stub
Условия возникновения тупика в многопоточных программах:
(1) доступ к ресурсу эксклюзивен
(2) поток может удерживать ресурс, запрашивая другой
(3) ни один из конкурирующих потоков не может освободить запрашиваемый ресурс
Является ли архитектура Many-Integrated-Core целевой для Intel® Cilk™ Plus?
(1) да
(2) нет
Имеется следующий фрагмент кода: cilk_init(); cilk_spawn f() … cilk_sync

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

(1) в использовании несуществующей конструкции cilk_init
(2) в неправильной последовательности ключевых слов
(3) в данном контексте нельзя использовать cilk_spawn
Какие из нижеперечисленных являются ключевыми словами Intel® Cilk™ Plus?
(1) cilk_spawn
(2) cilk_init
(3) cilk_open
(4) cilk_start
(5) cilk_send
Прагма SIMD используется в Intel® Cilk™ Plus для:
(1) векторизации кода
(2) оптимизации кода уровня O2
(3) распараллеливания кода с помощью OpenMP
(4) распараллеливания кода для графических процессоров
Являются ли переходы из тела цикла препятствием к распараллеливанию цикла?
(1) да
(2) нет
Какая функция в Cilk-программе называется "порождающей"?
(1) Функция, в которой находится оператор cilk_spawn
(2) Функция, в которой находится прагма simd
Intel® Cilk™ Plus поддерживается компиляторами Intel версий 10.0 и 11.0.
(1) да
(2) нет
Допустимо ли следующее выражение в Cilk-программе: g(cilk_spawn f());?
(1) да
(2) нет
Допустима ли следующая форма распараллеливания цикла: int i; cilk_for (i = 0; i < 100; i++);?
(1) да
(2) нет
(3) только в C (не в C++)
Каким будет результат, если задать "зернистость" распараллеливания цикла равной нулю?
(1) будет использоваться значение по умолчанию
(2) "зернистость" будет нулевой
(3) "зернистость" будет равна 1
Может ли влиять на наличие "гонок за данными" уровень оптимизации?
(1) да
(2) нет
Что такое reducer_min?
(1) гиперобъект
(2) мьютекс
(3) массив
Переменная называется локальной, если:
(1) область видимости переменной ограничена
(2) область видимости переменной не ограничена
(3) переменная не является массивом
Имеется код cilk::reducer_opadd<double> result(0); cilk_for(int i=0; i<data.GetSize(); i++) result += operation(data[i]); return xxx;

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

(1) result.get_value()
(2) 0
(3) result_of_op
Допускается ли в Intel® Cilk™ Plus определение пользовательских гиперобъектов?
(1) да
(2) нет
Почему использование расширенной индексной нотации в Intel® Cilk™ Plus при работе с массивами позволяет увеличить производительность программы?
(1) операции в расширенной индексной нотации эффективно векторизуются компилятором
(2) выигрыша в эффективности нет, нотация используется для удобства
(3) операции в расширенной индексной нотации заменяются компилятором вызовами функций MPI
(4) операции в расширенной индексной нотации заменяются компилятором вызовами функций
(5) OpenMP
Правильным ли является оператор присваивания c[1:5] = d[1:5]?
(1) да
(2) нет
Является ли правильным следующий оператор: a[:] = c;?
(1) да
(2) нет
Принадлежит ли элемент b[35] сечению массива b[9:16]?
(1) да
(2) нет
Правильно ли запрограммировано умножение двух матриц в выражении a[:][:]*b[:][:]?
(1) да
(2) нет
Элементные функции - это функции, которые:
(1) обеспечивают векторизацию вычисления математических функций
(2) реализации элементарных математических функций
(3) скалярные математические функции
Допускается ли использование многопоточности OpenMP в элементных функциях?
(1) нет
(2) да
Что является аргументом операции редукции?
(1) массив
(2) сечение массива
(3) скалярное значение
(4) функция
Для чего используется оператор linear в прагме #pragma simd linear(x,y) reduction(+:sum)?
(1) для описания индуктивных операций
(2) для решения линейных уравнений
(3) для достижения линейной масштабируемости программы
Для чего предназначена функция __cilkrts_get_nworkers()?
(1) для определения идентификатора исполнителя
(2) для определения количества исполнителей
Поддерживает ли Intel® Cilk™ Plus языки Java?
(1) да
(2) нет
Что такое Intel® TBB?
(1) библиотека шаблонов параллельных алгоритмов и контейнеров на языке С++
(2) стандарт реализации параллельных приложений с использованием обмена сообщениями интегральная среда быстрой разработки параллельных приложений
Какую модель параллелизма поддерживает Intel® Cilk™ Plus?
(1) параллелизм потоков
(2) параллелизм задач
(3) параллелизм заданий
Как с помощью компилятора (Linux) можно сериализовать выполнение Cilk-программы?
(1) с помощью ключа -cilk-serialize
(2) с помощью ключа --serialize
(3) это действие невозможно
Выполнение какого условия обеспечивает оптимальную эффективность многопоточной программы?
(1) число программных потоков равно числу аппаратных потоков
(2) число программных потоков должно быть меньше числа аппаратных потоков
(3) число программных потоков должно быть больше числа аппаратных потоков
Может ли программист, использующий Intel® Cilk™ Plus явно указать способ распределения работы между потоками?
(1) да
(2) нет
Для чего предназначена функция __cilkrts_get_worker_number()?
(1) для определения идентификатора исполнителя
(2) для определения количества исполнителей
Какие из нижеперечисленных являются ключевыми словами Intel® Cilk™ Plus?
(1) cilk_for
(2) cilk_init
(3) cilk_open
(4) cilk_start
(5) cilk_send
Поддерживает ли Intel® Cilk™ Plus компилятор GCC?
(1) да, начиная с версии 4.7
(2) да, любая версия
(3) нет
Являются ли переходы в тело цикла препятствием к распараллеливанию цикла?
(1) да
(2) нет
Что выполняет балансировку Cilk-программы?
(1) runtime система
(2) брокер ресурсов Cilk
(3) сама программа
Intel® Cilk™ Plus поддерживает только параллелизм типа fork-join.
(1) да
(2) нет
Допустимо ли следующее выражение в Cilk-программе: var = cilk_spawn (object.*pointer)(args);?
(1) да
(2) нет
Допускается ли использование оператора break в цикле cilk_for?
(1) да
(2) нет
Каким будет результат, если задать отрицательное значение "зернистость" распараллеливания цикла?
(1) результат не определён
(2) 1
(3) будет использоваться значение по умолчанию
Относительно какого типа операций задаются редукторы?
(1) ассоциативных
(2) коммутативных
Что такое reducer_min_index?
(1) гиперобъект
(2) мьютекс
(3) массив
Переменная называется глобальной, если
(1) область видимости переменной совпадает со всей программой
(2) область видимости переменной не совпадает со всей программой
(3) переменная является массивом или структурой
Имеется код cilk::reducer_opadd<float> sum; void f( int m ) { sum += m; } float g() { cilk_spawn f(1); f(2); cilk_sync; return xxx; }

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

(1) sum.get_value()
(2) 0
(3) ничего
Какое действие выполняет get_value() в редукторе?
(1) возвращает значение редуктора
(2) инициализирует редуктор
Второй элемент в расширенной векторной нотации <1>:<2>[:<3>] это:
(1) количество элементов в сечении массива
(2) максимальное значение индекса
(3) шаг изменения индекса
Правильным ли является оператор присваивания c[1:5] = d[2:15]?
(1) да
(2) нет
Является ли правильным следующий оператор: a[1:s] = a[0:s] + 1;?
(1) да
(2) нет
Корректен ли оператор c[2:10:2] = a[1:10] - b[14:10:11]?
(1) да
(2) нет
Какие операции машинного уровня генерирует компилятор для выражений вида a[b[0:s]] = c[:] и c[0:s] = a[b[:]]?
(1) операции распределения и сбора данных для целевой архитектуры
(2) операции редукции
Директива SIMD - это:
(1) подсказка компилятору выполнить векторизацию тех фрагментов кода, которые необходимо векторизовать
(2) подсказка компилятору выполнить OpenMP-распараллеливание тех фрагментов кода, которые необходимо векторизовать
(3) такой директивы в Intel® Cilk™ Plus нет
Допускается ли использование многопоточности Cilk в элементных функциях?
(1) нет
(2) да
Какое действие выполняет функция __sec_reduce_add(a[:])?
(1) суммирование элементов массива a
(2) перемножение элементов массива a
(3) такой функции нет
Для чего используется оператор reduction в прагме #pragma simd linear(x,y) reduction(+:sum)?
(1) для описания переменной редукции
(2) для описания операции редукции
(3) такого оператора нет
Для чего предназначена функция __cilkrts_set_param()?
(1) для задания параметров исполнения Cilk-программы
(2) для задания параметров гиперобъекта
(3) для задания параметров исполнения заданного потока
Поддерживает ли MPI многопоточный параллелизм?
(1) да, в спецификации 2.x
(2) да, во, всех спецификациях
(3) нет
Высокоуровневыми инструментами многопоточного программирования являются:
(1) OpenMP
(2) OpenCL
(3) Intel® Cilk™ Plus
(4) POSIX Threads
(5) Windows API
Какие технологии многопоточного параллелизма являются альтернативой Intel® Cilk™ Plus ?
(1) OpenMP
(2) альтернатив нет
(3) OpenCL
(4) MPI
(5) OpenMPI
Как с помощью компилятора (Windows) можно сериализовать выполнение Cilk-программы?
(1) с помощью ключа /Qcilk-serialize
(2) с помощью ключа /Qserialize
(3) это действие невозможно
Поддерживает ли Intel® Cilk™ Plus компилятор icl?
(1) да (все версии)
(2) нет
(3) да (начиная с версии 12.0)
Поддерживает ли компилятор GCC версии 4.2 Intel® Cilk™ Plus?
(1) да
(2) нет
Для чего предназначена функция __cilkrts_get_nworkers()?
(1) для определения идентификатора исполнителя
(2) для определения количества исполнителей
Какие из нижеперечисленных являются ключевыми словами Intel® Cilk™ Plus?
(1) cilk_sync
(2) cilk_init
(3) cilk_open
(4) cilk_open
(5) cilk_send
Поддерживает ли Intel® Cilk™ Plus компилятор ifort?
(1) да
(2) нет
Для чего предназначена прагма grainsize?
(1) задаёт гранулярность распараллеливания
(2) задаёт объём памяти
(3) задаёт размер кэш-памяти ядра
Может ли произойти возврат из функции, вызванной в одном потоке, в другом потоке?
(1) да, если функция содержит cilk_spawn
(2) да, в любом случае
(3) нет
Intel® Cilk™ Plus поддерживает только векторный параллелизм.
(1) да
(2) нет
Допустимо ли следующее выражение в Cilk-программе: cilk_spawn [&]{ g(f()); }();?
(1) да
(2) нет
Допускается ли использование оператора return в цикле cilk_for?
(1) да
(2) нет
Что будет происходить, если "зернистость" распараллеливания цикла в Cilk-программе задана следующим образом: #pragma cilk grainsize = n/(4*__cilkrts_get_nworkers())?
(1) "Зернистость" распараллеливания цикла определяется в соответствии с числом исполнителей
(2) такая конструкция недопустима
Что такое "изображение" переменной?
(1) экземпляр переменной
(2) имя переменной
(3) значение переменной
Что такое reducer_opadd?
(1) гиперобъект
(2) мьютекс
(3) массив
Возникает ли гонка за данными, если два потока выполняют чтение из общей переменной?
(1) да
(2) нет
В программе для многоядерной архитектуры имеется потенциальная опасность гонок за данными. Какие средства Intel® Cilk™ Plus Вы будете использовать для того, чтобы избежать гонок за данными?
(1) редукторы
(2) векторизацию с помощью прагмы simd
(3) расширенную векторную нотацию
Из каких логических частей состоит пользовательский редуктор?
(1) класс View; класс Monoid; гиперобъект, создающий изображения переменной; реализация действий с данными
(2) класс View; класс Monoid
(3) класс View; класс Monoid; гиперобъект, создающий изображения переменной
Первый элемент в расширенной векторной нотации <1>:<2>[:<3>] это:
(1) начальное значение индекса
(2) количество элементов в сечении массива
(3) максимальное значение индекса
(4) шаг изменения индекса
Правильным ли является оператор присваивания c[1:5] = d[5:5]?
(1) да
(2) нет
Является ли правильным следующий оператор: a[b[0:s]] = c[:];?
(1) да
(2) нет
Корректен ли оператор c[2:10:2] = a[1:10] - b[14:11:10]?
(1) да
(2) нет
В Cilk-программе необходимо использовать циклический сдвиг элементов массива. Какую функцию можно использовать для выполнения такого сдвига?
(1) __sec_rotate(a[:], shift_val)
(2) __sec_shift(a[:], shift_val)
(3) такой функции нет
Что такое "элементная функция"?
(1) функция, которая формирует результат вычисления скалярной функции для каждого элемента массива-аргумента
(2) таких функций в Intel® Cilk™ Plus нет
Допускается ли использование циклов for в элементных функциях?
(1) нет
(2) да
Какое действие выполняет функция __sec_reduce(f, a[:])?
(1) редукция массива a с помощью функции f
(2) суммирование элементов массива a
(3) перемножение элементов массива a
(4) такой функции нет
Можно ли использовать прагму #pragma simd в цикле с условным оператором (if)?
(1) да
(2) нет
Для чего предназначена функция __cilkrts_get_total_workers()?
(1) для определения суммарного числа слотов ID, в том числе и тех, которые являются неактивными
(2) для определения суммарного числа активных слотов ID
Увеличение производительности вычислений позволяет:
(1) решать новые, более сложные задачи
(2) решать старые задачи, но быстрее
(3) решать старые задачи, но с более высокой точностью
Низкоуровневыми инструментами многопоточного программирования являются:
(1) OpenMP
(2) OpenCL
(3) Intel® Cilk™ Plus
(4) POSIX Threads
(5) Windows API
MPI и Intel® Cilk™ Plus используют одну модель параллелизма. Правильно ли это утверждение?
(1) да
(2) нет
Как в среде Microsoft Visual Studio можно сериализовать выполнение Cilk-программы?
(1) с помощью замены Properties C/C++ Language [Intel C++] Replace Intel Cilk Plus
(2) Keywords значением Serial Equivalent
(3) это действие невозможно
Какая архитектура является целевой для Cilk-программ?
(1) вычислительные системы с общей памятью
(2) вычислительные системы с распределённой памятью
(3) гибридные системы
Как решается проблема сбалансированной загрузки ядер в Intel® Cilk™ Plus?
(1) системой исполнения, использующей метод захвата работы
(2) компиляцией с соответствующими ключами
Для чего предназначена функция __cilkrts_set_param()?
(1) для задания параметров исполнения Cilk-программы
(2) для задания параметров гиперобъекта
(3) для задания параметров исполнения заданного потока
Какие из нижеперечисленных являются ключевыми словами Intel® Cilk™ Plus?
(1) grainsize
(2) cilk_init
(3) cilk_open
(4) cilk_open
(5) cilk_send
Поддерживает ли Intel® Cilk™ Plus компилятор icc?
(1) да (начиная с версии 12.0)
(2) да (все версии)
(3) нет
Какой из вариантов распараллеливания допускается в Intel® Cilk™ Plus?
(1) замена заголовка цикла for на cilk_for
(2) использование прагмы распараллеливания цикла
(3) в Intel® Cilk™ Plus циклы не распараллеливаются
Допускаются ли вложенные (рекурсивные) ветвления в Intel® Cilk™ Plus?
(1) да
(2) нет
Intel® Cilk™ Plus одновременно поддерживает векторный параллелизм и параллелизм типа fork-join.
(1) да
(2) нет
Допустимо ли следующее выражение в Cilk-программе: cilk_spawn g(f());?
(1) да
(2) нет
Допускается ли использование оператора goto в цикле cilk_for?
(1) да
(2) нет
(3) только если переход происходит внутри цикла
В каком случае уменьшение "зернистости" распараллеливания цикла приводит к улучшению производительности Cilk-программы?
(1) если объём вычислительной работы значительно меняется от итерации к итерации
(2) если объём вычислительной работы незначительно меняется от итерации к итерации
(3) в любом случае
(4) не влияет в любом случае
В какой момент объединяются изображения переменных?
(1) при объединении потоков
(2) каждые 5 секунд
(3) в точке, заданной специальным оператором
Что такое reducer_ostream?
(1) гиперобъект
(2) мьютекс
(3) массив
Необходимо ли при использовании редукторов применять мьютексы?
(1) да
(2) нет
Какую функцию можно использовать для вычисления суммы всех элементов массива?
(1) __sec_reduce_add(a[:])
(2) __sec_add(a[:])
(3) __sec_reduce(a[:])
Как ведёт себя редуктор, если не происходит захвата работы?
(1) Как обычная переменная
(2) Поведение редуктора в этом случае не определено
Третий элемент в расширенной векторной нотации <1>:<2>[:<3>] это:
(1) начальное значение индекса
(2) количество элементов в сечении массива
(3) максимальное значение индекса
(4) шаг изменения индекса
Правильным ли является оператор присваивания c[:] = d[:]?
(1) Да, если оба массива имеют одинаковое число элементов
(2) Да
(3) Нет
Является ли правильным следующий оператор: c[0:s] = a[b[:]];?
(1) да
(2) нет
Совпадает ли синтаксис расширенной индексной нотации Intel® Cilk™ Plus и индексной нотации Fortran 90?
(1) да
(2) нет
Можно ли использовать сечение массива в качестве аргумента функции?
(1) да
(2) нет
Что можно использовать в левой части оператора присваивания x = sin(b[:]);?
(1) сечение массива, конформного b
(2) простую переменную
(3) любой массив
Допускается ли использование выражений с индексной нотацией в элементных функциях?
(1) нет
(2) да
Какие операции являются операциями редукции?
(1) add
(2) mul
(3) sin
(4) cos
(5) pow
Может ли пользователь явно управлять балансировкой загрузки в Cilk-программе?
(1) да
(2) нет
В каком случае в Cilk-программе используется заголовочный файл cilk_api.h?
(1) в случае использования в программе функций прикладного программного интерфейса Cilk
(2) всегда
(3) такого заголовочного файла нет
Действительно ли RISC-архитектура основана на параллелизме?
(1) да
(2) нет
OpenMP-программа состоит из:
(1) параллельных и последовательных секций
(2) вызовов функций обмена сообщениями
OpenMP и Intel® Cilk™ Plus используют сходные модели параллелизма. Правильно ли это утверждение?
(1) да
(2) нет
Можно ли с помощью Intel® Cilk™ Plus разрабатывать приложения для гибридных вычислительных систем?
(1) да
(2) нет
Intel® Cilk™ Plus ориентирован на системы с распределённой памятью. Правильно ли это утверждение?
(1) да
(2) нет
Intel® Cilk™ Plus поддерживает векторный параллелизм и параллелизм задач.
(1) да
(2) нет
Для чего предназначена функция __cilkrts_get_total_workers()?
(1) для определения суммарного числа слотов ID, в том числе и тех, которые являются неактивными
(2) для определения суммарного числа активных слотов ID
Является ли cilk_init допустимым ключевым словом Intel® Cilk™ Plus?
(1) да
(2) нет
Назначение переменной окружения CILK_NWORKERS:
(1) задание количества потоков
(2) задание количества ядер процессора
(3) задание количества процессов
В каком случае при диспетчеризации задач Cilk происходит захват работы?
(1) усли есть свободный рабочий поток
(2) в любом случае
Как в Linux (bash) задать количество исполнителей?
(1) export CILK_NWORKERS= количество исполнителей
(2) NWORKERS= количество исполнителей
(3) export CILK= количество исполнителей
Что произойдёт при обработке программы с прагмой #pragma simd компилятором, не поддерживающим Intel® Cilk™ Plus?
(1) прагма игнорируется
(2) происходит сбой программы
В чём различие конструкций cilk_spawn [&]{ g(f()); }(); и cilk_spawn g(f());?
(1) в первом случае обе функции выполняются как порождённые, а во втором случае порождённой является только функция g()
(2) в первом случае порождённой является только функция g(), а во втором случае обе функции выполняются как порождённые
(3) различия нет
Допустима ли следующая форма распараллеливания цикла: cilk_for (unsigned int i = 0; i != i; i += 0);?
(1) да
(2) нет
Как следует изменить "зернистость" распараллеливания цикла, если его итерации равномерно малы по объёму вычислительной работы?
(1) уменьшить
(2) увеличить
Для чего предназначена утилита cilkscreen?
(1) для выявления гонок за данными
(2) для вывода графических изображений в Cilk-программах
(3) такой утилиты нет
Что такое reducer_basic_string?
(1) гиперобъект
(2) мьютекс
(3) массив
Может ли переменная быть описана как редуктор относительно операции объединения списков?
(1) да
(2) нет
Является ли cilk::reducer гиперобъектом?
(1) да
(2) нет
Как влияет на производительность большое количество редукторов?
(1) улучшает
(2) ухудшает
(3) не влияет
Что обозначает символ :, используемый самостоятельно (без указания длины и шага) в расширенной индексной нотации?
(1) все элементы массива
(2) динамический массив
(3) это недопустимая конструкция
Правильным ли является оператор присваивания c[:] = d[:][:]?
(1) да
(2) нет
Какое действие выполняет функция __sec_shift?
(1) линейный сдвиг массива
(2) циклический сдвиг массива
(3) такой функции нет
Могут ли перечисленные операции применяться к сечениям массивов: +, -, *, /?
(1) да
(2) нет
(3) только + и -
Какое условие должно выполняться при использовании сечения массива в качестве аргумента функции?
(1) Фактический и формальный аргументы должны быть согласованы
(2) такое использование допустимо в любом случае
Каким будет результат вычисления следующего выражения a[:] = pow(b[:], c);?
(1) массив b[:]**c
(2) степень с суммы элементов массива b
(3) это недопустимая конструкция
(4) массив c**b[:]
Допускается ли использование 64 битовых переменных с плавающей точкой в элементных
(1) нет
(2) да
Какие операции являются операциями редукции?
(1) min_ind
(2) all_zero
(3) mul
(4) sin
(5) cos
(6) pow
Какие средства Intel® Cilk™ Plus Вы будете использовать для того, чтобы использовать возможности векторной архитектуры?
(1) расширенную векторную нотацию для массивов
(2) редукторы
(3) специальные ключи компиляции
Какой заголовочный файл следует использовать в случае использования в программе функций прикладного программного интерфейса Cilk?
(1) cilk_api.h
(2) api.h
(3) cilk.h
(4) никакой
Действительно ли VLIW-архитектура основана на параллелизме?
(1) да
(2) нет
Какое действие выполняет операция join?
(1) объединение потоков
(2) завершение выполнения параллельной программы
(3) порождение потоков
Какой метод диспетчеризации задач используется в Intel® Cilk™ Plus?
(1) метод захвата задач
(2) статическое распределение задач по ядрам процессора
(3) динамическое распределение задач по ядрам процессора
(4) динамическое "управляемое" распределение задач по ядрам процессора
Какая технология позволяет реализовать "пульсирующий параллелизм"?
(1) OpenMP
(2) MPI
(3) PVM
В каком случае программа на Cilk будет выполняться в последовательном режиме?
(1) если нет свободных рабочих потоков
(2) Cilk-программа может выполняться только параллельно
Могут ли разные процессы иметь общее адресное пространство?
(1) да
(2) нет
Можно ли избавиться от гонки за данными изменением алгоритма вычислений?
(1) да
(2) нет
Является ли cilk_start допустимым ключевым словом Intel® Cilk™ Plus?
(1) да
(2) нет
Что такое "точка порождения"?
(1) в этой точке создаётся новая задача, выполнение которой может быть продолжено данным потоком или захвачено другим потоком
(2) в этой точке создаётся новый процесс, который будет выполняться на том же процессоре
(3) в этой точке создаётся новый процесс, который будет выполняться на другом процессоре
Как выполняется Cilk-программа, если нет свободных рабочих потоков?
(1) как обычная последовательная программа
(2) как параллельная программа
Как в командной строке Windows задать количество исполнителей?
(1) set CILK_NWORKERS= количество исполнителей
(2) set __NWORKERS= количество исполнителей
(3) set CILK_N= количество исполнителей
В чём различие между Cilk™ Plus и Cilk™?
(1) в использовании в Cilk™ Plus расширенной индексной нотации
(2) в использовании прагмы simd
(3) различия нет
(4) в наличии в Cilk™ Plus гиперобъектов
Распространяется ли действие cilk_sync на все порождённые функции?
(1) нет, только на потомки той функции, где находится cilk_sync
(2) да
Что определяет величина grainsize в параллельных циклах cilk_for?
(1) количество итераций в отдельной "порции" цикла
(2) размер оперативной памяти компьютера
(3) технологический процесс, по которому выполнено ядро процессора
Что такое редуктор?
(1) "Безопасная" реализация глобальной переменной в Cilk-программах
(2) оператор, выполняющий редукцию массива
(3) операция редукции
(4) локальная переменная в Cilk-программе
Что такое cilk::reducer?
(1) гиперобъект
(2) мьютекс
(3) массив
Сохраняют ли гиперобъекты последовательную семантику программы?
(1) да
(2) нет
Может ли переменная быть описана как редуктор относительно операции возведения в степень?
(1) да
(2) нет
Является ли cilk::private гиперобъектом?
(1) да
(2) нет
Какой редуктор соответствует операции логического ИЛИ?
(1) reducer_opor
(2) reducer_or
(3) reducer_xor
(4) такого редуктора нет
Что означает запись b[13:57]?
(1) элементы массива b с 13 по 57
(2) элементы массива b[13] и b[57]
(3) это недопустимая конструкция
Какое действие выполняется в следующем выражении a[:]*b[:]?
(1) поэлементное умножение массивов a и b
(2) это недопустимая конструкция
(3) умножение первых элементов a и b
Какое действие выполняет функция __sec_rotate?
(1) линейный сдвиг массива
(2) циклический сдвиг массива
(3) такой функции нетт
Могут ли перечисленные операции применяться к сечениям массивов: %, <,==,!=,>?
(1) да
(2) нет
(3) только = = и !=
Какое действие выполняет следующий оператор: vx[i:m][j:n] += a*(U[i:m][j+1:n]-U[i:m][j:n]);?
(1) модификацию подматрицы размером m x n, начиная с элемента (i, j)
(2) модификацию подматрицы размером i x j, начиная с элемента (S, n)
Каким будет результат вычисления следующего выражения a[:] = pow(c, b[:]);?
(1) массив b[:]**c
(2) степень с суммы элементов массива b
(3) это недопустимая конструкция
(4) массив c**b[:]
Допускается ли использование 32 битовых переменных с плавающей точкой в элементных функциях?
(1) нет
(2) да
Должен ли программист явным образом задавать способ диспетчеризации параллельной Cilk-программы?
(1) да
(2) нет
Какие средства Intel® Cilk™ Вы будете использовать для того, чтобы использовать возможности векторной архитектуры?
(1) прагму SIMD
(2) редукторы
(3) специальные ключи компиляции
Какое значение возвращает вызов __cilkrts_get_nworkers при выполнении Cilk-программы в последовательном режиме?
(1) 4
(2) 1
(3) 0
(4) 100
Действительно ли суперскалярная архитектура основана на параллелизме?
(1) да
(2) нет
Какой идентификатор имеет мастер-поток в OpenMP-программе?
(1) 0
(2) 1
(3) 2
(4) 100
Что происходит, если очередь порождённых задач на каком-либо процессоре (ядре) оказывается пустой?
(1) происходит захват задачи из очереди другого процессора (ядра)
(2) происходит аварийное завершение работы
Что является общим у разных потоков одного процесса?
(1) стек
(2) сегмент кода
(3) сегмент данных
Всегда ли программа на Cilk выполняется в параллельном режиме?
(1) нет, только если есть свободные рабочие потоки
(2) всегда
(3) никогда
Могут ли разные потоки иметь общее адресное пространство?
(1) да
(2) нет
Может ли гонка за данными не влиять на результат работы программы?
(1) да
(2) нет
Является ли cilk_send допустимым ключевым словом Intel® Cilk™ Plus?
(1) да
(2) нет
Что такое "точка синхронизации"?
(1) в этой точке выполнение задач синхронизуется
(2) в этой точке выполняется проверка корректности расчётов
(3) в этой точке выполняется сохранение промежуточных результатов вычислений
Для того, чтобы обозначить точку порождения в Cilk-программе, необходимо:
(1) добавить в соответствующем месте программы cilk_spawn имя_функции()
(2) добавить в соответствующем месте программы cilk_sync
Есть два фрагмента кода: 1) cilk_spawn f(); cilk_spawn g(); cilk_sync; 2) cilk_spawn f(); g(); cilk_sync; Какой из них является предпочтительным с точки зрения стиля и эффективности?
(1) 1)
(2) 2)
Должны ли быть определены аргументы порождённой функции в родительском коде до момента порождения потомка?
(1) да
(2) нет
Как происходит распределение итераций цикла на каждом уровне рекурсии при использовании cilk_sync?
(1) половина работы отдаётся потомку, половина выполняется в режиме продолжения
(2) одна итерация отдаётся потомку, остальные выполняются в режиме продолжения
(3) большая часть работы отдаётся потомку, одна итерация выполняется в режиме продолжения
Как влияет на величину накладных расходов большое значение grainsize?
(1) уменьшает
(2) увеличивает
"Параллельные" глобальные переменные, позволяющие избежать гонок за данными в Intel® Cilk™ Plus это:
(1) редукторы
(2) параллели
(3) кондукторы
(4) таких переменных в Intel® Cilk™ Plus нет
Что такое reducer_list_append?
(1) гиперобъект
(2) мьютекс
(3) массив
Имеется следующий код: cilk::reducer_opadd<int> sum(3); void f() {cilk_spawn g(); sum += 2; cilk_sync;} void g() {sum++;}

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

(1) 6
(2) 2
(3) 4
(4) 8
Допустимо ли в программе на C++ использование оператора cilk::reducer_min_index<size_t, T> r;?
(1) да
(2) нет
В Cilk-программе необходимо выполнить конкатенацию списков. Какой гиперобъект следует для этого использовать?
(1) reducer_list_append
(2) reducer_list_add
(3) reducer_add
Какой редуктор соответствует операции логического И?
(1) reducer_opand
(2) reducer_and
(3) reducer_or
(4) reducer_xor
(5) такого редуктора нет
Что означает запись b[:]?
(1) все элементы массива b
(2) это недопустимая конструкция
(3) первый элемент массива b
Какое действие выполняется в следующем выражении a[3:2][3:2] + b[5:2][5:2]?
(1) сложение двух матриц 2x2
(2) это недопустимая конструкция
Какие инструкции порождает компилятор при компиляции кода с использованием векторной нотации?
(1) SSE
(2) AVX
(3) MIMD
(4) SIMD
Могут ли перечисленные операции применяться к сечениям массивов: |,&,,&&?
(1) да
(2) нет
(3) только
Имеется следующий фрагмент программы: if(a[0:n] < b[0:n]) c[0:n] = 0; else c[0:n] = 1;
(1) присваивание нулевых значений элементам массива c с индексами, для которых a[i]<b[i] и единицы для всех прочих
(2) присваивание единичных значений элементам массива c с индексами, для которых a[i]<b[i] и нулевых для всех прочих
(3) такая конструкция недопустима
Какой код генерируется при компиляции кода с вызовом элементных функций?
(1) компилятор генерирует обращения к векторизованным функциям
(2) параллельный OpenMP-код
(3) параллельный код с использованием MPI
Допускается ли использование указателей в элементных функциях?
(1) нет
(2) да
В каком режиме выполняется программа на Cilk, если нет свободных рабочих потоков?
(1) в последовательном
(2) в параллельном
Имеются ли в Intel® Cilk™ Plus собственные таймеры?
(1) да
(2) нет
Идентификаторы исполнителей непрерывно заполняют определённый диапазон значений. Верно ли это утверждение?
(1) да
(2) нет
Что такое архитектура MIC?
(1) Many Integrated Core architecture
(2) Message Intermittance Computing architecture
(3) Medium Intel Computing architecture
Какие технологии поддерживают пошаговое распараллеливание?
(1) OpenMP
(2) Intel® Cilk™ Plus
(3) MPI
В каком случае зависимость ускорения от числа потоков близка к линейной?
(1) когда степень параллелизма вычислительной системы достаточно велика
(2) когда степень параллелизма вычислительной системы недостаточно велика
(3) когда в программе не используются операторы cilk_sync
Какой параллелизм реализуется при выполнении параллельной программы на последовательной вычислительной системе?
(1) видимый (мнимый)
(2) реальный
(3) параллельная программа не может выполняться на последовательной вычислительной системе
С какой средой разработки совместим Intel® Cilk™ Plus в операционной системе MacOS?
(1) такой среды нет, Intel® Cilk™ Plus несовместим с MacOS
(2) Lion Mac
(3) Eclipse
Intel® Cilk™ Plus ориентирован на системы с общей памятью. Правильно ли это утверждение?
(1) да
(2) нет
Как влияют блокировки на степень параллелизма программы?
(1) уменьшают
(2) увеличивают
Является ли cilk_for допустимым ключевым словом Intel® Cilk™ Plus?
(1) да
(2) нет
Какое ключевое слово в Intel® Cilk™ Plus используется для распараллеливания цикла
(1) cilk_for
(2) cilk_sync
(3) cilk_spawn
Для того, чтобы обозначить точку синхронизации в Cilk-программе, необходимо:
(1) добавить в соответствующем месте программы cilk_spawn имя_функции()
(2) добавить в соответствующем месте программы cilk_sync
Intel® Cilk™ Plus является библиотекой, имеющей интерфейсы к языкам программирования Fortran. C/C++, Java?
(1) да
(2) нет
В Cilk-программе имеется следующий код: cilk_sync; … cilk_spawn g();. В чём заключается ошибка?
(1) неправильный порядок cilk_spawn и cilk_syn
(2) используются несуществующие ключевые слова
(3) используются несуществующее ключевое слово
Допустима ли следующая форма распараллеливания цикла: cilk_for (unsigned int i, j = 42; j < 1; i++, j++)?
(1) да
(2) нет
Как влияет на величину накладных расходов маленькое значение grainsize?
(1) уменьшает
(2) увеличивает
В чём заключается отрицательный эффект "гонок за данными"?
(1) утрата детерминизма в поведении программы
(2) утрата корректности
(3) уменьшение производительности параллельной программы
Что такое reducer_list_prepend?
(1) гиперобъект
(2) мьютекс
(3) массив
Редукторы можно использовать только в циклах.
(1) да
(2) нет
Какой заголовочный файл необходимо использовать в программе на C++, если в ней используется оператор cilk::reducer_min_index<size_t, T> r;?
(1) reducer_min.h
(2) reducer.h
(3) cilk_reducer_min.h
Необходимо ли при использовании редукторов применять блокировки?
(1) да
(2) нет
Какой редуктор соответствует операции логического исключающего ИЛИ?
(1) reducer_opxor
(2) reducer_opand
(3) reducer_or
(4) reducer_xor
(5) такого редуктора нет
Что означает запись b[:][5]?
(1) 5 столбец матрицы b
(2) 5 строку матрицы b
(3) это недопустимая конструкция
(4) 5-й элемент одномерного массива b
Является ли правильным следующее выражение a[0:4][1:2] + b[1:2]?
(1) да
(2) нет
Какая структура данных чаще всего встречается в вычислительных приложениях?
(1) массив
(2) скалярная переменная
(3) структура
Могут ли перечисленные операции применяться к сечениям массивов: ++,--, +=, -=?
(1) да
(2) нет
(3) только += и -=
(4) только ++
Правильно ли запрограммировано вычисление скалярного произведения двух векторов в выражении a[:]*b[:]?
(1) да, если они содержат одинаковое количество элементов
(2) да
(3) нет
Допускается ли использование операторов выбора в элементных функциях?
(1) нет
(2) да
Допускается ли использование 32 битовых переменных типа signed int в элементных функциях?
(1) нет
(2) да
Может ли элементная функция возвращать сечение массива?
(1) да
(2) нет
Имеются ли в Intel® Cilk™ Plus средства обмена сообщениями между процессами?
(1) да
(2) нет
Можно ли изменить число исполнителей после вызова функции __cilkrts_get_nworkers?
(1) да
(2) нет