Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <cuComplex.h>
- __constant__ char some_constant[16];
- template <typename T>
- __global__ void kernel(T *data){
- *data = *((T *)some_constant);
- }
- template <typename T>
- T testfunc(T data){
- cudaMemcpyToSymbol(some_constant, &data, sizeof(T));
- T *h_data, *d_data;
- h_data = (T *)malloc(sizeof(T));
- cudaMalloc(&d_data, sizeof(T));
- kernel<<<1,1>>>(d_data);
- cudaMemcpy(h_data, d_data, sizeof(T), cudaMemcpyDeviceToHost);
- return *h_data;
- }
- int main(){
- // test cuDoubleComplex
- cuDoubleComplex my_val1 = make_cuDoubleComplex(1.0, 1.0);
- cuDoubleComplex result1 = testfunc(my_val1);
- if ((cuCreal(result1) != cuCreal(my_val1))||(cuCimag(result1) != cuCimag(my_val1))) {printf("fail cuDoubleComplex\n"); return 1;}
- // test cuComplex
- cuComplex my_val2 = make_cuComplex(2.0, 2.0);
- cuComplex result2 = testfunc(my_val2);
- if ((cuCrealf(result2) != cuCrealf(my_val2))||(cuCimagf(result2) != cuCimagf(my_val2))) {printf("fail cuComplex\n"); return 1;}
- printf("Success!\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement