pborawski

cuda nie cala

Jun 5th, 2014
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.84 KB | None | 0 0
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "time.h"
  4. #include "math.h"
  5. #include "cuda.h"
  6.  
  7. #define N 1000000
  8.  
  9. __global__ void AddVec(float * x, float * y)
  10. {
  11.     int i = threadIdx.x;
  12.     float a = 1.2f;
  13.     y[i] =  a * x[i] + y[i];
  14. }
  15.  
  16. void uzupelnij(float * x, float * y, int n)
  17. {
  18.     int i;
  19.     for (i = 0; i < n; ++i)
  20.     {
  21.         x[i] = i;
  22.         y[i] = 2 * i;
  23.     }
  24. }
  25.  
  26. int main(int argc, char const *argv[])
  27. {
  28.     clock_t czas1, czas2;
  29.     float * x, *y, * dx, * dy;
  30.  
  31.     uzupelnij(x, y, N);
  32.     cudaMalloc(&dx, N * sizeof(float));
  33.     cudaMalloc(&dy, N * sizeof(float));
  34.  
  35.     cudaMemcpy(dx, x, N * sizeof(float), cudaMemcpyHostToDevice);
  36.     cudaMemcpy(dy, y, N * sizeof(float), cudaMemcpyHostToDevice);
  37.  
  38.  
  39.     czas1 = clock();
  40.  
  41.     AddVec<<<1, N>>>(x, y);
  42.  
  43.     czas2 = clock();   
  44.  
  45.     printf("Ilosc czasu to: %f\n", (float)(czas2 - czas1) / CLOCKS_PER_SEC);
  46.  
  47.     return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment