Advertisement
Guest User

Untitled

a guest
Nov 18th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1. 1 #include <omp.h>
  2. 2 #include <stdio.h>
  3. 3 #include <stdlib.h>
  4. 4
  5. 5 int main()
  6. 6 {
  7. 7 int n=4, threads=2;
  8. 8 int *p;
  9. 9 int **r;
  10. 10 int m = threads-1;
  11. 11 int k;
  12. 12
  13. 13 int a[] = {2, 6, 3, 8};
  14. 14 p = malloc(n * sizeof(int));
  15. 15 r = (int **)malloc((2*n-1) * sizeof(int*));
  16. 16 int i, j;
  17. 17 for(i=0; i<(2*n-1); ++i)
  18. 18 r[i] = malloc(n * sizeof(int));
  19. 19
  20. 20 #pragma omp parallel for num_threads(threads)
  21. 21 for(i=0;i<n;++i)
  22. 22 {
  23. 23 #pragma omp parallel for num_threads(threads)
  24. 24 for(j=0;j<n;++j)
  25. 25 {
  26. 26 if(a[i]<a[j])
  27. 27 r[i+n-1][j] = 1;
  28. 28 else
  29. 29 r[i+n-1][j] = 0;
  30. 30 }
  31. 31 }
  32. 32
  33. 33 #pragma omp parallel for num_threads(threads)
  34. 34 for(j=0;j<n;++j)
  35. 35 {
  36. 36 for(k=m-1;k>=0;--k)
  37. 37 #pragma omp parallel for num_threads(threads)
  38. 38 for(i=1<<k;i<1<<(k+1);++i)
  39. 39 r[j][i] = r[j][2*i] + r[j][2*i+1];
  40. 40
  41. 41 p[j] = r[0][j];
  42. 42 }
  43. 43 #pragma omp parallel for num_threads(threads)
  44. 44 for(j=0;j<n;++j)
  45. 45 {
  46. 46 a[p[j]] = a[j];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement