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

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

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

Ответ:

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

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

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

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


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

Ответ:

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

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

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

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


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

Ответ:

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

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

 (3) одновременном доступе из разных потоков к разным переменным 


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

Ответ:

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

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

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


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

Ответ:

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

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

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


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

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


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

Ответ:

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

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

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


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

Ответ:

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

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

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


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

Ответ:

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

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

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


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

Ответ:

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

 (2) мьютекс 

 (3) массив 


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

Ответ:

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

 (2) мьютекс 

 (3) массив 


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

Ответ:

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

 (2) мьютекс 

 (3) массив 


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

Ответ:

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

 (2) мьютекс 

 (3) массив 


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

Ответ:

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

 (2) мьютекс 

 (3) массив 


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

Ответ:

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

 (2) мьютекс 

 (3) массив 


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

Ответ:

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

 (2) мьютекс 

 (3) массив 


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

Ответ:

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

 (2) мьютекс 

 (3) массив 


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

Ответ:

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

 (2) мьютекс 

 (3) массив 


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

Ответ:

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

 (2) мьютекс 

 (3) массив 


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

Ответ:

 (1) да 

 (2) нет 


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

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


Ответ:

 (1)

 (2)

 (3)

 (4)


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

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


Ответ:

 (1)

 (2)

 (3)

 (4)


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


Номер 3
Имеется код
        
cilk::reducer_opadd<float> sum = 0;
...
cilk_for( size_t i=1; i<n; ++i ) 
    sum += f(i);
... = sum.get_value();   
        
        

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


Ответ:

 (1) каждый поток получит доступ к собственному "изображению" переменной sum 

 (2) каждый поток получит доступ к общей переменной sum 

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


Упражнение 10:
Номер 1
Переменная называется локальной, если:

Ответ:

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

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

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


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

Ответ:

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

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

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


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) reducer_min.h 

 (2) reducer.h 

 (3) cilk_reducer_min.h 


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

Ответ:

 (1)

 (2)

 (3)

 (4) 15 


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

Ответ:

 (1) reducer_opadd.h 

 (2) reducer.h 

 (3) cilk_opadd.h 

 (4) cilk.h 


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


Номер 3
Имеется код
        
cilk::reducer_opadd<float> sum;
void f( int m ) {
    sum += m;
}
float g() {
    cilk_spawn f(1);
    f(2);
    cilk_sync;
    return xxx;
}
        
        

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


Ответ:

 (1) sum.get_value() 

 (2)

 (3) ничего 


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

Ответ:

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

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

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


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

Ответ:

 (1) __sec_reduce_add(a[:]) 

 (2) __sec_add(a[:]) 

 (3) __sec_reduce(a[:]) 


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

Ответ:

 (1) да 

 (2) нет 


Упражнение 15:
Номер 1
Является ли cilk::private гиперобъектом?

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) reducer_list_append 

 (2) reducer_list_add 

 (3) reducer_add 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

 (1) да 

 (2) нет 


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

Ответ:

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

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


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

Ответ:

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

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

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


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

Ответ:

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

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


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

Ответ:

 (1) улучшает 

 (2) ухудшает 

 (3) не влияет 


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

Ответ:

 (1) reducer_opor 

 (2) reducer_or 

 (3) reducer_xor 

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


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

Ответ:

 (1) reducer_opand 

 (2) reducer_and 

 (3) reducer_or 

 (4) reducer_xor 

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


Упражнение 19:
Номер 1
Какой редуктор соответствует операции логического исключающего ИЛИ?

Ответ:

 (1) reducer_opxor 

 (2) reducer_opand 

 (3) reducer_or 

 (4) reducer_xor 

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


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

Ответ:

 (1) reducer_basic_string 

 (2) reducer_string 

 (3) reducer_basic 

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


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

Ответ:

 (1) reducer_ostream 

 (2) reducer_stream 

 (3) stream 




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