В ходе лабораторной работы необходимо:
1. Выполнить реализацию алгоритма параллельной сортировки слиянием
2. Выполнить реализацию алгоритма последовательной сортировки слиянием
3. Рассчитать теоретическое ускорение и эффективность
4. Провести эксперименты и сравнить ускорение параллельной и последовательной версии.
delete[] temp;
Анализ эффективности
n – количество элементов
T(n) = n * log2n
Параллельная версия
Реализация параллельной сортировки слиянием была выполнена с помощью MPI.
Описание алгоритма
1. Получение размера сортируемого массива
2. Заполнение массива
3. Распределение массива по всем процессорам
4. Сортировка блока на каждом процессоре
5. Слияние блоков происходит в виде дерева
Реализация алгоритма
Распределение данных:
if(processorId == 0)
{
data = new int[sizeOfData];
for(int i=0; i
data[i] = rand();
localData = new int[sizeOfLocalData];
for(int i=0; i
localData[i] = data[i];
for(int i=1; i
MPI_Send(&data[i*sizeOfLocalData], sizeOfLocalData, MPI_INT, i, 0, MPI_COMM_WORLD);
StartCounter();
}
else
{
localData = new int[sizeOfLocalData];
for(int i=0; i
{
if((processorId % step) == 0)
{
if(and(processorId, simpleMask(i)) == 0)
{
int *tempData = new int[sizeOfLocalData];
int *commonTempData = new int[2*sizeOfLocalData];