Главная /
Параллельное программирование с использованием инструментов и технологий Intel, Проверка знаний
Параллельное программирование с использованием инструментов и технологий Intel, Проверка знаний - ответы на тесты Интуит
Проверка знаний в области параллельного программирования и умений работы с OpenMP и MPI.
Список вопросов:
- # Граф:
- # Верно ли, что информационная история любого фрагмента всегда содержит больше дуг, чем операционная история того же фрагмента?
- # Может ли информационная история некоторого фрагмента содержать 102 вершины и лишь 7 дуг?
- # Может ли управляющий граф некоторого фрагмента программы быть связным, а его информационный граф несвязным?
- # Для некоторого фрагмента программы построили четыре модели. Может ли оказаться несвязным граф:
- # Верно ли утверждение: если в тесновложенном гнезде циклов все итерации каждого цикла гнезда независимы, то перестановка циклов в таком гнезде будет эквивалентным преобразованием?
- # Подход к оптимизации вычислений, основанный на использовании команд SIMD (SSE, SSE2…), называется:
- # Статическая конвейерезация выполняется
- # Динамическое планирование это:
- # Степень параллелизма программы
- # Ускорение за счёт параллельного выполнения
- # Отметьте ресурсы, которые потоки одного процесса используют совместно
- # Отметьте частные ресурсы каждого потока
- # Как называется состояние потока, обладающего всеми необходимыми ресурсами, в том числе возможностью использования ЦП
- # Как называется состояние потока, заблокированного до наступления некоторого внешнего события
- # Как называется состояние потока, обладающего всеми необходимыми для выполнения ресурсами за исключением ресурса "время ЦП"
- # Что отвечает за управление процессами?
- # Что отвечает за управление потоками?
- # Что включает в себя контекст процесса?
- # Что включает в себя контекст потока?
- # Отметьте действия, не относящиеся к операции создания процесса
- # Отметьте действия, не относящиеся к операции создания потока
- # Какой тип планирования преимущественно используется в интерактивных системах?
- # Укажите оценку сложности современных алгоритмов планирования (N – число субъектов планирования).
- # Укажите наиболее важный критерий оценки алгоритмов планирования в системах пакетной обработки.
- # Укажите наиболее важный критерий оценки алгоритмов планирования в интерактивных системах.
- # Выберите утверждения, верные для невытесняющих алгоритмов планирования.
- # Выберите утверждения, верные для вытесняющих алгоритмов планирования.
- # На значения каких критериев влияет размер кванта при использовании вытесняющих алгоритмов планирования?
- # При использовании каких алгоритмов планирования возможно голодание потоков?
- # В каких случаях возможно возникновение гонок (races) при использовании несколькими потоками одного объекта данных?
- # В каких случаях обязательно возникают гонки (races) при использовании несколькими потоками одного объекта данных?
- # Укажите положения, верные для решения задачи взаимного исключения, основанного на прерываниях.
- # Укажите положения, верные для алгоритма Петерсона решения задачи взаимного исключения.
- # Укажите положения, верные для решений задачи взаимного исключения, основанного на использовании специальных команд ЦП (Test&Set, Swap,…).
- # Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции AddItemToBuffer и RemoveItemFromBuffer модифицируют структуру данных, разделяемую поставщиком и потребителем, и не используют синхронизацию. Предположим, что программа может выполняться как на однопроцессорных, так и на многопроцессорных системах, и одновременно могут выполняться несколько потоков-поставщиков и потоков-потребителей. Укажите, является ли решение корректным (всегда работает), или (2) некорректным (никогда не работает), или (3) опасным (в одних случаях работает, в других – нет). Semaphore Empty = N; // Буфер содержит N записейFull = 0;() { Empty.P(); AddItemToBuffer(); Full.V(); }() { Full.P(); RemoveItemFromBuffer(); Empty.V(); }
- # Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции AddItemToBuffer и RemoveItemFromBuffer модифицируют структуру данных, разделяемую поставщиком и потребителем, и не используют синхронизацию. Предположим, что программа может выполняться как на однопроцессорных, так и на многопроцессорных системах, и одновременно могут выполняться несколько потоков-поставщиков и потоков-потребителей. Укажите, является ли решение корректным (всегда работает), или (2) некорректным (никогда не работает), или (3) опасным (в одних случаях работает, в других – нет). Semaphore Empty = N; // Буфер содержит N записейM = unlocked;Full = 0;() { M.Lock(); Empty.P(); AddItemToBuffer(); Full.V(); M.Unlock(); }() { M.Lock(); full.P(); RemoveItemFromBuffer(); empty.V(); M.Unlock(); }
- # Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции AddItemToBuffer и RemoveItemFromBuffer модифицируют структуру данных, разделяемую поставщиком и потребителем, и не используют синхронизацию. Предположим, что программа может выполняться как на однопроцессорных, так и на многопроцессорных системах, и одновременно могут выполняться несколько потоков-поставщиков и потоков-потребителей. Укажите, является ли решение корректным (всегда работает), или (2) некорректным (никогда не работает), или (3) опасным (в одних случаях работает, в других – нет). int Bufs = N; // Буфер содержит N записейM = unlocked;Full = 0;() { while(1){ M.Lock(); if( Bufs != 0 ){ Bufs --; M.Unlock(); break; } M.Unlock(); } AddItemToBuffer(); }() { while(1){ M.Lock(); if( Bufs != N ){ Bufs ++; M.Unlock(); break; } M.Unlock(); } RemoveItemFromBuffer(); }
- # Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции AddItemToBuffer и RemoveItemFromBuffer модифицируют структуру данных, разделяемую поставщиком и потребителем, и не используют синхронизацию. Предположим, что программа может выполняться как на однопроцессорных, так и на многопроцессорных системах, и одновременно могут выполняться несколько потоков-поставщиков и потоков-потребителей. Укажите, является ли решение корректным (всегда работает), или (2) некорректным (никогда не работает), или (3) опасным (в одних случаях работает, в других – нет). Semaphore Empty = N; // Буфер содержит N записейFull = 0;() { Empty.P(); DisableInterrupts(); AddItemToBuffer(); EnableInterrupts(); Full.V(); }() { Full.P(); DisableInterrupts(); RemoveItemFromBuffer(); EnableInterrupts(); Empty.V(); }
- # Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции AddItemToBuffer и RemoveItemFromBuffer модифицируют структуру данных, разделяемую поставщиком и потребителем, и не используют синхронизацию. Предположим, что программа может выполняться как на однопроцессорных, так и на многопроцессорных системах, и одновременно могут выполняться несколько потоков-поставщиков и потоков-потребителей. Укажите, является ли решение корректным (всегда работает), или (2) некорректным (никогда не работает), или (3) опасным (в одних случаях работает, в других – нет). Semaphore Empty = N; // Буфер содержит N записейM = unlocked;Full = 0;() { Empty.P(); M.Lock(); AddItemToBuffer(); M.Unlock(); Full.V(); }() { full.P(); M.Lock(); RemoveItemFromBuffer(); M.Unlock(); empty.V(); }
- # Рассмотрим задачу использования кольцевого буфера (задача "поставщик-потребитель"). Функции AddItemToBuffer и RemoveItemFromBuffer модифицируют структуру данных, разделяемую поставщиком и потребителем, и не используют синхронизацию. Предположим, что программа может выполняться как на однопроцессорных, так и на многопроцессорных системах, и одновременно могут выполняться несколько потоков-поставщиков и потоков-потребителей. Укажите, является ли решение корректным (всегда работает), или (2) некорректным (никогда не работает), или (3) опасным (в одних случаях работает, в других – нет). Semaphore Empty = N; // Буфер содержит N записейM = unlocked;Full = 0;() { Empty.P(); M.Lock(); AddItemToBuffer(); Full.V(); }() { full.P(); M.Lock(); RemoveItemFromBuffer(); empty.V(); }
- # Рассмотрим решение задачи взаимного исключения для двух потоков (i - номер потока). Какое из условий постановки задачи взаимного исключения может быть нарушено в предлагаемом решении? bool flag0 = false, flag1 = false;( true ){ while( flag1-i ) ; flagi = true; CSi(); flagi = false; NCSi(); }
- # Рассмотрим решение задачи взаимного исключения для двух потоков (i - номер потока). Какое из условий постановки задачи взаимного исключения может быть нарушено в предлагаемом решении? bool flag0 = false, flag1 = false;( true ){ flagi = true; while( flag1-i ) ; CSi(); flagi = false; NCSi(); }
- # Рассмотрим решение задачи взаимного исключения для двух потоков (i - номер потока). Какое из условий постановки задачи взаимного исключения может быть нарушено в предлагаемом решении? bool flag0 = true, flag1 = false;( true ){ while( !flagi ) ; CSi(); flagi = false; flag1-i = true; NCSi(); }
- # Рассмотрим решение задачи взаимного исключения для двух потоков (i - номер потока). Какое из условий постановки задачи взаимного исключения может быть нарушено в предлагаемом решении? bool flag0 = false, flag1 = false;flag2 = 0;( true ){ flagi = true; flag2 = 1 - i; while( flag1-i && flag2 == 1 - i ) ; CSi(); flagi = false; NCSi(); }
- # Технология программирования OpenMP расширяет язык программирования за счет:
- # Отметьте верные утверждения об OpenMP:
- # Для сборки OpenMP-программы необходимо.
- # Для создания параллельной области необходимо использовать директиву:
- # Для распределения итераций цикла между потоками необходимо использовать следующую директиву OpenMP:
- # Какая директива OpenMP может быть использована для синхронизации потоков?
- # Можно ли в OpenMP программе управлять количеством потоков выполняющих работу, не меняя кода программы?
- # В OpenMP-программе необходимо задать число потоков равное двум. Отметьте верные варианты:
- # Ваша OpenMP-программа содержит две параллельные области. Необходимо, чтобы число потоков в первой из них равнялось трем, а во второй определялось числом процессоров, доступных операционной системе. Отметьте верные варианты:
- # В критические секции:
- # В OpenMP-программе объявлены переменные a и b типа int и массив c типа double. Отметьте верные варианты использования директивы omp atomic.
- # В OpenMP-программе необходимо подсчитать число потоков в параллельной области без использования функции omp_get_num_threads(). Отметьте верные варианты.
- # Для выполнения некоторого кода в параллельной области только нулевым потоком необходимо использовать
- # В параллельной области в OpenMP-программе необходимо выделить память под общую для всех потоков переменную. Отметьте верные варианты кода
- # Чтобы использовать вложенные параллельные области
- # Вы написали программу с использованием OpenMP. При запуске на 4-ядерной системе оказалось, что загрузка процессора равна 25%. Какова наиболее вероятная причина?
- # В программе на OpenMP распараллелен следующий цикл #pragma omp for(i = 0; i < 1000; i++) for (j = 0; j < 1000; j++) с[i] += a[i][j] * b[j]; Является ли данная параллельная реализация корректной?
- # В программе на OpenMP распараллелен следующий цикл #pragma omp parallel(i = 0; i < 1000; i++) #pragma omp for for (j = 0; j < 1000; j++) с[i] += a[i][j] * b[j]; Является ли данная параллельная реализация корректной?
- # Имеется следующий код на OpenMP double a = 10.0; #pragma omp parallel private(a) { ... } Можно ли средствами OpenMP сделать так, чтобы локальные копии переменной а в каждом потоке имели то же значение, что и исходная переменная a?
- # В программе на OpenMP распараллелен следующий цикл, где выполнение функции f() может занимать существенно разное время в зависимости от значения входного аргумента #pragma omp for(i = 0; i < 1000; i++) с += func(i); Каким образом можно добиться наилучшей балансировки вычислительной нагрузки между потоками?
- # В OpenMP-программе имеются две параллельные области. Возможна ли ситуация, когда один поток закончит выполнение обеих параллельных областей, в то время как другой поток все еще выполняет код первой параллельной области, при условии что все потоки запущены средствами OpenMP?
- # В OpenMP-программе имеется два распараллеленных цикла. Возможна ли ситуация, когда один поток закончит выполнение обоих циклов, в то время как другой поток все еще выполняет код первого цикла, при условии что все потоки запущены средствами OpenMP?
- # Как, используя OpenMP, быстрее всего просуммировать элементы очень длинного массива?
- # В программе на OpenMP имеется вычислительный блок, содержащий два вложенных цикла с независимыми итерациями. Требуется распараллелить его с помощью OpenMP. Количество итераций внешнего цикла 1000, внутреннего – 1000000. Какой цикл выгоднее распараллелить: внешний или внутренний?
- # Для каких вычислительных систем предназначена технология OpenMP?
- # Где исполняется код, распараллеленный с помощью технологии OpenMP?
- # Основное предназначение OpenMP?
- # Какой из следующих шаблонов параллельного программирования лежит в основе технологии OpenMP?
- # Выберите наиболее правильное утверждение:
- # Выберите наиболее правильное утверждение:
- # Какое количество потоков может быть заведено в рамках параллельной секции?
- # Что определяет количество потоков в рамках параллельной секции?
- # Пусть есть система с двумя вычислительными элементами. Известно, что доля последовательного кода составляет 50%. Какое максимальное ускорение можно получить с помощью технологии OpenMP?
- # Пусть есть система с четырьмя вычислительными элементами. Известно, что доля последовательного кода составляет 20%. Какое максимальное ускорение можно получить с помощью технологии OpenMP?
- # Пусть есть система с восемью вычислительными элементами. Известно, что доля последовательного кода составляет 20%. Какое максимальное ускорение можно получить с помощью технологии OpenMP?
- # Пусть есть система с двумя вычислительными элементами. Известно, что доля последовательного кода составляет 40%. Какое максимальное ускорение можно получить с помощью технологии OpenMP?
- # Пусть написана следующая параллельная программа: int a = 0; #pragma omp parallel { … a++; … } Чему равно значение "a" на четырех процессорной системе, после выполнения параллельной секции?
- # Пусть написана следующая параллельная программа: int a = 0; #pragma omp parallel { … #pragma omp single a++; … } Чему равно значение "a" на четырех процессорной системе, после выполнения параллельной секции?
- # Пусть написана следующая параллельная программа: int a = 0; #pragma omp parallel { … #pragma omp master a++; … } Чему равно значение "a" на четырех процессорной системе, после выполнения параллельной секции?
- # Пусть написана следующая параллельная программа: int a = 0; #pragma omp parallel { … #pragma omp critical a++; … } Чему равно значение "a" на четырех процессорной системе, после выполнения параллельной секции?
- # Пусть написана следующая параллельная программа: int *a; #pragma omp parallel { …= new int [10]; … } Какие проблемы могут наблюдаться при выполнении параллельной программы?
- # Пусть написана следующая параллельная программа: int *a; #pragma omp parallel { … #pragma omp critical= new int [10]; … } Какие проблемы могут наблюдаться при выполнении параллельной программы?
- # Пусть написана следующая параллельная программа: int *a;= new int [10]; #pragma omp parallel { …[num_th] = num_th; … } Какие проблемы могут наблюдаться при выполнении параллельной программы, если num_th это номер потока (потоков меньше 10)?
- # Пусть написана следующая параллельная программа: int *a;= new int [10]; #pragma omp parallel shared(a) { …[num_th] = num_th; … } Какие проблемы могут наблюдаться при выполнении параллельной программы, если num_th это номер потока (потоков меньше 10)?
- # Пусть написана следующая параллельная программа: int sum = 0; #pragma omp parallel for for(int i = 0; i < 100; i++) sum++; Какие проблемы могут наблюдаться при выполнении параллельной программы?
- # Пусть написана следующая параллельная программа: int sum = 0; #pragma omp parallel for(int i = 0; i < 100; i++) #pragma omp single sum++; Какие проблемы могут наблюдаться при выполнении параллельной программы?
- # Пусть написана следующая параллельная программа: int sum = 0; #pragma omp parallel for(int i = 0; i < 100; i++) #pragma omp critical sum++; Какие проблемы могут наблюдаться при выполнении параллельной программы?
- # Пусть написана следующая параллельная программа: int sum = 0; #pragma omp parallel for reduction (sum) for(int i = 0; i < 100; i++) sum++; Какие проблемы могут наблюдаться при выполнении параллельной программы?
- # Пусть написана следующая параллельная программа: #pragma omp parallel {sum = 0; #pragma omp for for(int i = 0; i < 100; i++) sum++; } Какие проблемы могут наблюдаться при выполнении параллельной программы?
- # Операция изменения переменной цикла index в директиве #pragma omp parallel for может иметь следующие формы:
- # Располагается два цикла. Возможна ли ситуация при которой один из потоков завершил выполнять итерации первого цикла и начал выполнять итерации второго цикла, а другие потоки нет?
- # Для управления распределением итераций цикла между потоками в OpenMP используется параметр schedule директивы for. При типе расписания static:
- # Для управления распределением итераций цикла между потоками в OpenMP используется параметр schedule директивы for. При типе расписания dynamic:
- # Для управления распределением итераций цикла между потоками в OpenMP используется параметр schedule директивы for. При типе расписания guided:
- # Пусть написан следующий параллельный код: #pragma omp parallel for ordered { for (i=5; i >= 0; i--) { #pragma omp ordered printf ("%d ",i); } В каком порядке выведутся числа?
- # Пусть написан следующий параллельный код: #pragma omp parallel for shared(a) private(i,j,sum) \ schedule (dynamic, CHUNK) ordered { for (i=0; i < NMAX; i++) { sum = 0; for (j=i; j < NMAX; j++) sum += a[i][j]; #pragma omp ordered printf ("Сумма элементов строки %d равна %f\n",i,sum); } Будет ли суммирование происходить параллельно?
- # Функция omp_init_lock применяется для того что бы:
- # Для установки симафора используются функции:
- # Для захвата симафора без блокировки потока используются функции:
- # Какие проблемы могут возникать при использовании симафоров OpenMP?
- # Директива #pragma omp sections используется для:
- # Пусть написана следующая параллельная программа: int *a; #pragma omp parallel { #pragma omp sections { #pragma omp section { a = new int [10]; delete [] a; } #pragma omp section { a = new int [10]; delete [] a; } } } Какие проблемы могут наблюдаться при выполнении параллельной программы?
- # Пусть написана следующая параллельная программа: #pragma omp parallel { int *a; #pragma omp sections { #pragma omp section { a = new int [10]; delete [] a; } #pragma omp section { a = new int [10]; delete [] a; } } } Какие проблемы могут наблюдаться при выполнении параллельной программы?
- # В качестве параметров директивы sections могут использоваться:
- # Какие из директив позволяют выполнить действия только в одном потоке
- # Директива #pragma omp barrier используется для:
- # Функцию omp_get_max_threads используют для:
- # Функцию omp_get_num_threads используют для:
- # Функцию omp_get_thread_num используют для:
- # Функцию omp_get_num_procs используют для:
- # Пусть написана следующая параллельная программа: omp_set_num_threads(4)(“%d”, omp_get_num_threads()); #pragma omp parallel { … } Что выдаст программа на экран?
- # Пусть написана следующая параллельная программа: omp_set_num_threads(4) #pragma omp parallel num_threads(3) { … } #pragma omp parallel { … } Сколько потоков будет создано в первой и во второй секции?
- # Отметьте верные утверждения:
- # Отметьте верные утверждения:
- # Под параллельной программой в рамках MPI понимается:
- # Отметьте верные утверждения:
- # Как определяется число процессов при запуске MPI-программы?
- # В программе на MPI требуется с процесса с рангом 0 на процесс с рангом 1 переслать массив a из 10 элементов типа int. Какой код делает это верно?
- # В программе на MPI требуется принять от процесса с рангом 0 на процессе с рангом 1 массив a из 10 элементов типа int. Отметьте верные варианты.
- # В программе на MPI, содержащей ввод данных, рассылку данных, вычислительный блок, сбор результатов, необходимо замерить время вычислительного блока. Каким образом это сделать корректно?
- # В программе на MPI необходимо распределить итерации цикла между процессами, считая, что время выполнения итераций примерно одинаковое
- # Для организации параллельных вычислений в вычислительных системах с распределенной памятью необходимо:
- # Для распределения вычислений между процессорами в вычислительных системах с распределенной памятью необходимо:
- # Минимально необходимый набор операций для организации информационного взаимодействия между процессорами в вычислительных системах с распределенной памятью включает в себя только:
- # Под параллельной программой в рамках MPI понимается:
- # Процессы параллельной программой в рамках MPI:
- # Номер процесса в рамках MPI именуется:
- # Среди предусмотренных в составе MPI операций передачи сообщений различают:
- # Под коммуникатором в MPI понимается:
- # Указание используемого коммуникатора является:
- # Все данные для передачи в качестве сообщения MPI описываются с помощью триады:
- # Процессы, между которыми выполняется передача данных:
- # Завершение функции MPI_Send означает, что:
- # Прием сообщения при помощи функции MPI_Recv может быть инициирован:
- # Функция MPI_Recv:
- # Прием сообщений при помощи функции MPI_Recv может быть осуществлен:
- # В синхронном режиме передачи завершение функции отправки сообщения происходит:
- # В буферизованном режиме функция отправки сообщения завершается:
- # Режим передачи по готовности может быть использован только если:
- # Применение неблокирующего способа выполнения обменов позволяет:
- # Завершение вызова функции неблокирующего обмена приводит:
- # Функция блокирующего ожидания завершения одного обмена в MPI называется:
- # В коллективных операциях передачи данных обязаны принимать участие:
- # Коллективные операции MPI:
- # Под коллективными операциями в MPI понимаются:
- # Операцию редукции данных MPI_Reduce можно описать:
- # Обобщенная передача данных от всех процессов всем процессам может быть описана как:
- # Операция широковещательной рассылки данных это:
- # Производным типом данных в MPI называется:
- # Сигнатурой производного типа в MPI именуется:
- # Протяженность производного типа в MPI это:
- # При векторном способе новый производный тип создается как:
- # При индексном способе новый производный тип создается как:
- # H-векторный и H-индексный способы создания данных отличаются от векторного и индексного способов тем, что:
- # MPI поддерживает топологии вида:
- # В декартовой топологии множество процессов представляется в виде:
- # Топология типа тор в MPI является частным видом топологии типа:
- # Коллективные операции должны быть вызваны:
- # Для чего в операциях "точка-точка" используется тег:
- # В функциях приема сообщений MPI структура MPI_Status используется для:
- # Структура MPI_Request используется для:
- # Для корректного завершения работы MPI-программы можно вызвать функцию:
- # Вы написали программу на языке C. Эта программа работает корректно на подготовленных тестовых данных, но скорость работы вас не устраивает. Какими инструментами, входящими в комплект поставки Parallel Studio, вы воспользуетесь для увеличения скорости работы вашей программы?
- # Вы написали программу на языке C. Эта программа работает корректно на подготовленных тестовых данных, но скорость работы вас не устраивает. Каким инструментом, входящим в комплект поставки Parallel Studio, вы воспользуетесь для определения участка программы, на выполнение которого расходуется наибольшее количество времени?
- # Вы написали программу на языке C. Эта программа работает не корректно на части тестовых данных. Каким инструментом, входящим в комплект поставки Parallel Studio, вы воспользуетесь для поиска ошибки в вашей программе?
- # Вы написали программу на языке C. При сборке вашей программы выдаётся ошибка: "error LNK2019: unresolved external symbol…". Чем вы воспользуетесь для устранения этой ошибки?
- # Вы написали параллельную программу с использованием потоков на языке C. Вы запустили вашу программу 100 раз на 4-хядерной машине. 98 раз программа отработала корректно, 2 раза программа выдала не корректные данные. Чем вы воспользуетесь в первую очередь при дальнейшей разработке программы?
- # Вы написали параллельную программу с использованием OpenMP на языке C. Распараллеливание осуществляется за счёт одной строчки: “#pragma omp parallel for”. Другие средства OpenMP не используются, переменные окружения не меняются. Вы запустили вашу программу 100 раз на 1-оядерной машине. 58 раз программа отработала корректно, 32 раза программа выдала не корректные данные, 10 раз программа не доработала до конца и завершила работу с ошибкой. Чем вы воспользуетесь в первую очередь при дальнейшей разработке программы?
- # Вы написали параллельную программу с использованием OpenMP на языке C. Эта программа работает корректно на подготовленных тестовых данных. Вы запустили вашу программу два раза на 4-хядерной машине. Первый раз вы запустили программу в один поток, и она работала 39 секунд, второй – в 4 потока и она работала 34 секунды. Чем вы воспользуетесь в первую очередь при дальнейшей разработке программы?
- # Вам выдали работающую последовательную программу, написанную на языке C++. Программа компилируется час, а объём исходников составляет 1.5 MB. Перед вами стоит задача распараллеливания программы. Чем вы воспользуетесь в первую очередь?
- # Вам выдали работающую последовательную программу на языке C++. Вы выполняете оптимизацию программы. Чем вы воспользуетесь в первую очередь для получения более быстрой версии программы?
- # Программный продукт Intel Parallel Inspector решает следующие задачи:
- # Программный продукт Intel Parallel Amplifier решает следующие задачи:
- # Необходимость создания инструментов для отладки и профилирования параллельных программ вызвана следующими причинами:
- # Назначение программного продукта Intel Parallel Inspector состоит в следующем:
- # Назначение программного продукта Intel Parallel Amplifier состоит в следующем:
- # Назначение программного продукта Intel Parallel Advisor состоит в следующем:
- # Процесс оптимизации параллельных программ обычно устроен следующим образом:
- # Успешная отладка и оптимизация параллельных программ в системах с общей памятью требуют:
- # Процесс обнаружения ошибки в параллельных программах обычно устроен следующим образом:
- # Под "гонками данных" понимается ситуация, когда:
- # Под "тупиками" понимается ситуация, когда:
- # Под ситуацией "заброшенные замки" понимается:
- # К чему приводит неравномерное распределение вычислительной нагрузки между потоками?
- # Признаками наличия неравномерной вычислительной нагрузки между потоками являются:
- # На эффективность работы параллельной программы существенное влияние оказывают следующие факторы:
- # Какие из следующих утверждений являются верными?
- # Какие из следующих утверждений являются верными?
- # Какие из следующих утверждений являются верными?
- # Какова цель балансировки нагрузки между потоками:
- # Время, затраченное на следующие операции, может быть причислено к непроизводительным издержкам при работе с потоками:
- # Время, затраченное на следующие операции, может быть причислено к непроизводительным издержкам при работе с потоками:
- # Время, затраченное на следующие операции, может быть причислено к непроизводительным издержкам при работе с потоками:
- # Реализуйте параллельный метод встречной прогонки, оцените его трудоемкость. Сравните теоретическое ускорение параллельного метода с практическим.
- # Сформулируйте три варианта LU-разложения (по столбцу, по строке, компактная схема). Какой из алгоритмов предпочтителен при реализации?
- # Реализуйте метод Гаусса без выбора ведущего элемента. Экспериментально оцените погрешность. Сравните полученную погрешность с погрешностью, которая получается при выборе ведущего элемента по столбцу.
- # Реализуйте метод Гаусса без выбора ведущего элемента. Экспериментально оцените погрешность. Сравните полученную погрешность с погрешностью, которая получается при выборе ведущего элемента по столбцу и по строке.
- # Сформулируйте блочный алгоритм LU-разложения. Будет ли он эффективнее обычного алгоритма.
- # Сформулируйте три варианта разложения Холецкого (строчный, столбцовый, с изменением подматрицы). Какой из алгоритмов предпочтителен при реализации?
- # Сформулируйте блочный алгоритм разложения Холецкого. Будет ли он эффективнее обычного алгоритма?
- # Сформулируйте метод верхней релаксации. Как вы оцениваете свойства метода с точки зрения его возможного распараллеливания?
- # Можно ли применять метод сопряженных градиентов в качестве прямого метода решения системы линейных уравнений? Обоснуйте свой ответ.