игра брюс 2048
Главная / Программирование / Параллельное программирование для многоядерных процессоров / Тест 9

Параллельное программирование для многоядерных процессоров - тест 9

Упражнение 1:
Номер 1
Какой уровень параллелизма в библиотеке PFX является базовым? 

Ответ:

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

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

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


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

Ответ:

 (1) уровень императивной обработки данных на базе конструкций Parallel.For/ForEach/InvokeБ 

 (2) уровень императивной работы с задачами (tasks) 

 (3) уровень декларативной обработки данных  


Номер 3
Укажите уровень параллелизма библиотеки PFX использующий PLINQ

Ответ:

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

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

 (3) уровень декларативной обработки данных 


Упражнение 2:
Номер 1
Укажите правильное объявление функции запроса потока у пула с использованием библиотеки PFX:

Ответ:

 (1) Task.CreateThread(delegate { ... });  

 (2) Task.New(delegate { ... });  

 (3) Task.Create(delegate { ... });  


Номер 2
Укажите что выполняет следующий пример:
		
		Task t1 = Task.Create(delegate { A(); });
		Task t2 = Task.Create(delegate { B(); });
		Task t3 = Task.Create(delegate { C(); });
		t1.Wait();
		t2.Wait();
		t3.Wait();
		
		

Ответ:

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

 (2) параллельное выполнение трёх задач и ожидание завершения их выполнения 

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


Номер 3
Аналогом какого класса является класс System.Threading.Tasks.Task?

Ответ:

 (1) System.Threading.ThreadPool 

 (2) System.Threading.Parallel 

 (3) System.Threading.Pool 


Упражнение 3:
Номер 1
Что происходит при вызове метода Task.Create?

Ответ:

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

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

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


Номер 2
Какие методы отменяют выполнение задачи?

Ответ:

 (1) Task.Cancel 

 (2) Task.WaitAll 

 (3) Task.CancelAndWait 


Номер 3
Укажите параметры передаваемые планировщику задач бибилиотеки PFX:

Ответ:

 (1) minProcessors 

 (2) maxProcessors 

 (3) maxStackSize 

 (4) idealThreadsPerProcessor 

 (5) threadPriority  


Упражнение 4:
Номер 1
В Чём отличие класса System.Threading.Tasks.Future<T> от классаSystem.Threading.Taks.Task?

Ответ:

 (1) класс Future<T> может возвращать значение 

 (2) объекты класса Future<T> могут создаваться без указания тела задачи 

 (3) класс Future<T> не может возвращать значение 


Номер 2
Укажите в каком примере происходит распараллеливание выполнения функции, вычисляющей количество узлов в бинарном дереве

Ответ:

 (1) int CountNod(Tree<int> node) { if (node == null) return 0; return 1 + CountNod(node.Left) + CountNod(node.Right); }  

 (2) int CountNod(Tree<int> node) { if (node == null) return 0; return CountNod(node.Left) + CountNod(node.Right); }  

 (3) int CountNod(Tree<int> node) { if (node == null) return 0; var left = Future.Create(() => CountNod(node.Left)); int right = CountNod(node.Right); return 1 + left.Value + right; }  


Номер 3
Укажите в каком примере происходит распараллеливание с применением PLINQ?

Ответ:

 (1) var q = (from d in _doubles.AsParallel() where Test(d) orderby d select d).ToArray();  

 (2) var q = (from d in _doubles where Test(d) orderby d select d).ToArray();  

 (3) var q = (from e in _ent where TestForEntity(e) select e).ToArray();  


Упражнение 5:
Номер 1
Укажите правильный вариант распараллеливания запроса LINQ в PLINQ:
												
	IEnumerable<T> data = ...;
	var q = data.Where(x => p(x)).Orderby(x => k(x)).Select(x => f(x));
	foreach (var e in q) a(e);
	
											

Ответ:

 (1) IEnumerable<T> data = ...; var q = data.AsParallel().Where(x => p(x)).Orderby(x => k(x)).Select(x => f(x)); foreach (var e in q) a(e);  

 (2) IEnumerable<T> data = ...; var q = from x in data.AsParallel() where p(x) orderby k(x) select f(x); foreach (var e in q) a(e);  

 (3) IEnumerable<T> data = ...; var q = data.Where(x => p(x)).Orderby(x => k(x)).Select(x => f(x)); Parallel.foreach (var e in q) a(e);  


Номер 2
Укажите правильные утверждения в отношении PLINQ

Ответ:

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

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

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


Номер 3
К чему приводит использование распараллеливания легковесных операций с применением Future<T>?

Ответ:

 (1) увеличению времени работы параллельной программы 

 (2) ростом дополнительных издержек на создание объектов класса Future<T> 

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


Упражнение 6:
Номер 1
Что обеспечивает класс BlockingCollection<T> библиотеки PFX?

Ответ:

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

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

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


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

