игра брюс 2048
Главная / Программирование / Параллельные вычисления и многопоточное программирование / Тест 7

Параллельные вычисления и многопоточное программирование - тест 7

Упражнение 1:
Номер 1
При распараллеливании цикла:

Ответ:

 (1) все итерации выполняются одновременно 

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

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

 (4) число параллельно выполняемых итераций зависит от числа свободных процессоров 

 (5) некоторые итерации выполняются параллельно, но порядок фиксирован – итерации с меньшими номерами выполняются раньше, чем итерации с большими номерами 


Номер 2
Что происходит при замене обычного цикла for на его аналог  Parallel.For?

Ответ:

 (1) возникает исключительная ситуация, если итерации цикла являются зависимыми 

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

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


Номер 3
Определить, являются ли итерации цикла независимыми, может:

Ответ:

 (1) программист 

 (2) компилятор языка C# 

 (3) JIT компилятор 

 (4) некоторые оптимизирующие компиляторы 


Упражнение 2:
Номер 1
Какой из операторов может встречаться только в итерации обычного цикла for, но не  Parallel.For?

Ответ:

 (1) Continue 

 (2) Break 

 (3) Stop 


Номер 2
Каких методов нет у класса Parallel?

Ответ:

 (1) Invoke 

 (2) ForEach 

 (3) Wait 

 (4) Task 


Номер 3
При распараллеливании цикла сложно:

Ответ:

 (1) заменить цикл for циклом Parallel.For 

 (2) оценить накладные расходы 

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


Упражнение 3:
Номер 1
Какие методы есть у класса Parallel?

Ответ:

 (1) For 

 (2) ForEach 

 (3) While 


Номер 2
Каких методов нет у класса Parallel?

Ответ:

 (1) Invoke 

 (2) ForEach 

 (3) Wait 

 (4) Task 


Номер 3
Какой из операторов может встречаться только в итерации цикла Parallel.For, но не  в обычном for?

Ответ:

 (1) Continue 

 (2) Break 

 (3) Stop 


Упражнение 4:
Номер 1
Отметьте высказывания, истинные по отношению к методу, реализующему тело цикла Parallel.For:

Ответ:

 (1) метод может не иметь параметров 

 (2) метод может иметь один параметр типа int, задающий номер выполняемой итерации 

 (3) метод может иметь два параметра, - номер выполняемой итерации и параметр типа ParallelLoopState, позволяющий управлять состоянием итерации 

 (4) метод может иметь два параметра, - номер выполняемой итерации и параметр типа ParallelLoopResult, позволяющий управлять состоянием итерации 


Номер 2
Метод For класса Parallel является:

Ответ:

 (1) статическим 

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

 (3) функцией 

 (4) процедурой 


Номер 3
Тело цикла Parallel.For:

Ответ:

 (1) должно быть методом, соответствующим делегату Action 

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

 (3) аналогично телу обычного цикла for может быть представлено обычным оператором языка C# 


Упражнение 5:
Номер 1
 Как узнать при выполнении Parallel.For номер минимальной итерации, на которой происходит прерывание цикла, инициируемое выполнением оператора (метода) Break?

Ответ:

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

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

 (3) следует вызвать метод Break как функцию, возвращающую в качестве результата номер минимальной итерации 

 (4) метод Parallel.For следует вызывать как функцию, что позволит, используя свойство LowestBreakIteration возвращаемого значения, определить номер минимальной итерации, на которой произошло прерывание 


Номер 2
Какие утверждения правильно описывают семантику выполнения метода Parallel.For:

Ответ:

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

 (2) если на одной или нескольких итераций параллельно выполняется метод Break, то выполнение всех запущенных итераций прерывается и метод Parallel.For завершает свою работу 

 (3) если на одной или нескольких итераций параллельно выполняется метод Break, то выполнение всех запущенных итераций продолжается. После завершения всех запущенных итераций метод Parallel.For завершает свою работу 

 (4) если на одной или нескольких итераций параллельно выполняется метод Break, то выполнение всех запущенных итераций продолжается. Всегда запускаются все итерации с номерами, меньшими минимального номера итерации, на которой произошло прерывание 


Номер 3
Отметьте высказывания, истинные по отношению к методу Parallel.For:

Ответ:

 (1) метод может вызываться как оператор 

 (2) метод может вызываться как функция 

 (3) значение, возвращаемое методом, имеет тип ParallelLoopState 

 (4) значение, возвращаемое методом, имеет тип ParallelLoopResult 


Упражнение 6:
Номер 1
Какие из следующих высказываний справедливы по отношению к распараллеливанию цикла while:

Ответ:

 (1) для распараллеливания цикла следует применить метод Parallel.While 

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

 (3) на практике цикл while почти всегда можно промоделировать циклом Parallel.For, введя дополнительное ограничение на максимально возможное число итераций 


Номер 2
Какие высказывания справедливы по отношению к методу Parallel.Invoke?

Ответ:

 (1) при вызове метода Parallel.Invoke ему можно передать список методов, которые могут выполняться параллельно в произвольном порядке 

 (2) все методы, передаваемые Parallel.Invoke, должны быть методами, определенными в одном и том же классе 

 (3) метод Parallel.For позволяет достаточно просто промоделировать метод Parallel.Invoke 


Номер 3
Отметьте высказывания, истинные по отношению к семантике двух методов Parallel.For и Parallel.ForEach:

Ответ:

 (1) семантика метода Parallel.ForEach близка к семантике метода Parallel.For в той же степени, как семантика обычного for близка к семантике обычного foreach. Методу, представляющему тело цикла, передается не произвольный номер итерации, а произвольный объект из коллекции, перебираемой в цикле 

 (2) семантики двух методов различаются в ситуации, когда на итерациях возникает прерывание цикла, инициированное выполнением метода Break. Различие связано с тем, что у метода Parallel.ForEach нет номера итерации 

 (3) семантики двух методов совпадают и в том случае, когда на итерациях возникает прерывание цикла, инициированное выполнением метода Break, для метода Parallel.ForEach используется внутренняя нумерация элементов коллекции 


Упражнение 7:
Номер 1
Какие утверждения справедливы по отношению исключений, выбрасываемых на итерациях циклов Parallel.For и Parallel.ForEach:

Ответ:

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

 (2) информация о всех возникших исключениях теряется и не может быть обработана 

 (3) информация о всех возникших исключениях сохраняется и может быть проанализирована и обработана в обработчике исключения AggregateException 


Номер 2
Какие высказывания истинны для цикла Parallel.ForEach:

Ответ:

 (1) элементы коллекции доступны как для чтения, так и для записи 

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

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

 (4) если требуется внести изменения в коллекцию, обрабатываемую в цикле, то это можно сделать, лишь создав новую коллекцию 


Номер 3
При выполнении методов  Parallel.For и Parallel.ForEach на одной или нескольких итерациях могут возникать исключительные ситуации. Правда ли, что: 

Ответ:

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

 (2) все запущенные итерации продолжают выполняться, после чего запускаются итерации с номерами меньшими минимального номера итерации, на которой возникла исключительная ситуация. Обработчик ситуации следует предусмотреть только для итерации с минимальным номером 

 (3) все запущенные итерации продолжают выполняться, после чего запускаются итерации с номерами меньшими минимального номера итерации, на которой возникла исключительная ситуация. Все возникшие исключительные ситуации перехватываются, на их основе создается новая исключительная ситуация AggregateException, для которой и следует предусмотреть обработчик ситуации 




Главная / Программирование / Параллельные вычисления и многопоточное программирование / Тест 7