diff --git a/Laporan.txt b/Laporan.txt new file mode 100644 index 0000000000000000000000000000000000000000..760aba429e21e8b348f21087d0f9dc3e38f7a21a --- /dev/null +++ b/Laporan.txt @@ -0,0 +1,22 @@ +Jumlah Processor | Jumlah Elemen | Waktu (s) +------------------------------------------------ + 1 | 50000 | 4.459711 + 1 | 100000 | 17.478811 + 1 | 200000 | 68.887656 + 1 | 400000 | 265.848395 + 4 | 50000 | 1.900707 + 4 | 100000 | 7.498740 + 4 | 200000 | 30.601998 + 4 | 400000 | 119.346230 + 8 | 50000 | 0.950886 + 8 | 100000 | 3.859002 + 8 | 200000 | 15.401171 + 8 | 400000 | 61.539769 + 16 | 50000 | 0.480937 + 16 | 100000 | 1.927204 + 16 | 200000 | 7.757075 + 16 | 400000 | 30.912405 + 32 | 50000 | 0.240996 + 32 | 100000 | 0.957297 + 32 | 200000 | 3.830962 + 32 | 400000 | 15.425040 diff --git a/omp_bucketSort b/omp_bucketSort index 40538c133d664a192acf04803d51ca38f0b6bf10..2356c590a7bf8b8ee19c517622eff45065f08a85 100755 Binary files a/omp_bucketSort and b/omp_bucketSort differ diff --git a/omp_bucketSort.c b/omp_bucketSort.c index 4a4baaa0e9617200917f6e53bbdfcb550b6b6ca8..28b921784cf55edee3152405c0957982fd98c978 100644 --- a/omp_bucketSort.c +++ b/omp_bucketSort.c @@ -28,24 +28,37 @@ int main(int argc, char* argv[]){ fprintf(stderr, "usage: %s <number of threads> <number of elements>\n", argv[0]); exit(0); } - thread_count = atoi(argv[1]); n = atoi(argv[2]); // randomize rand_nums = create_rand_nums(n, n); + // determine interval + int range = n/thread_count; + + //find max num elements + int bucket_size[thread_count]; + for(int i = 0; i <thread_count; i++){ + bucket_size[i] = 0; + } + for (int i = 0; i < n; i++){ + int temp = rand_nums[i]; + bucket_size[temp/range] += 1; + } + int max_size = 0; + for (int i = 0; i < thread_count; i++){ + if (max_size < bucket_size[i]) max_size = bucket_size[i]; + } + //max buckets - int buckets[thread_count][n]; + int buckets[thread_count][max_size + 1]; //assign initial buckets capacity to buckets for(int i = 0; i <thread_count; i++){ buckets[i][0] = 0; } - - // determine interval - int range = n/thread_count; - + // assign to buckets for (int i = 0; i < n; i++){ int temp = rand_nums[i]; diff --git a/omp_bucketSort.dSYM/Contents/Resources/DWARF/omp_bucketSort b/omp_bucketSort.dSYM/Contents/Resources/DWARF/omp_bucketSort index 38133ddb6d823ea384d5b4280eb7048611255a44..8eeb163ed057eb68cacceaf0906b46604feb0e44 100644 Binary files a/omp_bucketSort.dSYM/Contents/Resources/DWARF/omp_bucketSort and b/omp_bucketSort.dSYM/Contents/Resources/DWARF/omp_bucketSort differ