-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathParallelMergeSort.cpp
More file actions
38 lines (31 loc) · 1.07 KB
/
ParallelMergeSort.cpp
File metadata and controls
38 lines (31 loc) · 1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "MergeSort.h"
#include <iostream>
#include <random>
#include <chrono>
int main() {
MergeSort m;
const uint64_t size = ((32 * 1024 * 1024) / NO_OF_THREADS) * NO_OF_THREADS;
auto seqData = m.createRandomData(size);
std::vector<int> parData(seqData);
std::vector<int> ompData(seqData);
uint64_t seqTime = m.seqMergeSort(seqData);
if (!m.prove(seqData)) {
std::cout << "seq sort did not sort..." << std::endl;
exit(-42);
}
uint64_t parTime = m.parMergeSort(parData);
if (!m.equal(seqData, parData)) {
std::cout << "par sort did not sort..." << std::endl;
exit(-42);
}
uint64_t ompTime = m.ompMergeSort(ompData);
if (!m.equal(seqData, ompData)) {
std::cout << "omp sort did not sort..." << std::endl;
exit(-42);
}
std::cout << "sorted seq in " << seqTime << "ms" << std::endl;
std::cout << "sorted par in " << parTime << "ms" << std::endl;
std::cout << "sorted omp in " << ompTime << "ms" << std::endl;
std::cout << "speedup thr is " << (double)seqTime / parTime << std::endl;
std::cout << "speedup omp is " << (double)seqTime / ompTime << std::endl;
}