Внимание ! Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier! В каком случае уменьшение "зернистости" распараллеливания цикла приводит к улучшению производительности Cilk-программы?
в любом случае если объём вычислительной работы незначительно меняется от итерации к итерации если объём вычислительной работы значительно меняется от итерации к итерации Не влияет в любом случае
Что такое редуктор?
оператор, выполняющий редукцию массива локальная переменная в Cilk-программе операция редукции "Безопасная" реализация глобальной переменной в Cilk-программах
Может ли влиять на наличие "гонок за данными" размер машинного слова?
нет да
Что такое cilk::reducer?
гиперобъект массив мьютекс
Что такое reducer_max?
мьютекс гиперобъект массив
Что такое reducer_max_index?
мьютекс массив гиперобъект
В чём заключается отрицательный эффект "гонок за данными"?
утрата детерминизма в поведении программы уменьшение производительности параллельной программы утрата корректности
Каким будет результат вычисления 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
Сохраняют ли гиперобъекты последовательную семантику программы?
Каким будет результат вычисления 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 ничего
Какую функцию можно использовать для вычисления суммы всех элементов массива?
одновременном доступе из разных потоков к одной переменной одновременном доступе из разных потоков к разным переменным последовательном доступе из разных потоков к одной переменной
Какой заголовочный файл необходимо использовать в программе на 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 Вы будете использовать для того, чтобы использовать возможности векторной архитектуры?
расширенную векторную нотацию для массивов редукторы специальные ключи компиляции
Внимание ! Вопросы к тесту выложены исключительно в ознакомительных целях: количество вопросов может не совпадать с действительным, актуальность не поддерживается,- за решением теста Welcome to the cashier! Что такое Intel® Cilk™ Plus?
программный инструмент анализа безопасности приложений программный инструмент отладки параллельных MPI-приложений расширение C/C++ для разработки приложений для графических процессоров расширение C/C++ для разработки параллельных приложений программный инструмент динамического анализа приложений
Поддерживает ли Intel® Cilk™ Plus языки Fortran?
да нет
Поддерживает ли Intel® Cilk™ Plus языки C/C++?
нет да
Увеличение производительности вычислений позволяет:
решать старые задачи, но быстрее решать новые, более сложные задачи решать старые задачи, но с более высокой точностью
Поддерживает ли Intel® Cilk™ Plus языки Java?
да нет
Поддерживает ли MPI многопоточный параллелизм?
нет да, в спецификации 2.x да, во, всех спецификациях
Является ли VLIW-архитектура методом распараллеливания вычислений?
нет да
Действительно ли RISC-архитектура основана на параллелизме?
да нет
Действительно ли суперскалярная архитектура основана на параллелизме?
Какой заголовочный файл используется в OpenMP-программах?
threads.h omp.h parallel.h
Что такое POSIX Threads?
стандарт POSIX реализации потоков (нитей) выполнения, определяющий API для создания и управления ими стандарт реализации параллельных приложений с использованием обмена сообщениями интегральная среда быстрой разработки параллельных приложений
К IPC относятся:
обмен через общую память обмен с помощью сообщений сокеты OpenMP именованные каналы MPI Семафоры
Что такое архитектура MIC?
Medium Intel Computing architecture Message Intermittance Computing architecture Many Integrated Core architecture
Что такое OpenMP?
стандарт реализации параллельных приложений с использованием обмена сообщениями интегральная среда быстрой разработки параллельных приложений стандарт программного интерфейса приложений для параллельных систем с общей памятью стандарт POSIX реализации потоков (нитей) выполнения, определяющий API для создания и управления ими
Что такое Intel® TBB?
стандарт разработки параллельных алгоритмов библиотека шаблонов параллельных алгоритмов и контейнеров на языке С++ стандарт реализации параллельных приложений с использованием обмена сообщениями интегральная среда быстрой разработки параллельных приложений стандартная библиотека математических вычислений
Какие технологии поддерживают пошаговое распараллеливание?
OpenMP MPI Intel® Cilk™ Plus
MPI и Intel® Cilk™ Plus используют одну модель параллелизма. Правильно ли это утверждение?
нет да
Какие технологии многопоточного параллелизма являются альтернативой Intel® Cilk™ Plus ?
OpenMPI MPI альтернатив нет OpenMP OpenCL
Какую модель параллелизма поддерживает Intel® Cilk™ Plus?
параллелизм потоков параллелизм задач параллелизм заданий
Может ли программист, использующий Intel® Cilk™ Plus явно указать способ распределения работы между потоками?
нет да
Какой метод диспетчеризации задач используется в Intel® Cilk™ Plus?
метод захвата задач динамическое распределение задач по ядрам процессора динамическое "управляемое" распределение задач по ядрам процессора статическое распределение задач по ядрам процессора
Верно ли, что OpenMP и Intel® Cilk™ Plus используют одну модель параллелизма?
да нет
Сохраняет ли Cilk последовательную семантику программ?
нет да
Какое свойство Cilk-программы позволяет оптимизировать диспетчеризация методом захвата работы?
динамическую балансировку кэш-эффективности объём занимаемой памяти
В каком случае зависимость ускорения от числа потоков близка к линейной?
когда в программе не используются операторы cilk_sync когда степень параллелизма вычислительной системы достаточно велика когда степень параллелизма вычислительной системы недостаточно велика
Какой модификацией исходного кода можно сериализовать выполнение Cilk-программы?
заменой всех операторов cilk_spawn на cilk_stub заменой заголовочного файла с cilk.h на cilk_stub.h
Как с помощью компилятора (Windows) можно сериализовать выполнение Cilk-программы?
с помощью ключа /Qcilk-serialize с помощью ключа /Qserialize это действие невозможно
Как с помощью компилятора (Linux) можно сериализовать выполнение Cilk-программы?
это действие невозможно с помощью ключа --serialize с помощью ключа -cilk-serialize
Какая технология позволяет реализовать "пульсирующий параллелизм"?
MPI OpenMP PVM
Можно ли с помощью Intel® Cilk™ Plus разрабатывать приложения для гибридных вычислительных систем?
нет да
Как в среде Microsoft Visual Studio можно сериализовать выполнение Cilk-программы?
Keywords значением Serial Equivalent это действие невозможно с помощью замены Properties C/C++ Language [Intel C++] Replace Intel Cilk Plus
При разработке многопоточных приложений возникают следующие проблемы:
только "обычные" проблемы последовательного программирования несбалансированность загрузки блокировки гонки за данными
Что является общим у разных потоков одного процесса?
стек сегмент кода сегмент данных
Какой параллелизм реализуется при выполнении параллельной программы на последовательной вычислительной системе?
реальный параллельная программа не может выполняться на последовательной вычислительной системе видимый (мнимый)
Средства борьбы с гонками за данными:
использование преимущественно локальных по отношению к потоку, а не разделяемых переменных управление доступом к разделяемым переменным с помощью различных средств синхронизации
Условия возникновения тупика в многопоточных программах:
ни один из конкурирующих потоков не может освободить запрашиваемый ресурс поток может удерживать ресурс, запрашивая другой доступ к ресурсу эксклюзивен
Выполнение какого условия обеспечивает оптимальную эффективность многопоточной программы?
число программных потоков равно числу аппаратных потоков число программных потоков должно быть меньше числа аппаратных потоков число программных потоков должно быть больше числа аппаратных потоков
Intel® Cilk™ Plus ориентирован на системы с распределённой памятью. Правильно ли это утверждение?
да нет
Какая архитектура является целевой для Cilk-программ?
гибридные системы вычислительные системы с общей памятью вычислительные системы с распределённой памятью
Поддерживает ли Intel® Cilk™ Plus компилятор icl?
нет да (все версии) да (начиная с версии 12.0)
Всегда ли программа на Cilk выполняется в параллельном режиме?
всегда никогда нет, только если есть свободные рабочие потоки
В каком случае программа на Cilk будет выполняться в последовательном режиме?
если нет свободных рабочих потоков Cilk-программа может выполняться только параллельно
С какой средой разработки совместим Intel® Cilk™ Plus в операционной системе MacOS?
такой среды нет, Intel® Cilk™ Plus несовместим с MacOS Lion Mac Eclipse
С какой средой разработки совместим Intel® Cilk™ Plus в операционной системе Microsoft Windows?
Microsoft Visual Studio Delphi
Позволяет ли Intel® Trace Collector собирать статистику выполнения Cilk-программы?
да нет
Является ли архитектура Many-Integrated-Core целевой для Intel® Cilk™ Plus?
нет да
Как решается проблема сбалансированной загрузки ядер в Intel® Cilk™ Plus?
системой исполнения, использующей метод захвата работы компиляцией с соответствующими ключами
Поддерживает ли компилятор GCC версии 4.2 Intel® Cilk™ Plus?
нет да
Может ли программист, использующий Intel® Cilk™ Plus явно указать способ распределения работы между потоками?
да нет
Могут ли разные потоки иметь общее адресное пространство?
нет да
Могут ли разные процессы иметь общее адресное пространство?
нет да
Intel® Cilk™ Plus поддерживает векторный параллелизм и параллелизм задач.
нет да
Intel® Cilk™ Plus можно применять совместно с MPI. Правильно ли это утверждение?
нет да
Intel® Cilk™ Plus ориентирован на системы с общей памятью. Правильно ли это утверждение?
да нет
Intel® Cilk™ Plus можно использовать для программирования вычислений на графических процессорах. Правильно ли это утверждение?
нет да
Имеется следующий фрагмент кода:
cilk_init(); cilk_spawn f() … cilk_sync
В чём состоит ошибка программиста?
в использовании несуществующей конструкции cilk_init в неправильной последовательности ключевых слов в данном контексте нельзя использовать cilk_spawn
Для чего предназначена функция __cilkrts_get_nworkers()?
для определения идентификатора исполнителя для определения количества исполнителей
Можно ли избавиться от гонки за данными изменением алгоритма вычислений?
да нет
Для чего предназначена функция __cilkrts_get_total_workers()?
для определения суммарного числа активных слотов ID для определения суммарного числа слотов ID, в том числе и тех, которые являются неактивными
Для чего предназначена функция __cilkrts_set_param()?
для задания параметров исполнения Cilk-программы для задания параметров гиперобъекта для задания параметров исполнения заданного потока
Может ли гонка за данными не влиять на результат работы программы?
нет да
Как влияют блокировки на степень параллелизма программы?
увеличивают уменьшают
Для чего предназначена функция __cilkrts_get_worker_number()?
для определения идентификатора исполнителя для определения количества исполнителей
Каким должен быть размер (в смысле вычислительной сложности) порождённых задач для достижения наибольшей эффективности Cilk-программ?
достаточно маленьким достаточно большим
Почему небольшой (в смысле вычислительной сложности) размер порождённых задач снижает эффективность Cilk-программы?
увеличивается доля накладных расходов на создание порождённых задач в этом случае плохо работает алгоритм диспетчеризации
Что происходит, если очередь порождённых задач на каком-либо процессоре (ядре) оказывается пустой?
происходит аварийное завершение работы происходит захват задачи из очереди другого процессора (ядра)
Какие из нижеперечисленных являются ключевыми словами Intel® Cilk™ Plus?
Какие из нижеперечисленных являются ключевыми словами 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?
да нет
Intel® Cilk™ Plus одновременно поддерживает векторный параллелизм и параллелизм типа fork-join.
нет да
Является ли 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
Каким будет результат, если задать отрицательное значение "зернистость" распараллеливания цикла?
результат не определён будет использоваться значение по умолчанию 1
Что будет происходить, если "зернистость" распараллеливания цикла в Cilk-программе задана следующим образом: #pragma cilk grainsize = n/(4*__cilkrts_get_nworkers())?
такая конструкция недопустима "Зернистость" распараллеливания цикла определяется в соответствии с числом исполнителей
Вы можете обратится к нам напрямую, через:
По Skype: molodoyberkut По Telegram: @MolodoyBerkut По ICQ: 657089516