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

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

Упражнение 1:
Номер 1
Может ли библиотека Parallel FX Library использоваться в неуправляемом коде?

Ответ:

 (1) не может 

 (2) может 

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


Номер 2
Библиотека Parallel FX Library предназначена для:

Ответ:

 (1) написания программ в однозадачных средах 

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

 (3) распараллеливания задач 


Номер 3
Какие преимущества достигаются при использовании Parallel FX Library?

Ответ:

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

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

 (3) упрощение параллельного программирования 


Упражнение 2:
Номер 1
Библиотека Parallel FX Library входит в состав:

Ответ:

 (1) Visual Studio 2005 

 (2) Visual Studio 2008 

 (3) Visual Studio 2010 

 (4) .NET 4 CTP 

 (5) Borland C++ Builder 5 


Номер 2
Какие способы организации параллелизма использует Parallel Extensions?

Ответ:

 (1) параллелизм на уровне задач 

 (2) механизм использующий параллельную реализацию LINQ-а 

 (3) параллелизм при императивной обработке данных 


Номер 3
Использование библиотеки PFX возможно при:

Ответ:

 (1) установленной только версии .NET Framework 1.0 

 (2) установленной любой версии .NET Framework 

 (3) установленном .NET Framework 3.5 


Упражнение 3:
Номер 1
Возможно ли использование Parallel Extensions в однопроцессорных системах?

Ответ:

 (1) возможно 

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

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


Номер 2
Что произойдёт при использовании Parallel Extensions в многоядерных системах когда станут доступны другие ядра?

Ответ:

 (1) автоматически вовлечёт их в работу 

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

 (3) заблокирует работу действующих ядер и переключит на освободившиеся 


Номер 3
Какие компоненты и данные содержит Microsoft Parallel Extensions?

Ответ:

 (1) PLINQ 

 (2) TPL 

 (3) SQL 

 (4) набор координирующих структур данных 


Упражнение 4:
Номер 1
Какое основное назначение методов TPL API?

Ответ:

 (1) разбивают запрос на небольшие задачи 

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

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


Номер 2
Какие методы содержатся в TPL API?

Ответ:

 (1) Parallel.For 

 (2) Parallel.ForEach 

 (3) Parallel.Invoke 


Номер 3
Что произойдёт при использовании параллельного цикла (с применением PFX) в однопроцессорной машине?

Ответ:

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

 (2) цикл будет выполнен параллельно 

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


Упражнение 5:
Номер 1
Каким требованиям должна удовлетворять программа для её эффективного распараллеливания?

Ответ:

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

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

 (3) изменением гранулярности, путём максимального уменьшения подзадач 


Номер 2
Что произойдёт если количество подзадач в параллельной программе будет слишком большим?

Ответ:

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

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

 (3) увеличится объём издержек на запуск подзадач 


Номер 3
Что произойдёт если количество подзадач в параллельной программе будет слишком маленьким?

Ответ:

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

 (2) уменьшится общая производительность системы 

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


Упражнение 6:
Номер 1
Укажите в каком из примеров применено распараллеливание цикла?

Ответ:

 (1) while (x) { if (y == x) break; }  

 (2) for (int i = 0; i < 100; i++) { a[i] = a[i]*a[i]; }  

 (3) Parallel.For(0, 100, delegate(int i) { a[i] = a[i]*a[i]; });  


Номер 2
Укажите в каком из примеров произойдёт ошибка компиляции?

Ответ:

 (1) using System.Threading; … Parallel.For(0, N, delegate(int i)) { res[i] = Func(i); };  

 (2) using System.Threading; … Parallel.For(0, N, delegate(int i) { res[i] = Func(i); });  

 (3) using System.Threading; … Parallel.For(0, N, Func(int i) { res[i] = Func(i); });  


Номер 3
Укажите в каком из примеров применено распараллеливание цикла?

Ответ:

 (1) while (x != y) { for (int k = 0; k != List.Count; k++) if ((k - x) >= 30) return; }  

 (2) foreach(int item in List) { int iCount += item; }  

 (3) Parallel.Foreach(data, delegate(ClassRes сl)) { FuncRes(cl); }  


Упражнение 7:
Номер 1
Укажите правильное определение планировщика задач:

