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

Cilk - тест 1

Упражнение 1:
Номер 1
Что такое Intel® Cilk™ Plus?

Ответ:

 (1) расширение C/C++ для разработки параллельных приложений 

 (2) расширение C/C++ для разработки приложений для графических процессоров 

 (3) программный инструмент динамического анализа приложений 

 (4) программный инструмент анализа безопасности приложений 

 (5) программный инструмент отладки параллельных MPI-приложений 


Номер 2
Поддерживает ли Intel® Cilk™ Plus языки C/C++?

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


Номер 4
Поддерживает ли Intel® Cilk™ Plus языки Java?

Ответ:

 (1) да 

 (2) нет 


Номер 5
Поддерживает ли MPI многопоточный параллелизм?

Ответ:

 (1) да, в спецификации 2.x 

 (2) да, во, всех спецификациях 

 (3) нет 


Номер 6
Увеличение производительности вычислений позволяет:

Ответ:

 (1) решать новые, более сложные задачи 

 (2) решать старые задачи, но быстрее 

 (3) решать старые задачи, но с более высокой точностью 


Номер 7
Действительно ли RISC-архитектура основана на параллелизме?

Ответ:

 (1) да 

 (2) нет 


Номер 8
Действительно ли VLIW-архитектура основана на параллелизме?

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


Номер 10
Что такое архитектура MIC?

Ответ:

 (1) Many Integrated Core architecture 

 (2) Message Intermittance Computing architecture 

 (3) Medium Intel Computing architecture 


Упражнение 2:
Номер 1
К IPC относятся:

Ответ:

 (1) именованные каналы 

 (2) обмен с помощью сообщений 

 (3) семафоры 

 (4) сокеты 

 (5) обмен через общую память 

 (6) OpenMP 

 (7) MPI 


Номер 2
Что такое POSIX Threads?

Ответ:

 (1) стандарт POSIX реализации потоков (нитей) выполнения, определяющий API для создания и управления ими 

 (2) стандарт реализации параллельных приложений с использованием обмена сообщениями интегральная среда быстрой разработки параллельных приложений 


Номер 3
Что такое OpenMP?

Ответ:

 (1) стандарт программного интерфейса приложений для параллельных систем с общей памятью стандарт POSIX реализации потоков (нитей) выполнения, определяющий API для создания и управления ими  

 (2) стандарт реализации параллельных приложений с использованием обмена сообщениями интегральная среда быстрой разработки параллельных приложений  


Номер 4
Что такое Intel® TBB?

Ответ:

 (1) библиотека шаблонов параллельных алгоритмов и контейнеров на языке С++ 

 (2) стандарт реализации параллельных приложений с использованием обмена сообщениями интегральная среда быстрой разработки параллельных приложений  


Номер 5
Высокоуровневыми инструментами многопоточного программирования являются:

Ответ:

 (1) OpenMP 

 (2) OpenCL 

 (3) Intel® Cilk™ Plus 

 (4) POSIX Threads 

 (5) Windows API 


Номер 6
Низкоуровневыми инструментами многопоточного программирования являются:

Ответ:

 (1) OpenMP 

 (2) OpenCL 

 (3) Intel® Cilk™ Plus 

 (4) POSIX Threads 

 (5) Windows API 


Номер 7
OpenMP-программа состоит из:

Ответ:

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

 (2) вызовов функций обмена сообщениями  


Номер 8
Какое действие выполняет операция join?

Ответ:

 (1) объединение потоков 

 (2) завершение выполнения параллельной программы 

 (3) порождение потоков 


Номер 9
Какой идентификатор имеет мастер-поток в OpenMP-программе?

Ответ:

 (1)

 (2)

 (3)

 (4) 100 


Номер 10
Какие технологии поддерживают пошаговое распараллеливание?

Ответ:

 (1) OpenMP 

 (2) Intel® Cilk™ Plus 

 (3) MPI 


