Новости
О Центре
Кластер
Обучение
Основной курс по параллельному программированию
Учебные курсы
Магистратура
Дополнительное образование
Работы студентов
Библиотека
Исследования
Конференции
Полезные ссылки
NVIDIA
Контакты
О сайте
Имя:
Пароль:
запомнить:
Забыли пароль? Регистрация

Анализ эффективности

Определим сложность последовательного алгоритма. Если количество элементов массива n, тогда количество сравнений при слиянии n . Количество уровней рекурсии log2n, тогда время выполнения последовательной задачи:

T1 = t*nlog2n

Определим сложность параллельного алгоритма. Каждый процесс производит сортировку слиянием блока размером n/p, где n - количество элементов массива, p - количество процессов. Получаем оценку:

t1 = (n/p)*log2(n/p)

Отсортированные блоки сливаются на нулевом процессе, количество сравнений при каждом слиянии 2*n/p, всего присходит p итерраций слияния, следовательно

t2 = p*(2n/p)=2n

Общее время всех выполняемых в ходе сортировки операций передачи блоков можно оценить при помощи соотношения вида

Tp(comm)=p(a+w(n/p)/b),

где a - латентность, b - пропускная способность сети передачи данных, w - размер элемента упорядочиваемых данных в байтах.

Время выполнения параллельного алгоритма сортировки слиянием определяется суммой

Tp = Tp(comm)+ t1 + t2,

Tp = p(a+w(n/p)/b)+t((n/p)*log2(n/p) + 2n)

Соответственно ускорение равно:

Sp = tnlog2n  /  [p(a+w(n/p)/b)+t((n/p)*log2(n/p) + 2n)]   

Ускорение:

Ep = tnlog2n  /  p[p(a+w(n/p)/b)+t((n/p)*log2(n/p) + 2n)]

Новости

22.10.2012
04.09.2012
05.04.2012
06.03.2012
02.03.2012