Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!

How to link cluster fft under windows

deniz_v_
Beginner
188 Views

I have been trying to compile and run my cluster fft code which contains mpi. I have been successful in single core mkl fft with this command

ifort /Qmkl "C:\Program Files (x86)\Intel\Composer XE 2011 SP1\mkl\include\mkl_dfti.f90" fft_single.f90

But when it comes to cluster fft,below fails to link

mpif90 /Qmkl "C:\Program Files (x86)\Intel\Composer XE 2011 SP1\mkl\include\mkl_cdft.f90" fft_mpi.f90

It gives me : There is no matching specific function for this generic function reference DFTICREATEDESCRIPTORDM. I also noticed that when i give these functions a wrong handle or parameter, it gives exactly the same error (for ifort). Error algorithm cannot make a difference between a wrongly written function name and wrongly given parameter in it.

So how can i compile/link cluster fft scripts. Is there a problem in linking or is there a problem in coding? A give a very basic script below, it should be able to at least compile and link this

program main
use mpi
Use MKL_CDFT

complex(8), allocatable :: A(:)

integer :: len(2),ierr,id,numprocs
type(DFTI_DESCRIPTOR), POINTER :: FFT

call MPI_INIT(ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD,numprocs,ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD,id,ierr)

len(1)=4; len(2)=4

status = DftiCreateDescriptorDM(MPI_COMM_WORLD,FFT,DFTI_DOUBLE,DFTI_COMPLEX,2,len)
call mpi_finalize(ierr)

end program main

0 Kudos
6 Replies
TimP
Black Belt
188 Views
I'm not familiar with that function. The message indicates a discrepancy between the function arguments you provided and those required according to MKL_CDFT. Discrepancy could be in number of arguments, type, or rank.
deniz_v_
Beginner
188 Views
I tried couple of things, i tried linking another libraries, i tried adding another "use - include" packages, all leads to same result. If i understand correctly you say there is something wrong in code? I should alter the code in order to be able to compile? Is it a compilation error? I use "use mkl_dfti" header when i write it for single core (ifort). I use " use mkl_cdft" header for multi-core( cluster or mpi). And i link correspondent source code for these. There is more than 1 function (DftiCreateDescriptorDM). These are pack of functions for fft calculations. I wrote first of them to keep it simple. Interestingly the script above works. When i comply it with ifort for single core. Ofcourse i had to remove mpi calls and i had to change DftiCreateDescriptorDM to DftiCreateDescriptor. I looked at the C examples of cluster fft and it looks like i'm doing it right. My guess is, i fail to link it with proper package. Any help is appreciated, i'm experienced in fortran and mpi but im very new in intel mkl packages.
Evarist_F_Intel
Employee
188 Views
Hi, Deniz! The problem is that /Qmkl doesn't include MKL cluster libraries where DftiCommitDescriptorDM is implemented. Did you tried to link with /Qmkl:cluster option as it's written in here: http://software.intel.com/en-us/articles/using-mkl-in-intel-compiler-mkl-qmkl-options or http://software.intel.com/sites/products/documentation/doclib/stdxe/2013/composerxe/compiler/cpp-mac.... If this doesn't help, please try to set libraries for linker explicitly. I should be something like: mpif90 ... /LIBPATH:$(MKL_LIB_PATH) $(MKL_LIBS) where (e.g.) $(MKL_LIB_PATH) = C:\Program Files (x86)\Intel\Composer XE 2011 SP1\mkl\lib\intel64 $(MKL_LIBS) = mkl_cdft_core.lib mkl_intel_ilp64.lib mkl_intel_thread.lib mkl_core.lib mkl_blacs_intelmpi_ilp64.lib -Qopenmp Also please find some additional info here: http://software.intel.com/sites/products/documentation/hpc/mkl/mkl_userguide_lnx/GUID-75CABA2D-272A-...
barragan_villanueva_
Valued Contributor I
188 Views
Hi, To link with cluster MKL it needs to use /Qmkl:cluster option. Please try also MKL link Advisor http://software.intel.com/sites/products/mkl/ to specify explicitly MKL libraries in command line
deniz_v_
Beginner
188 Views
Thank you Victor Pasko Adding /Qmkl:cluster option did the trick. So working command is now mpif90 /Qmkl:cluster "C:\Program Files (x86)\Intel\Composer XE 2011 SP1\mkl\include\mkl_cdft.f90" fft_cluster.f90 I also added the working final code for this. For people who learns by examples. I hardly find any fortran example for mkl. It's a simple fft for 2 dimensional matrix. I compared the results to Matlab's fftn function and its working (same) for my 4 core PC. Feel free to modify :D
deniz_v_
Beginner
188 Views
This is the file
Reply