Упражнение 3:
Номер 1
Из каких компонентов состоит OpenMP?

Ответ:

 (1) директивы компилятору 

 (2) подпрограммы 

 (3) переменные окружения 

 (4) утилит мониторинга OpenMP-программ 


Номер 2
Какой формат директив OpenMP является правильным?

Ответ:

 (1) #pragma omp директива [оператор_1[, оператор_2, :]] 

 (2) #pragma директива [оператор_1[, оператор_2, :]] 

 (3) #omp директива [оператор_1[, оператор_2, :]] 

 (4) #pragma omp директива 


Номер 3
Какой заголовочный файл используется в OpenMP-программах?

Ответ:

 (1) omp.h 

 (2) parallel.h 

 (3) threads.h 


Номер 4
Какую модель параллелизма поддерживает Intel® Cilk™ Plus?

Ответ:

 (1) параллелизм потоков 

 (2) параллелизм задач 

 (3) параллелизм заданий 


Номер 5
Какие технологии многопоточного параллелизма являются альтернативой Intel®  Cilk™ Plus ?

Ответ:

 (1) OpenMP 

 (2) альтернатив нет 

 (3) OpenCL 

 (4) MPI 

 (5) OpenMPI 


Номер 6
MPI и Intel® Cilk™ Plus используют одну модель параллелизма. Правильно ли это утверждение?

Ответ:

 (1) да 

 (2) нет 


Номер 7
OpenMP и Intel® Cilk™ Plus используют сходные модели параллелизма. Правильно ли это утверждение?

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) метод захвата задач 

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

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

 (4) динамическое "управляемое" распределение задач по ядрам процессора 


Номер 9
Что происходит, если очередь порождённых задач на каком-либо процессоре (ядре) оказывается пустой?

Ответ:

 (1) происходит захват задачи из очереди другого процессора (ядра) 

 (2) происходит аварийное завершение работы 


Номер 10
В каком случае зависимость ускорения от числа потоков близка к линейной?

Ответ:

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

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

 (3) когда в программе не используются операторы cilk_sync 


Упражнение 4:
Номер 1
Какое свойство Cilk-программы позволяет оптимизировать диспетчеризация методом захвата работы?

Ответ:

 (1) динамическую балансировку 

 (2) объём занимаемой памяти 

 (3) кэш-эффективности 


Номер 2
Сохраняет ли Cilk последовательную семантику программ?

Ответ:

 (1) да 

 (2) нет 


Номер 3
Какой модификацией исходного кода можно сериализовать выполнение Cilk-программы?

Ответ:

 (1) заменой заголовочного файла с cilk.h на cilk_stub.h 

 (2) заменой всех операторов cilk_spawn на cilk_stub 


Номер 4
Как с помощью компилятора (Linux) можно сериализовать выполнение Cilk-программы?

Ответ:

 (1) с помощью ключа -cilk-serialize 

 (2) с помощью ключа --serialize 

 (3) это действие невозможно 


Номер 5
Как с помощью компилятора (Windows) можно сериализовать выполнение Cilk-программы?

Ответ:

 (1) с помощью ключа /Qcilk-serialize 

 (2) с помощью ключа /Qserialize 

 (3) это действие невозможно 


Номер 6
Как в среде Microsoft Visual Studio можно сериализовать выполнение Cilk-программы?

Ответ:

 (1) с помощью замены Properties C/C++ Language [Intel C++] Replace Intel Cilk Plus 

 (2) Keywords значением Serial Equivalent 

 (3) это действие невозможно 


Номер 7
Можно ли с помощью Intel® Cilk™ Plus разрабатывать приложения для гибридных вычислительных систем?

Ответ:

 (1) да 

 (2) нет 


Номер 8
Какая технология позволяет реализовать "пульсирующий параллелизм"?

Ответ:

 (1) OpenMP 

 (2) MPI 

 (3) PVM 


Номер 9
Что является общим у разных потоков одного процесса?