Ответ:

 (1) System.Threading.Collections.ConcurrentStack<T> 

 (2) System.Collections.Generics.Stack<T> 

 (3) System.Threading.Collections.ConcurrentQueue<T> 


Номер 3
Укажите что выполняет следующий код класса ConcurrentQueue<T>:
		
		Data dt;
		while(queue.TryDequeue(out dt))
		{
		Func(dt);
		}
		
		

Ответ:

 (1) помещает елементы в очередь 

 (2) извлекает елементы из очереди 

 (3) помещает елементы в стек 


Упражнение 7:
Номер 1
С помощью какого метода происходит распараллеливание запроса PLINQ?

Ответ:

 (1) Range() 

 (2) AsParallel() 

 (3) ParallelLINQ(...) 


Номер 2
В какую библиотеку встроена реализация параллельного интегрированного языка запросов PLINQ?

Ответ:

 (1) System.Linq 

 (2) System.Threading 

 (3) System.PLinq 


Номер 3
Укажите вариант правильного распараллеливания следующего запроса (схематично):
			
		IEnumerable<T> Data = …;
		var query =	from x in Data where p(x) orderby k(x)
			    	select f(x);
		foreach (var e in query)
	    func(e);
			
		

Ответ:

 (1) IEnumerable<T> Data = …; var query = from x in Data.AsParallel() where p(x) orderby k(x) select f(x); foreach (var e in query) func(e);  

 (2) IEnumerable<T> Data = …; var query = from x in Data select f(x); foreach (var e in query) func(e);  


Упражнение 8:
Номер 1
Укажите правильное определение операции агрегирования в LINQ:

Ответ:

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

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

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


Номер 2
Какая функция-шаблон ипользуется в языке LINQ для операций агрегирования

Ответ:

 (1) Aggregate 

 (2) Parallel.For 

 (3) Parallel.ForEach 


Номер 3
Укажите примеры операций агрегирования:

Ответ:

 (1) вычисление суммы последовательности чисел 

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

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

 (4) возведение в степень некоторого числа 


Упражнение 9:
Номер 1
Какие параметры необходимо указать при использовании функции Aggregate в LINQ?

Ответ:

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

 (2) начальное значение переменной-аккумулятора 

 (3) конечное значение переменной-аккумулятора 

 (4) вычислительную функцию 

 (5) функцию пост-обработки результата 


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

Ответ:

 (1) коммутативность и ассоциативность функции пост-обработки результата 

 (2) коммутативность и ассоциативность функции редукции 

 (3) указания начального значения seed переменной-аккумулятора 


Номер 3
Может ли любая операция агрегирования корректно вычислена с помощью шаблонов типа Aggregate в PLINQ?

Ответ:

 (1) может всегда 

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


Упражнение 10:
Номер 1
Какова особенность исключений в параллельных приложениях?

Ответ:

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

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

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


Номер 2
Что происходит при одновременном возникновении нескольких исключительных ситуаций при использовании библиотеки PFX?

Ответ:

 (1) все возникшие исключения собираются в единое исключение типа System.Threading.AggregateException 

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

 (3) все возникшие исключения собираются в единое исключение типа System.Exception 


Номер 3
Какой общий принцип перехвата исключений в параллельной программе?

Ответ:

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

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

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


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

Ответ:

 (1) ConcurrentQueue<T> 

 (2) Queue<T> 

 (3) ConcurrentStack<T> 


Номер 2
Возможна ли модификация объектов классов ConcurrentQueue<T> и СoncurrentStack<T> в цикле foreach?

Ответ:

 (1) возможна 

 (2) невозможна 


Номер 3
Укажите в каком из примеров выполнение кода вызовет исключительную ситуацию?

Ответ:

 (1) var q = new Queue<int> (new[] {1, 2, 3, 4, 5}); foreach (var item in q) { if (item <= 2) q.Enqueue(item * 2); }  

 (2) var q = new ConcurrentQueue<int> (new[] {1, 2, 3, 4, 5}); foreach (var item in q) { if (item <= 2) q.Enqueue(item * 2); }  

 (3) var s = new ConcurrentQueue<int> (new[] {1, 2, 3, 4, 5}); foreach (var item in s) { s.Enqueue(item * 2); }  


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

Ответ:

 (1) System.Threading.LazyInit<T> 

 (2) System.Threading.WriteOnce<T> 

 (3) System.Threading.Collections.BlockingCollection<T> 


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

Ответ:

 (1) System.Threading.LazyInit<T> 

 (2) System.Threading.WriteOnce<T> 

 (3) System.Threading.Collections.ConcurrentQueue<T> 


Номер 3
Какой класс библиотеки PFX используется для работы с полями допускающими однократное присваивание.

Ответ:

 (1) System.Threading.Collections.ConcurrentStack<T> 

 (2) System.Threading.LazyInit<T> 

 (3) System.Threading.WriteOnce<T> 




Главная / Программирование / Параллельное программирование для многоядерных процессоров / Тест 9