игра брюс 2048
Главная / Программирование / Программирование на Intel Cilk Plus / Тест 1

Программирование на Intel Cilk Plus - тест 1

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

Ответ:

 (1) cilk_spawn 

 (2) cilk_init 

 (3) cilk_open 

 (4) cilk_start 

 (5) cilk_send 


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

Ответ:

 (1) cilk_for 

 (2) cilk_init 

 (3) cilk_open 

 (4) cilk_start 

 (5) cilk_send 


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

Ответ:

 (1) cilk_sync 

 (2) cilk_init 

 (3) cilk_open 

 (4) cilk_open 

 (5) cilk_send 


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

Ответ:

 (1) grainsize 

 (2) cilk_init 

 (3) cilk_open 

 (4) cilk_open 

 (5) cilk_send 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


Упражнение 3:
Номер 1
Является ли cilk_send допустимым ключевым словом Intel® Cilk™ Plus?

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


Упражнение 4:
Номер 1
Является ли cilk_spawn допустимым ключевым словом Intel® Cilk™ Plus?

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) векторизации кода 

 (2) оптимизации кода уровня O2 

 (3) распараллеливания кода с помощью OpenMP 

 (4) распараллеливания кода для графических процессоров 


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

Ответ:

 (1) да, начиная с версии 4.7 

 (2) да, любая версия 

 (3) нет 


Упражнение 5:
Номер 1
Поддерживает ли Intel® Cilk™ Plus компилятор ifort?

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

 (2) да (все версии) 

 (3) нет 


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

Ответ:

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

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

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


Упражнение 6:
Номер 1
Что такое "точка порождения"?

Ответ:

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

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

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


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

Ответ:

 (1) в этой точке выполнение задач синхронизуется 

 (2) в этой точке выполняется проверка корректности расчётов 

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


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

Ответ:

 (1) cilk_for 

 (2) cilk_sync 

 (3) cilk_spawn 


Упражнение 7:
Номер 1
Выполняется ли в конце параллельного цикла барьерная синхронизация?

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


Упражнение 8:
Номер 1
Являются ли переходы в тело цикла препятствием к распараллеливанию цикла?

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) задаёт гранулярность распараллеливания 

 (2) задаёт объём памяти 

 (3) задаёт размер кэш-памяти ядра 


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

Ответ:

 (1) замена заголовка цикла for на cilk_for 

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

 (3) в Intel® Cilk™ Plus циклы не распараллеливаются 


Упражнение 9:
Номер 1
В каком случае при диспетчеризации задач Cilk происходит захват работы?

Ответ:

 (1) если есть свободный рабочий поток 

 (2) в любом случае 


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

Ответ:

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

 (2) как параллельная программа 


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

Ответ:

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

 (2) добавить в соответствующем месте программы cilk_sync 


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

Ответ:

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

 (2) добавить в соответствующем месте программы cilk_sync 


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

Ответ:

 (1) как порождённая функция (потомок) 

 (2) как продолжение 

 (3) функция g() не выполняется 


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

Ответ:

 (1) как "продолжение" 

 (2) как потомок 


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

Ответ:

 (1) Функция, в которой находится оператор cilk_spawn 

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


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

Ответ:

 (1) runtime система 

 (2) брокер ресурсов Cilk 

 (3) сама программа 


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

Ответ:

 (1) да, если функция содержит cilk_spawn 

 (2) да, в любом случае 

 (3) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) export CILK_NWORKERS= количество исполнителей 

 (2) NWORKERS= количество исполнителей 

 (3) export CILK= количество исполнителей 


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

Ответ:

 (1) set CILK_NWORKERS= количество исполнителей 

 (2) set __NWORKERS= количество исполнителей 

 (3) set CILK_N= количество исполнителей 


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

Ответ:

 (1) 1) 

 (2) 2) 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


Упражнение 14:
Номер 1
Intel® Cilk™ Plus входит в состав среды разработки Delphi.

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


Номер 2
Intel® Cilk™ Plus одновременно поддерживает векторный параллелизм и параллелизм типа fork-join.

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) прагма игнорируется 

 (2) происходит сбой программы 


Упражнение 16:
Номер 1
В чём различие между Cilk™ Plus и Cilk™?

Ответ:

 (1) в использовании в Cilk™ Plus расширенной индексной нотации 

 (2) в использовании прагмы simd 

 (3) различия нет 

 (4) в наличии в Cilk™ Plus гиперобъектов 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) неправильный порядок cilk_spawn и cilk_syn 

 (2) используются несуществующие ключевые слова 

 (3) используются несуществующее ключевое слово 


Упражнение 17:
Номер 1
Имеется следующий фрагмент кода:
        
cilk_init();
cilk_spawn f()
…
cilk_sync
        
        

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


Ответ:

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

 (2) в неправильной последовательности ключевых слов 

 (3) в данном контексте нельзя использовать cilk_spawn 


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

Ответ:

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

 (2)

 (3) не определено 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

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

 (3) различия нет 


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

Ответ:

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

 (2) да 


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

Ответ:

 (1) половина работы отдаётся потомку, половина выполняется в режиме продолжения 

 (2) одна итерация отдаётся потомку, остальные выполняются в режиме продолжения 

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


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 

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


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


Упражнение 22:
Номер 1
Допускается ли использование оператора goto в цикле cilk_for?

Ответ:

 (1) да 

 (2) нет 

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


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

 (2) размер оперативной памяти компьютера 

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


Упражнение 23:
Номер 1
Как влияет на величину накладных расходов большое значение grainsize?

Ответ:

 (1) уменьшает 

 (2) увеличивает 


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

Ответ:

 (1) уменьшает 

 (2) увеличивает 


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

Ответ:

 (1) с помощью прагмы #pragma cilk grainsize = 1 

 (2) с помощью ключа компилятора 

 (3) с помощью переменной окружения 


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

Ответ:

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

 (2)

 (3) не определена 


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

Ответ:

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

 (2) "зернистость" будет нулевой 

 (3) "зернистость" будет равна 1 


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

Ответ:

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

 (2)

 (3) будет использоваться значение по умолчанию 


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

Ответ:

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

 (2) такая конструкция недопустима 


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

Ответ:

 (1) если объём вычислительной работы значительно меняется от итерации к итерации 

 (2) если объём вычислительной работы незначительно меняется от итерации к итерации 

 (3) в любом случае 

 (4) Не влияет в любом случае 


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

Ответ:

 (1) уменьшить 

 (2) увеличить 




Главная / Программирование / Программирование на Intel Cilk Plus / Тест 1