Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

Running FFTW Wrapper Library troubles

Kazik
Beginner
187 Views
Hi,
I asked my admins to built the FFTW wrapper library according to these instructions:
http://www.intel.com/software/products/mkl/docs/fftw3xmkl_notes.htm
It looks like everything has been done (new library files have appeared) but for some reason my programmes having FFTW code have not been compiled (whilst everything was working when using g++).
I've tried also several Examples (.../intel/Compiler/11.0/081/mkl/examples/fftw3xc) but still the compilation did not succeeded.
Assuming that we consider example file complex_3d_double_ex1.c the compilation returns:
------------------------------------------------------------------------------------
icpc dfti_example_support.c complex_3d_double_ex1.c -lfftw

dfti_example_support.c(39): error: a value of type "void *" cannot be used to initialize an entity of type "float *"
float* x_in = x_init;
^
dfti_example_support.c(40): error: a value of type "void *" cannot be used to initialize an entity of type "float *"
float* x_exp = res_exp;
^
dfti_example_support.c(68): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_in = x_init;
^
dfti_example_support.c(69): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_exp = res_exp;
^
dfti_example_support.c(97): error: a value of type "void *" cannot be used to initialize an entity of type "float *"
float* x_in = x;
^
dfti_example_support.c(113): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_in = x;
^
dfti_example_support.c(129): error: a value of type "void *" cannot be used to initialize an entity of type "float *"
float* x_in = x;
^
dfti_example_support.c(142): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_in = x;
^
dfti_example_support.c(156): error: a value of type "void *" cannot be used to initialize an entity of type "float *"
float* x_in = x;
^
dfti_example_support.c(165): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_in = x;
^
dfti_example_support.c(175): error: a value of type "void *" cannot be used to initialize an entity of type "float *"
float* x_in = x;
^
dfti_example_support.c(195): error: a value of type "void *" cannot be used to initialize an entity of type "float *"
float* x_2d = x;
^
dfti_example_support.c(228): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_2d = x;
^
dfti_example_support.c(260): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_in = x;
^
dfti_example_support.c(282): error: a value of type "void *" cannot be used to initialize an entity of type "float *"
float* x_in = x;
^
dfti_example_support.c(283): error: a value of type "void *" cannot be used to initialize an entity of type "float *"
float* x_exp = res_exp;
^
dfti_example_support.c(300): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_in = x;
^
dfti_example_support.c(301): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_exp = res_exp;
^
dfti_example_support.c(317): error: a value of type "void *" cannot be used to initialize an entity of type "float *"
float* x_in = x;
^
dfti_example_support.c(318): error: a value of type "void *" cannot be used to initialize an entity of type "float *"
float* x_exp = y;
^
dfti_example_support.c(332): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_in = x;
^
dfti_example_support.c(333): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_exp = y;
^
dfti_example_support.c(435): error: a value of type "void *" cannot be used to initialize an entity of type "float *"
float* x_2d = x;
^
dfti_example_support.c(467): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_2d = x;
^
dfti_example_support.c(499): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_2d = x;
^
dfti_example_support.c(865): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_2d = x;
^
dfti_example_support.c(896): error: a value of type "void *" cannot be used to initialize an entity of type "double *"
double* x_2d = x;
^
compilation aborted for dfti_example_support.c (code 2)
complex_3d_double_ex1.c(77): warning #181: argument is incompatible with corresponding format string conversion
printf(" DFTI_LENGTHS = {%d,%d,%d) \n", m, nn[1], k);
^
complex_3d_double_ex1.c(77): warning #181: argument is incompatible with corresponding format string conversion
printf(" DFTI_LENGTHS = {%d,%d,%d) \n", m, nn[1], k);
^
complex_3d_double_ex1.c(105): error: argument of type "fftw_complex (*)[13][15][12]" is incompatible with parameter of type "fftw_complex *"
Desc_Handle = fftw_plan_dft_3d(nn[0], nn[1], nn[2], &x_in, &x_in, FFTW_FORWARD, FFTW_ESTIMATE);
^
complex_3d_double_ex1.c(105): error: argument of type "fftw_complex (*)[13][15][12]" is incompatible with parameter of type "fftw_complex *"
Desc_Handle = fftw_plan_dft_3d(nn[0], nn[1], nn[2], &x_in, &x_in, FFTW_FORWARD, FFTW_ESTIMATE);
^
complex_3d_double_ex1.c(122): error: argument of type "fftw_complex (*)[13][15][12]" is incompatible with parameter of type "fftw_complex *"
Desc_Handle = fftw_plan_dft_3d(nn[0], nn[1], nn[2], &x_in, &x_in, FFTW_BACKWARD, FFTW_ESTIMATE);
^
complex_3d_double_ex1.c(122): error: argument of type "fftw_complex (*)[13][15][12]" is incompatible with parameter of type "fftw_complex *"
Desc_Handle = fftw_plan_dft_3d(nn[0], nn[1], nn[2], &x_in, &x_in, FFTW_BACKWARD, FFTW_ESTIMATE);
^
compilation aborted for complex_3d_double_ex1.c (code 2)
------------------------------------------------------------------------------------
And by using makefile (.../intel/Compiler/11.0/081/mkl/examples/fftw3xc):
make libem64t complex_3d_double_ex1
------------------------------------------------------------------------------------
make wrap_lib _IA=em64t
make[1]: Entering directory `/local/intel/Compiler/11.0/081/mkl/examples/fftw3xc'
cd "../.."/interfaces/fftw3xc && make libem64t PRECISION=MKL_DOUBLE compiler=intel INSTALL_DIR=/local/intel/Compiler/11.0/081/mkl/examples/fftw3xc/lib/em64t SPEC_OPT=""
make[2]: Entering directory `/local/intel/Compiler/11.0/081/mkl/interfaces/fftw3xc'
make clean libfftw3xc_intel.a _IA=em64t
make[3]: Entering directory `/local/intel/Compiler/11.0/081/mkl/interfaces/fftw3xc'
rm -rf /local/intel/Compiler/11.0/081/mkl/examples/fftw3xc/lib/em64t/obj
rm -f /local/intel/Compiler/11.0/081/mkl/examples/fftw3xc/lib/em64t/libfftw3xc_intel.a
mkdir -p /local/intel/Compiler/11.0/081/mkl/examples/fftw3xc/lib/em64t/obj
mkdir: cannot create directory `/local/intel/Compiler/11.0/081/mkl/examples/fftw3xc/lib': Read-only file system
make[3]: *** [libfftw3xc_intel.a] Error 1
make[3]: Leaving directory `/local/intel/Compiler/11.0/081/mkl/interfaces/fftw3xc'
make[2]: *** [libem64t] Error 2
make[2]: Leaving directory `/local/intel/Compiler/11.0/081/mkl/interfaces/fftw3xc'
make[1]: *** [wrap_lib] Error 2
make[1]: Leaving directory `/local/intel/Compiler/11.0/081/mkl/examples/fftw3xc'
make: *** [libem64t] Error 2
------------------------------------------------------------------------------------

I will be very grateful for any help.
Thank you in advance.
--
Kind regards,
Kazik
0 Kudos
4 Replies
Kazik
Beginner
187 Views
Can anybody help? Please.
--
Best,
Kazik
Ying_H_Intel
Employee
187 Views
Quoting - Kazik
Can anybody help? Please.
--
Best,
Kazik

Hello Kazik,

When you enter the comand :
make libem64t complex_3d_double_ex1,
It will rebuild libfftw3xc_intel.a to current directory.
But from the error message : mkdir: cannot create directory `/local/intel/Compiler/11.0/081/mkl/examples/fftw3xc/lib': Read-only file system ,
looks you haven't write right with the directory? Could you please check it and add write if possible?

Regarding icpc problem, icpc is supposed for c++ file.Since dfti_example_support.c complex_3d_double_ex1.c are c language, you may use icc to build them for example.

icc -I/opt/intel/Compiler/11.0/083/mkl/include/fftw source/complex_3d_double_ex1.c source/dfti_example_support.c -L./lib/em64t -lfftw3xc_intel -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -o complex_3d_double_ex1


You mentioned g++ can work? do you use special compiler option when build the complex_3d_double_ex1.c ?
(my test show g++ show many compiler error too, where if use gcc, the compile processingis ok).


Best Regards,
Ying
Kazik
Beginner
187 Views
Hello Ying,

I'm sorry for the delay in answering. To make the story short:
1) Yes, using icc helped and I compiled the examples successfully.
2) My biggest mistake with the code that I have written on my own was that I have implemented some functions from the previous version of FFTW, which were not supported by FFTW3 any more (as Was suggested in one of the previous posts). When I've rewritten the code using FFTW3-functions everything went OK. So it was basically very silly mistake...

Thank you for your post, I've almost lost a hope that this discussion forum is alive.
--
Kind regards,
Kazik

Ying_H_Intel
Employee
187 Views
Hello Kazik,

Thank you for your reply. Sorry for our deley in Forum. In general, weencourageforum participant to share information and solve problemeach other first. Andreply the probelm if no one can help :).

Kind Regards,
Ying
Reply