Решение проблемы гонки при реализации параллелизации Опишите модель выполнения "Fork&Join"
Скачать 1.93 Mb.
|
1. Чем обусловлены накладные расходы в параллельных программах? Решение проблемы гонки при реализации параллелизации 2. Опишите модель выполнения “Fork&Join” 3. Как при помощи средств OpenMP можно узнать количество запущенных в данный момент потоков и номер конкретного потока? 4. Что такое ситуация “гонки”? Когда она возникает? “гонка” (race condition). При ее возникновении потоки конкурируют между собой за доступ к общим ресурсам, и результат работы параллельной программы зависит от того, в какой последовательности выполнялись параллельные секции. Пример разрешения ситуации. Существует несколько вариантов для решения данной проблемы. Мы рассмотрим только один из них – редукцию (reduction). Редукцией называется операция сведения результатов работы отдельных потоков для получения итогового результата. В нашем примере каждый поток мог бы локально накапливать сумму произведений элементов, которая при завершении работы потока безопасно объединилась бы с результатами других потоков. Приведенный ниже фрагмент программы обеспечивает правильную работу алгоритма при помощи редукции с использованием операции “+” по переменной “sum”: 5. Перечислите все механизмы синхронизации потоков в OpenMP. 6. Что такое редукция? Какие операции редукции допустимы в OpenMP? 7. Чем ждущая блокировка отличается от обычной? 8. Перечислите преимущества атомарных операций. 9. О чем говорит закон Амдала? Учитываются ли накладные расходы в данном законе? 10. Какие функции в OpenMP используются для измерения временных интервалов? 11. Какие виды диспетчеризации потоков реализованы в OpenMP? Каковы их отличительные особенности? |