Ответ:

 (1) стек 

 (2) сегмент кода 

 (3) сегмент данных 


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

Ответ:

 (1) видимый (мнимый) 

 (2) реальный 

 (3) параллельная программа не может выполняться на последовательной вычислительной системе 


Упражнение 5:
Номер 1
При разработке многопоточных приложений возникают следующие проблемы:

Ответ:

 (1) гонки за данными 

 (2) блокировки 

 (3) несбалансированность загрузки 

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


Номер 2
Средства борьбы с гонками за данными:

Ответ:

 (1) использование преимущественно локальных по отношению к потоку, а не разделяемых переменных 

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


Номер 3
Условия возникновения тупика в многопоточных программах:

Ответ:

 (1) доступ к ресурсу эксклюзивен 

 (2) поток может удерживать ресурс, запрашивая другой 

 (3) ни один из конкурирующих потоков не может освободить запрашиваемый ресурс 


Номер 4
Выполнение какого условия обеспечивает оптимальную эффективность многопоточной программы?

Ответ:

 (1) число программных потоков равно числу аппаратных потоков 

 (2) число программных потоков должно быть меньше числа аппаратных потоков 

 (3) число программных потоков должно быть больше числа аппаратных потоков 


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

Ответ:

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

 (2) нет 

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


Номер 6
Какая архитектура является целевой для Cilk-программ?

Ответ:

 (1) вычислительные системы с общей памятью 

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

 (3) гибридные системы 


Номер 7
Intel® Cilk™ Plus ориентирован на системы с распределённой памятью. Правильно ли это утверждение?

Ответ:

 (1) да 

 (2) нет 


Номер 8
В каком случае программа на Cilk будет выполняться в последовательном режиме?

Ответ:

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

 (2) Cilk-программа может выполняться только параллельно 


Номер 9
Всегда ли программа на Cilk выполняется в параллельном режиме?

Ответ:

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

 (2) всегда 

 (3) никогда 


Номер 10
С какой средой разработки совместим Intel® Cilk™ Plus в операционной системе MacOS?

Ответ:

 (1) такой среды нет, Intel® Cilk™ Plus несовместим с MacOS 

 (2) Lion Mac 

 (3) Eclipse 


Упражнение 6:
Номер 1
С какой средой разработки совместим Intel® Cilk™ Plus в операционной системе Microsoft Windows?

Ответ:

 (1) Microsoft Visual Studio 

 (2) Delphi 


Номер 2
Позволяет ли Intel® Trace Collector собирать статистику выполнения Cilk-программы?

Ответ:

 (1) да 

 (2) нет 


Номер 3
Является ли архитектура Many-Integrated-Core целевой для Intel® Cilk™ Plus?

Ответ:

 (1) да 

 (2) нет 


Номер 4
Может ли программист, использующий Intel® Cilk™ Plus явно указать способ распределения работы между потоками?

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) системой исполнения, использующей метод захвата работы 

 (2) компиляцией с соответствующими ключами 


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

Ответ:

 (1) да 

 (2) нет 


Номер 8
Могут ли разные процессы иметь общее адресное пространство?

Ответ:

 (1) да 

 (2) нет 


Номер 9
Могут ли разные потоки иметь общее адресное пространство?

Ответ:

 (1) да 

 (2) нет 


Номер 10
Intel® Cilk™ Plus ориентирован на системы с общей памятью. Правильно ли это утверждение?

Ответ:

 (1) да 

 (2) нет 


Упражнение 7:
Номер 1
Intel® Cilk™ Plus можно применять совместно с MPI. Правильно ли это утверждение?

Ответ:

 (1) да 

 (2) нет 


Номер 2
Intel® Cilk™ Plus можно использовать для программирования вычислений на графических процессорах. Правильно ли это утверждение?

Ответ:

 (1) да 

 (2) нет 


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

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


Ответ:

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

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

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


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

Ответ:

 (1) для определения идентификатора исполнителя 

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


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

