Skip to content
Snippets Groups Projects
Commit e1f9f722 authored by 13513042's avatar 13513042
Browse files

Finishedgit add .

parent 9d06b32a
No related merge requests found
No preview for this file type
...@@ -86,12 +86,6 @@ int *insertionSort(int *array,int n){ ...@@ -86,12 +86,6 @@ int *insertionSort(int *array,int n){
} }
} }
printf("Sorted list in ascending order:\n");
for (c = 0; c <= n - 1; c++) {
printf("%d\n", array[c]);
}
return array; return array;
} }
...@@ -103,9 +97,16 @@ void printBucket (Bucket b) { ...@@ -103,9 +97,16 @@ void printBucket (Bucket b) {
} }
} }
void printArray (int *array, int size) {
int i;
for (i = 0; i < size; i++) {
printf("[%d]", array[i]);
}
}
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
MPI_Init(&argc, &argv); MPI_Init(NULL, NULL);
int world_rank; int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
...@@ -113,9 +114,10 @@ int main(int argc, char *argv[]) { ...@@ -113,9 +114,10 @@ int main(int argc, char *argv[]) {
int world_size; int world_size;
MPI_Comm_size(MPI_COMM_WORLD, &world_size); MPI_Comm_size(MPI_COMM_WORLD, &world_size);
int array_size = 10; int array_size = atoi(argv[1]);
int *array = NULL; int *array = NULL;
Bucket *buckets = NULL; Bucket *buckets = NULL;
if (world_rank == 0) { if (world_rank == 0) {
// Ini kalo proses utama jadinya dia yang bikin masalah trus disebar // Ini kalo proses utama jadinya dia yang bikin masalah trus disebar
// ke proses lainnya buat diselesaikan // ke proses lainnya buat diselesaikan
...@@ -124,9 +126,67 @@ int main(int argc, char *argv[]) { ...@@ -124,9 +126,67 @@ int main(int argc, char *argv[]) {
// Bikin bucket buat memecah pecah masalah jadi lebih kecil // Bikin bucket buat memecah pecah masalah jadi lebih kecil
buckets = createBucket(array, searchMax(array,array_size), array_size, world_size); buckets = createBucket(array, searchMax(array,array_size), array_size, world_size);
printBucket(buckets[0]); //printBucket(buckets[0]);
int i = 0;
int *sorted_all[world_size];
int sorted_size[world_size];
double start_time = 0.0;
double end_time = 0.0;
start_time = MPI_Wtime();
int *sorted_zero = insertionSort(buckets[0].content, buckets[0].size);
sorted_all[0] = intdup(sorted_zero, buckets[0].size);
sorted_size[0] = buckets[0].size;
for (i = 1; i < world_size; i++) {
// Ukuran
MPI_Send(&buckets[i].size, 1, MPI_INT, i, 0, MPI_COMM_WORLD);
// Data
MPI_Send(buckets[i].content, buckets[i].size, MPI_INT, i, 1, MPI_COMM_WORLD);
}
for (i = 1; i < world_size; i++) {
int rec_size = 0;
int *received = (int *) malloc(sizeof(int) * array_size);
MPI_Recv(&rec_size, 1, MPI_INT, i, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE );
MPI_Recv(received, rec_size, MPI_INT, i, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE );
sorted_all[i] = intdup(received, rec_size);
sorted_size[i] = rec_size;
}
end_time = MPI_Wtime();
printf("Time allocated to sort: %G\n", end_time-start_time);
for (i = 0; i < world_size; i++) {
printArray(sorted_all[i], sorted_size[i]);
}
} else {
int rec_size = 0;
int *received = (int *) malloc(sizeof(int) * array_size);
MPI_Recv(&rec_size, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE );
MPI_Recv(received, rec_size, MPI_INT, 0, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE );
int *sorted = insertionSort(received, rec_size);
// Kirim Balik
// Ukuran
MPI_Send(&rec_size, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
// Data
MPI_Send(sorted, rec_size, MPI_INT, 0, 1, MPI_COMM_WORLD);
} }
MPI_Finalize(); MPI_Finalize();
} }
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment