daily pastebin goal
2%
SHARE
TWEET

Untitled

a guest Nov 18th, 2017 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <omp.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int main(int argc, char *argv[]) {
  6.  
  7.     int n = 8, m = 3;
  8.     int k, j, i;
  9.     int vector[8] = { 4, 8, 5, 2, 10, 6, 9, 11 };
  10.  
  11.     int *b;
  12.     int *a;
  13.  
  14.   a = calloc(2 * n , sizeof(int));
  15.   b = calloc(2 * n , sizeof(int));
  16.  
  17.   printf("\n");
  18.     for (i = n; i < 2 * n; i++) {
  19.         a[i] = vector[i - 8];
  20.     }
  21.     for (k = m-1; k >= 0; k--) {
  22. #pragma omp parallel for num_threads(1<<k)
  23.         for (j = (1 << k); j <= ((1 << (k + 1)) - 1); j++)
  24.             a[j] = a[2 * j] + a[2 * j + 1];
  25.     }
  26.     printf("A[1]=%d\n\n", a[1]);
  27.  
  28.     b[1] = a[1];
  29.  
  30.     for (k = 1; k <= m; k++) {
  31. #pragma omp parallel for num_threads(1<<k)
  32.         for (j = (1 << k); j <= ((1 << (k + 1)) - 1); j++) {
  33.             if (j % 2 == 1) {
  34.                 b[j] = b[(j - 1) / 2];
  35.             } else {
  36.                 b[j] = b[j / 2] - a[j + 1];
  37.             }
  38.         }
  39.     }
  40.     for (i = 1; i < 2 * n; i++) {
  41.         printf("B[%i]=%d \n", i, b[i]);
  42.     }
  43.   printf("\n");
  44.     free(b);
  45.     free(a);
  46.  
  47.     return 0;
  48. }
RAW Paste Data
Top