Как я могу напечатать переменную типа cufftDoubleComplex? - PullRequest
0 голосов
/ 20 января 2020

Как я могу напечатать переменную типа cufftDoubleComplex в CUDA C ++, я попытался сделать это, используя printf:

cufftDoubleComplex Fd;
printf("%f", Fd); //not working

, но я получил эту ошибку, и она не работала во время выполнения:

предупреждение C4477: 'printf': строка формата '% f' требует аргумент типа 'double', но переменная c аргумент 1 имеет тип 'cufftDoubleComplex'

Как я могу распечатать это? Какую строку формата использовать внутри printf?

1 Ответ

1 голос
/ 20 января 2020

Это будет макет, совместимый с double [2], поэтому просто приведите его и напечатайте два поля:

printf("re: %f  im: %f\n", ((double*)&Fd)[0], ((double*)&Fd)[1]);

Это не «безопасный сейф», но поскольку CuFFT обещает быть совместимым с fftw, компоновка типа гарантированно совместима таким образом.

Правка, это предпочтительно, cufftDoubleComplex - это определение типа cuDoubleComplex, которое имеет только два поля x, y (плохие имена):

printf("re: %f  im: %f\n", Fd.x, Fd.y);
...