Ответ:

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

 (2) планировщик задач - это программа, обеспечивающая запланированный запуск программ в системе 

 (3) планировщик задач - это программа, обеспечивающая межпроцессорное взаимодействие 


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

Ответ:

 (1) снижение максимальной загрузки процессоров 

 (2) обеспечивание высокой пропускной способности системы 

 (3) обеспечивание максимальной загрузки процессоров 


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

Ответ:

 (1) LIFO 

 (2) FIFO 

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


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

Ответ:

 (1) монопольный 

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

 (3) приоритетный 


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

Ответ:

 (1) децентрализованное планирование 

 (2) централизованное планирование 

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


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

Ответ:

 (1) децентрализованное планирование 

 (2) централизованное планирование 

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


Упражнение 9:
Номер 1
Что произойдёт при использовании децентрализованного планирования если пул процессора в многопроцессорной системе окажется пуст

Ответ:

 (1) процессор прервёт выполнение других процесооров для того чтобы взять потоки из их пулов 

 (2) процессор будет ждать пока в его пуле снова не появятся потоки 

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


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

Ответ:

 (1) процессор извлекает новый поток, а блокированный помещает назад 

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

 (3) процессор передаёт блокированный поток другому процессору 


Номер 3
Какой основной принцип динамического планирования в многопроцессорных системах

Ответ:

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

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

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


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

Ответ:

 (1) Parallel.For 

 (2) Parallel.ForEach 

 (3) Parallel.Invoke 


Номер 2
Какое условие должно соблюдаться для эффективной реализации метода Parallel.Invoke?

Ответ:

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

 (2) если в последовательности операторов порядок выполнения должен строго соблюдаться 

 (3) если используется большое количество циклов 


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

Ответ:

 (1) Parallel.ForEach(Directory.GetFiles(path, "*.jpg"), Path => { ProcessImage(Path); });  

 (2) class Tree<T> { public T Data; public Tree<T> Left, Right; } static void Walk<T>(Tree<T> tree, Action <T> func) { if (tree = null) return; Walk(tree.Left, func); Walk(tree.Right, func); func(tree.Data); }  

 (3) class Tree<T> { public T Data; public Tree<T> Left, Right; } static void Walk<T>(Tree<T> tree, Action <T> func) { if (tree = null) return; Parallel.Invoke( () => Walk(tree.Left, func); () => Walk(tree.Right, func); () => func(tree.Data)); }  


Упражнение 11:
Номер 1
В методе Parallel.For(Int32, Int32, Action<Int32>) что определяет параметр Action<Int32>?

Ответ:

 (1) конечный индекс 

 (2) начальный индекс 

 (3) делегат, определяющий действие на каждой итерации 


Номер 2
В чём особенность использования методов Parallel.For и Parallel.ForEach?

Ответ:

 (1) применяются для распараллеливания задач в Parallel Extensions 

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

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


Номер 3
Возможно ли организовать передачу информации между итерациями цикла, исполняющимися в одном потоке, при использовании Parallel.For/ForEach?

Ответ:

 (1) возможно при использовании перегруженных вариантов 

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


Упражнение 12:
Номер 1
Укажите правильные утверждения в отношении вложенных параллельных циклов:

Ответ:

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

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

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


Номер 2
Можно ли распараллелить внутренний цикл for (int k = 0; k < size; k++) в следующем примере, без применения блокировок?
		
		Parallel.For( 0, size, delegate(int i) {
  		  Parallel.For( 0, size, delegate(int j) {
    	    result[i, j] = 0;
    		for (int k = 0; k < size; k++) 
    		  {
      		  result[i, j] += m1[i, k] * m2[k, j];
    		  }
  		    });
		  });
		
									

Ответ:

 (1) распаралеливать внутренний цикл нельзя 

 (2) распаралеливать внутренний цикл можно 


Номер 3
Укажите правильные утверждения в отношении следующего примера:
		
		Parallel.For( 0, size, delegate(int x) {
  		  Parallel.For( 0, size, delegate(int y) {
    	    result[x, y] = 0;
    		for (int k = 0; k < size; k++) 
    		  {
      		  result[x, y] += m1[x, k] * m2[k, y];
    		  }
  		    });
		  });
			
									

Ответ:

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

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

 (3) правильно распараллелить внутренний цикл можно только с помощью блокировки 




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