Вопрос 3. Разработать многопоточную программу для нахождения минимального элемента массива целых чисел методом сдваивания.
Добавил: | DMT |
Дата создания: | 30 декабря 2007, 18:20 |
Дата обновления: | 30 декабря 2007, 18:20 |
Просмотров: | 8081 последний вчера, 21:23 |
Комментариев: | 2 |
Вопрос 3. Разработать многопоточную программу для нахождения минимального элемента массива целых чисел методом сдваивания. |
Комментарии для "Вопрос 3. Разработать многопоточную программу для нахождения минимального элемента массива целых чисел методом сдваивания."
Пользователь: ruslan Сообщений: 23 Статус: Незримый Зарегистрирован: 5 января 2008, 2:42 Был:29 января 2008, 21:23 | Дата: 13 января 2008, 1:02 Сообщение № 1 |
|
Пользователь: ruslan Сообщений: 23 Статус: Незримый Зарегистрирован: 5 января 2008, 2:42 Был:29 января 2008, 21:23 | Дата: 16 января 2008, 0:39 Сообщение № 2 |
Теория по методу сдваивания Метод сдваивания.Программу, вычисляющую результат многократного применения ассоциативной бинарной операции, можно реализовать рекурсивно, с помощью функции, аргументом которой являются начальный и конечный индексы массива. Эта функция разбивает массив на две части и затем вызывает себя для обработки каждой из этих частей. Если каждую функцию преобразовать в функцию потока, загружающую два по-тока, то такой подход приводит к алгоритму параллельного вычисления операции над элементами массива, который называется методом сдваивания. Пример. Рассмотрим операцию сложения элементов массива, состоящего из n = 2^k. Можно запустить n/2 потоков, вычисляющих суммы x[0]+x[1], x[2]+x[3], …, x[n-2]+x[n-1]. Затем запускаются n/4 потоков, складывающих попарно полученные суммы и т.д. . При n = 8 информационный граф такого алгоритма вычисления суммы изображен на рис. 5.4. Для вычисления суммы с помощью данного алгоритма рассмотрим рекурсивную функцию, разбивающую массив на два подмассива и вызывающую себя рекурсивно для каждого из этих подмассивов. Эта функция будет вызываться в главной программе с помощью оператора S=sum(0, n-1). Приведём текст рекурсивной функции:
|