Advertisement
Guest User

Untitled

a guest
Jul 29th, 2014
485
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <cuComplex.h>
  3.  
  4. __constant__ char some_constant[16];
  5.  
  6. template <typename T>
  7. __global__ void kernel(T *data){
  8.  
  9. *data = *((T *)some_constant);
  10. }
  11.  
  12. template <typename T>
  13. T testfunc(T data){
  14. cudaMemcpyToSymbol(some_constant, &data, sizeof(T));
  15. T *h_data, *d_data;
  16. h_data = (T *)malloc(sizeof(T));
  17. cudaMalloc(&d_data, sizeof(T));
  18. kernel<<<1,1>>>(d_data);
  19. cudaMemcpy(h_data, d_data, sizeof(T), cudaMemcpyDeviceToHost);
  20. return *h_data;
  21. }
  22.  
  23.  
  24. int main(){
  25.  
  26. // test cuDoubleComplex
  27. cuDoubleComplex my_val1 = make_cuDoubleComplex(1.0, 1.0);
  28. cuDoubleComplex result1 = testfunc(my_val1);
  29. if ((cuCreal(result1) != cuCreal(my_val1))||(cuCimag(result1) != cuCimag(my_val1))) {printf("fail cuDoubleComplex\n"); return 1;}
  30. // test cuComplex
  31. cuComplex my_val2 = make_cuComplex(2.0, 2.0);
  32. cuComplex result2 = testfunc(my_val2);
  33. if ((cuCrealf(result2) != cuCrealf(my_val2))||(cuCimagf(result2) != cuCimagf(my_val2))) {printf("fail cuComplex\n"); return 1;}
  34. printf("Success!\n");
  35. return 0;
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement