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

Реализация параллельного алгоритма

Рассмотрим основные этапы параллельного алгоритма Быстрой сортировки.

1. Нулевой процесс рассылает массив по блокам на остальные процессы. Блоки принимаются и сортируются Быстрой сортировкой (последовательный алгоритм быстрой сортировки реализован в функции QuickSort ).

    Time = clock(); //начало отсчета времени

    MPI_Bcast(&Lenght, 1, MPI_INT, 0, MPI_COMM_WORLD);

    int cons=Length/Size; //определяем размер блоков

    int* Array2 = new int[cons];

    int* Array3 = new int[Length];

    MPI_Scatter(&Array[Rank*cons], cons, MPI_INT, Size, cons, MPI_INT, 0, MPI_COMM_WORLD); //рассылка блоков

    QuickSort(Array, 0,(cons)-1);     //сортировка блоков

2. Процессы отправляют отсортированные блоки нулевому, он их принимает и последовательно сливает.

for (j=0,z=0,k=0;((j<((cons*i)))&&(z<(cons))) ;) if (Array2[j]

    {Array3[k]=Array2[j]; k++;j++;}

    else {Array3[k]=Array[z]; k++;z++;};

    if (j<(cons)*i) for (int f=j;(f<(cons*i)); f++)

    {Array3[k]=Array2[f]; k++;};

    if (z<(cons))

    for (int f=z;

    (f<(cons)); f++)

    {Array3[k]=Array[f]; k++;};

Новости

22.10.2012
04.09.2012
05.04.2012
06.03.2012
02.03.2012