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

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

Проанализируем эффективность алгоритма для p процессоров и N.

Временные затраты на ускорение алгоритма:

Каждую итерацию массив делится случайно. На первой итерации при делении на 2 части с меньшими и большими элеменами с разделяющим ведущем пусть длина меньшей части n1. Алгоритм отправляет её на другой процессор сортироваться параллельно, а так как она короче, то и досортируется быстрее, значит время её сортировки не учитывается. Длина большей части N-n1, с этой частью мы проделываем точно такую же итерацию с разделителем n2. И так далее до момента, когда число свободных процессоров закончится, то есть до разделителя nk. Где p=2^k.

T1=[N+(N-n1)+(N-n1-n2)+...+(N-n1-...-nk)]*t, где t - время перестановки.

Временные затраты на работу алгоритма при максимальном ускорении:

После достижения максимального ускорения алгоритм будет работать в режиме стандартной быстрой сортировки. Последняя бОльшая, и поэтому учитываемая, часть будет иметь длину (N-n1-...-nk).

T2=[(N-n1-...-nk)log₂(N-n1-...-nk)]*t, где t - время перестановки.

Временные затраты на передачу частей массива процессам:

T3=(α+w/β)(log₂(p))^2 + (α+w(N/2p)/β)(log₂(p)), где α - латентность, β - пропускная способность сети, а w – размер элемента набора в байтах.

Общие временные затраты параллельного алгоритма:

T=T1+T2+T3 *В качестве n берется среднее число, которым может быть разбиение. То есть (из теории вероятности) - 3/4.

Новости

22.10.2012
04.09.2012
05.04.2012
06.03.2012
02.03.2012