Ответ:

 (1) для определения идентификатора исполнителя 

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


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

Ответ:

 (1) для задания параметров исполнения Cilk-программы 

 (2) для задания параметров гиперобъекта 

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


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

Ответ:

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

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


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


Номер 10
Как влияют блокировки на степень параллелизма программы?

Ответ:

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

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


Упражнение 8:
Номер 1
Каким должен быть размер (в смысле вычислительной сложности) порождённых задач для достижения наибольшей эффективности Cilk-программ?

Ответ:

 (1) достаточно большим 

 (2) достаточно маленьким 


Номер 2
Почему небольшой (в смысле вычислительной сложности) размер порождённых задач снижает эффективность Cilk-программы?

Ответ:

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

 (2) в этом случае плохо работает алгоритм диспетчеризации 


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

Ответ:

 (1) cilk_spawn 

 (2) cilk_init 

 (3) cilk_open 

 (4) cilk_start 

 (5) cilk_send 


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

Ответ:

 (1) cilk_for 

 (2) cilk_init 

 (3) cilk_open 

 (4) cilk_start 

 (5) cilk_send 


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

Ответ:

 (1) cilk_sync 

 (2) cilk_init 

 (3) cilk_open 

 (4) cilk_open 

 (5) cilk_send 


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

Ответ:

 (1) grainsize 

 (2) cilk_init 

 (3) cilk_open 

 (4) cilk_open 

 (5) cilk_send 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

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

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

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


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

Ответ:

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

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

 (3) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

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

 (3) нет 


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

Ответ:

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

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

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


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

Ответ:

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

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

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


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

Ответ:

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

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

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


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

Ответ:

 (1) cilk_for 

 (2) cilk_sync 

 (3) cilk_spawn 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

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

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


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

Ответ:

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

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

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


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

Ответ:

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

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


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

Ответ:

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

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


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

Ответ:

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

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


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

Ответ:

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

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


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

Ответ:

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

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

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


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

Ответ:

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

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


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

Ответ:

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

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


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

Ответ:

 (1) runtime система 

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

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


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

Ответ:

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

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

 (3) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

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

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


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

Ответ:

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

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

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


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

Ответ:

 (1) 1) 

 (2) 2) 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

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


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

Ответ:

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

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

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

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


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

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

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


Упражнение 13:
Номер 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) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

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

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


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

Ответ:

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

 (2) да 


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

Ответ:

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

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

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


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 

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


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 

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


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

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

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


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

Ответ:

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

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


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

Ответ:

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

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


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

Ответ:

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

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

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


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

Ответ:

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

 (2)

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


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

Ответ:

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

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

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


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

Ответ:

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

 (2)

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


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

Ответ:

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

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


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

Ответ:

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

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

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

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


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

Ответ:

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

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


Номер 8
Что такое редуктор?

Ответ:

 (1) "Безопасная" реализация глобальной переменной в Cilk-программах 

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

 (3) операция редукции 

 (4) локальная переменная в Cilk-программе 


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

Ответ:

 (1) редукторы 

 (2) параллели 

 (3) кондукторы 

 (4) таких переменных в Intel® Cilk™ Plus нет 


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

Ответ:

 (1) утрата детерминизма в поведении программы 

 (2) утрата корректности  

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


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

Ответ:

 (1) синхронизацию доступа 

 (2) гиперобъекты Cilk 

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


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) ассоциативных 

 (2) коммутативных 


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

Ответ:

 (1) экземпляр переменной 

 (2) имя переменной 

 (3) значение переменной 


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

Ответ:

 (1) при объединении потоков 

 (2) каждые 5 секунд 

 (3) в точке, заданной специальным оператором 


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

Ответ:

 (1) для выявления гонок за данными 

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

 (3) такой утилиты нет 


Номер 8
Что такое cilk::reducer?

Ответ:

 (1) гиперобъект 

 (2) мьютекс 

 (3) массив 


Номер 9
Что такое reducer_list_append?

