Содержание
- 2. План Конвейер Матричная обработка Распараллеливание циклов
- 3. Конвейер Конвейерная обработка – метод распараллеливания существенно последовательных операций Процессоры соединяются так, чтобы результат работы одного
- 4. Использование конвейера Параллелизм на уровне инструкций Конвейерная обработка в процессорах Параллелизм на уровне процедур Конвейерное объединение
- 5. Когда конвейер эффективный Три случая С помощью конвейера необходимо решить несколько последовательных задач С помощью конвейера
- 6. Пример: конвейер первого типа Пример: Нахождение суммы нескольких значений Есть p процессоров У каждого процессора есть
- 7. Реализация // i – номер поточного процессора // d- дані поточного процесора // sum – проміжне
- 8. Время выполнения первой задачи Каждый процессор получает результат предыдущего Добавляет к нему свое значение и отправляет
- 9. Время решения нескольких задач Пусть задачу необходимо решить m раз для m наборов данных на каждом
- 10. Время выполнения при большом количестве задач Предел коэффициента ускорения при m->∞ При очень большом количестве задач
- 11. Иллюстрация
- 12. Графическая иллюстрация Доля последовательных вычислений зависит от количества задач
- 13. Вводы относительно конвейера первого типа Эффективность конвейера всегда меньше единицы Для получения высоких коэффициентов ускорения необходимо,
- 14. Конвейер второго типа Пример: сортировка массива значений На входе есть большой массив данных Каждый процессор получает
- 15. Программа recv(i-1,x) for(j=0;j recv(i-1,number) if(number > x) { Send(i+1,x); } else { send(i+1, number); } }
- 16. Оценка времени Каждый процессор выполняет порядка n операций сравнения параллельно с остальными Самый быстрый последовательный алгоритм
- 17. Конвейер третьего типа Одновременная передача данных и обработка (Send-ahead) Если полученные от предыдущего процессора данные можно
- 18. Пример конвейера третьего типа Обратный ход метода Гаусса Матрица треугольной формы
- 19. Решение
- 20. Последовательная программа // по всем неизвестным for(i=1; i sum=0; // по всем найденным неизвестным for(j=1;j sum+=a[i][j]*x[j];
- 21. Параллельная программа Процессор 1 –вычисляет x1 и передает его дальше Процессор 2 принимает x1 передает его
- 22. Параллельная программа for(j=1;j recv(p-1,x[j]) send(p+1,x[j]) } sum=0; for(j=1; i } x[i]=(b[i]-sum)/a[i][j]; send(p+1,x[i])
- 23. Эффективность Последовательный алгоритм O(n2) операций Параллельный алгоритм – каждый процессор порядка O(n) операций Ускорение порядка O(n)
- 24. Выводы относительно конвейера Самый простой и дешевый вариант распараллеливания Возможность распараллеливания принципиально последовательных операций Возможность одновременного
- 25. Матричная (векторная, параллельная) обработка Каждый процессор получает часть своей задачи и выполняет ее параллельно с другими
- 26. Ускорение Ускорение при равномерной загрузке процессоров стремится к количеству процессоров Эффективность стремится к единице Процессоры большую
- 27. Преимущества Высокая эффективность Обмен мало влияет на скорость выполнения
- 28. Недостатки Синхронный режим работы Во время синхронизации процессоры простаивают Нет возможности выполнять обмен одновременно с вычислениями
- 29. Векторно-конвейерная схема Вектор – массив элементов одинакового типа Векторные операции – большое количество одинаковых операций с
- 30. сложение двух чисел Сложение чисел стандарт ANSI/IEEE [A:] сравнение порядков и определение меньшего числа [B:] сдвиг
- 31. Пример сложения x+y, где x=1234,00 y = -567,8
- 32. Оценка времени Время выполнения одной стадии t Время сложения двух чисел 6t Сложение двух векторов длины
- 33. Диаграмма состояний
- 34. Конвейерное выполнение После выполнения первой стадии с первым числом сразу же запускается первая стадия со вторым
- 35. Оценка времени Время сложения двух векторов Коэффициент ускорения
- 36. Параметры векторно-конвейерной системы Размерность вектора, при котором скорость работы векторного процессора становится большей, чем скалярного (2
- 37. Распараллеливание циклов Циклы типа for() обычно хорошо распараллеливаются Циклы типа while распараллеливаются обычно плохо Два подхода
- 38. Разбивка на блоки for(i=0; i // тіло циклу a[i]=b[i]+1; } Цикл разбивается на блоки каждый блок
- 39. Пример разбивки на блоки Цикл разбивается на p циклов Каждый процессор выполняет свой цикл for(j=0;j for(i=j;
- 40. Эффективность При отсутствии связи между данными внутри цикла эффективность стремится к 1
- 41. Развертка циклов Часть операций цикла можно заменить последовательностью операций и выполнить с помощью конвейера for(i=0; i
- 42. Векторизация циклов Часть операций цикла можно заменить последовательностью операций и выполнить с помощью векторных команд (mmx,
- 43. Работа с большими матрицами В прикладных задачах часто возникает проблема работы с матрицами большого размера (100000х100000
- 44. Блочные методы Матрица разбивается на части – блоки (rxq блоков) Каждый блок хранится в памяти одного
- 45. Математика блочных операций Математически операции с блочными матрицами выполняются так же, как и операции с обычными
- 46. Распараллеливание блочных операций Вычисление каждого блока результата может выполняться параллельно с вычислением других блоков результата Эффективность
- 47. Геометрическое распараллеливание Процессоры, которые интенсивно взаимодействуют между собой должны находится «ближе» например располагаться на одном узле
- 49. Скачать презентацию