Главная / Программирование /
Параллельное программирование для многоядерных процессоров / Тест 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) правильно распараллелить внутренний цикл можно только с помощью блокировки