Ответ:

 (1) гиперобъект 

 (2) мьютекс 

 (3) массив 


Номер 10
Что такое reducer_list_prepend?

Ответ:

 (1) гиперобъект 

 (2) мьютекс 

 (3) массив 


Упражнение 17:
Номер 1
Что такое reducer_max?

Ответ:

 (1) гиперобъект 

 (2) мьютекс 

 (3) массив 


Номер 2
Что такое reducer_max_index?

Ответ:

 (1) гиперобъект 

 (2) мьютекс 

 (3) массив 


Номер 3
Что такое reducer_min?

Ответ:

 (1) гиперобъект 

 (2) мьютекс 

 (3) массив 


Номер 4
Что такое reducer_min_index?

Ответ:

 (1) гиперобъект 

 (2) мьютекс 

 (3) массив 


Номер 5
Что такое reducer_opadd?

Ответ:

 (1) гиперобъект 

 (2) мьютекс 

 (3) массив 


Номер 6
Что такое reducer_ostream?

Ответ:

 (1) гиперобъект 

 (2) мьютекс 

 (3) массив 


Номер 7
Что такое reducer_basic_string?

Ответ:

 (1) гиперобъект 

 (2) мьютекс 

 (3) массив 


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

Ответ:

 (1) да 

 (2) нет 


Номер 9
Имеется следующий код:
        
cilk::reducer_opadd<int> sum(3);
void f()
{cilk_spawn g(); sum += 2; cilk_sync;}
void g()
{sum++;}        
        
        

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


Ответ:

 (1)

 (2)

 (3)

 (4)


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


Номер 2
Имеется код
        
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 доступна только из мастер-потока 


Номер 3
Переменная называется локальной, если:

Ответ:

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

 (2) область видимости переменной не ограничена 

 (3) переменная не является массивом 


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

Ответ:

 (1) область видимости переменной совпадает со всей программой 

 (2) область видимости переменной не совпадает со всей программой 

 (3) переменная является массивом или структурой 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) reducer_min.h 

 (2) reducer.h 

 (3) cilk_reducer_min.h 


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

Ответ:

 (1)

 (2)

 (3)

 (4) 15 


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

Ответ:

 (1) reducer_opadd.h 

 (2) reducer.h 

 (3) cilk_opadd.h 

 (4) cilk.h 


Номер 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)

 (3) result_of_op 


Номер 4
Имеется код
        
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)

 (3) ничего 


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

Ответ:

 (1) редукторы 

 (2) векторизацию с помощью прагмы simd 

 (3) расширенную векторную нотацию 


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

Ответ:

 (1) __sec_reduce_add(a[:]) 

 (2) __sec_add(a[:]) 

 (3) __sec_reduce(a[:]) 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) reducer_list_append 

 (2) reducer_list_add 

 (3) reducer_add 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) возвращает значение редуктора 

 (2) инициализирует редуктор 


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

Ответ:

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

 (2) класс View; класс Monoid 

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


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

Ответ:

 (1) Как обычная переменная 

 (2) Поведение редуктора в этом случае не определено 


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

Ответ:

 (1) улучшает 

 (2) ухудшает 

 (3) не влияет 


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

Ответ:

 (1) reducer_opor 

 (2) reducer_or 

 (3) reducer_xor 

 (4) такого редуктора нет 


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

Ответ:

 (1) reducer_opand 

 (2) reducer_and 

 (3) reducer_or 

 (4) reducer_xor 

 (5) такого редуктора нет 


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

Ответ:

 (1) reducer_opxor 

 (2) reducer_opand 

 (3) reducer_or 

 (4) reducer_xor 

 (5) такого редуктора нет 


Упражнение 21:
Номер 1
Какой редуктор соответствует операции конкатенации строк?

Ответ:

 (1) reducer_basic_string 

 (2) reducer_string 

 (3) reducer_basic 

 (4) такого редуктора нет 


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

Ответ:

 (1) reducer_ostream 

 (2) reducer_stream 

 (3) stream 


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

Ответ:

 (1) операции в расширенной индексной нотации эффективно векторизуются компилятором 

 (2) выигрыша в эффективности нет, нотация используется для удобства 

 (3) операции в расширенной индексной нотации заменяются компилятором вызовами функций MPI 

 (4) операции в расширенной индексной нотации заменяются компилятором вызовами функций 

 (5) OpenMP 


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

Ответ:

 (1) количество элементов в сечении массива 

 (2) максимальное значение индекса 

 (3) шаг изменения индекса 


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

Ответ:

 (1) начальное значение индекса 

 (2) количество элементов в сечении массива 

 (3) максимальное значение индекса 

 (4) шаг изменения индекса 


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

Ответ:

 (1) начальное значение индекса 

 (2) количество элементов в сечении массива 

 (3) максимальное значение индекса 

 (4) шаг изменения индекса 


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

Ответ:

 (1) все элементы массива 

 (2) динамический массив 

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


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

Ответ:

 (1) элементы массива b с 13 по 57 

 (2) элементы массива b[13] и b[57] 

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


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

Ответ:

 (1) все элементы массива b 

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

 (3) первый элемент массива b 


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

Ответ:

 (1) 5 столбец матрицы b 

 (2) 5 строку матрицы b 

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

 (4) 5-й элемент одномерного массива b 


Упражнение 22:
Номер 1
Что означает запись b[1:3:4]?

Ответ:

 (1) элементы b[1], b[5], b[9] массива 

 (2) элементы b[1], b[4], b[8], b[11] массива 

 (3) первый элемент квадратной 3x3 матрицы b 

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


Номер 2
Что означает запись 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 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

 (2) Да 

 (3) Нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) поэлементное умножение массивов a и b 

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

 (3) умножение первых элементов a и b 


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

Ответ:

 (1) сложение двух матриц 2x2 

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


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

 (2) поэлементная сумма массивов a и b 

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


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) линейный сдвиг массива 

 (2) циклический сдвиг массива 

 (3) такой функции нет 


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

Ответ:

 (1) линейный сдвиг массива 

 (2) циклический сдвиг массива 

 (3) такой функции нетт 


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

Ответ:

 (1) SSE 

 (2) AVX 

 (3) MIMD 

 (4) SIMD 


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

Ответ:

 (1) массив 

 (2) скалярная переменная 

 (3) структура 


Упражнение 24:
Номер 1
Что означает запись a[17:3:2]?

Ответ:

 (1) элементы массива a[17], a[19], a[21] 

 (2) элементы массива a[17], a[20] 

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


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 

 (3) только + и - 


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

Ответ:

 (1) да 

 (2) нет 

 (3) только = = и != 


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

Ответ:

 (1) да 

 (2) нет 

 (3) только  


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

Ответ:

 (1) да 

 (2) нет 

 (3) только += и -= 

 (4) только ++ 


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

Ответ:

 (1) да 

 (2) нет 

 (3) только *= 

 (4) только /= 


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

Ответ:

 (1) параллельно 

 (2) последовательно 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

 (2) операции редукции 


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

Ответ:

 (1) __sec_rotate(a[:], shift_val) 

 (2) __sec_shift(a[:], shift_val) 

 (3) такой функции нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) Фактический и формальный аргументы должны быть согласованы 

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


Номер 8
Какое действие выполняет следующий оператор: 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) 


Номер 9
Имеется следующий фрагмент программы:
        
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) такая конструкция недопустима 


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

Ответ:

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

 (2) да 

 (3) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

 (2) реализации элементарных математических функций 

 (3) скалярные математические функции 


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

Ответ:

 (1) подсказка компилятору выполнить векторизацию тех фрагментов кода, которые необходимо векторизовать 

 (2) подсказка компилятору выполнить OpenMP-распараллеливание тех фрагментов кода, которые необходимо векторизовать 

 (3) такой директивы в Intel® Cilk™ Plus нет 


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

Ответ:

 (1) функция, которая формирует результат вычисления скалярной функции для каждого элемента массива-аргумента 

 (2) таких функций в Intel® Cilk™ Plus нет 


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

Ответ:

 (1) сечение массива, конформного b 

 (2) простую переменную 

 (3) любой массив 


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

Ответ:

 (1) массив b[:]**c 

 (2) степень с суммы элементов массива b 

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

 (4) массив c**b[:] 


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

Ответ:

 (1) массив b[:]**c 

 (2) степень с суммы элементов массива b 

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

 (4) массив c**b[:] 


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

Ответ:

 (1) компилятор генерирует обращения к векторизованным функциям 

 (2) параллельный OpenMP-код 

 (3) параллельный код с использованием MPI 


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

Ответ:

 (1) нет 

 (2) да 


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

Ответ:

 (1) нет 

 (2) да 


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

Ответ:

 (1) нет 

 (2) да 


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

Ответ:

 (1) нет 

 (2) да 


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

Ответ:

 (1) нет 

 (2) да 


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

Ответ:

 (1) нет 

 (2) да 


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

Ответ:

 (1) нет 

 (2) да 


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

Ответ:

 (1) нет 

 (2) да 


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

Ответ:

 (1) нет 

 (2) да 


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

Ответ:

 (1) нет 

 (2) да 


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

Ответ:

 (1) нет 

 (2) да 


Упражнение 28:
Номер 1
ЯДопускается ли использование указателей на функции в элементных функциях?

Ответ:

 (1) нет 

 (2) да 


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

Ответ:

 (1) скалярное значение 

 (2) массив 

 (3) сечение массива 


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

Ответ:

 (1) массив 

 (2) сечение массива 

 (3) скалярное значение 

 (4) функция 


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

Ответ:

 (1) суммирование элементов массива a 

 (2) перемножение элементов массива a 

 (3) такой функции нет 


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

Ответ:

 (1) редукция массива a с помощью функции f 

 (2) суммирование элементов массива a 

 (3) перемножение элементов массива a 

 (4) такой функции нет 


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

Ответ:

 (1) add 

 (2) mul 

 (3) sin 

 (4) cos 

 (5) pow 


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

Ответ:

 (1) min_ind 

 (2) all_zero 

 (3) mul 

 (4) sin 

 (5) cos 

 (6) pow 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) в последовательном 

 (2) в параллельном 


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

Ответ:

 (1) да 

 (2) нет 


Упражнение 29:
Номер 1
Имеется следующий код:
        
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; 


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

Ответ:

 (1) расширенная векторная нотация 

 (2) использование элементных функций 

 (3) прагма SIMD 

 (4) замена арифметических операций функциями SSE 


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

Ответ:

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

 (2) для решения линейных уравнений 

 (3) для достижения линейной масштабируемости программы 


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

Ответ:

 (1) для описания переменной редукции 

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

 (3) такого оператора нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) расширенную векторную нотацию для массивов 

 (2) редукторы 

 (3) специальные ключи компиляции 


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

Ответ:

 (1) прагму SIMD 

 (2) редукторы 

 (3) специальные ключи компиляции 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) использовать соответствующую элементную функцию 

 (2) использовать цикл и "стандартную" функцию sin 


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

Ответ:

 (1) для определения идентификатора исполнителя 

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


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

Ответ:

 (1) для определения идентификатора исполнителя 

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


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

Ответ:

 (1) для задания параметров исполнения Cilk-программы 

 (2) для задания параметров гиперобъекта 

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


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

Ответ:

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

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


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

Ответ:

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

 (2) всегда 

 (3) такого заголовочного файла нет 


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

Ответ:

 (1) cilk_api.h 

 (2) api.h 

 (3) cilk.h 

 (4) никакой 


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

Ответ:

 (1)

 (2)

 (3)

 (4) 100 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 




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