- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi!
I have the questions:I want to use the FFT, but now the errors appeared, I don't know how to deal whit them .Can you tell me the reasons of the errors,and tell me how to deal with them.
Thank you !
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The arguments that you are trying to pass to the routine do not match any of the correct combinations. In order to give you a specific answer, we need to see the list of actual arguments, their declarations, and information about USE statements/interface blocks in the calling subprogram. If the code is of moderate size, you may post it as-is.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you answer my question. My code as followings:
integer ii,jj
complex*8:: HzExten(Nx,Ny),ExTenFactHx(Nx,Ny),ExtenFactHy(Nx,Ny),HzExten_X(Nx,Ny),HzExten_Y(Nx,Ny)
type(DFTI_DESCRIPTOR),pointer:: FFT_handle
status=DftiCreateDescriptor(FFT_handle,DFTI_DOUBLE,DFTI_COMPLEX,2,L)
status=DftiCommitDescriptor(FFT_handle)
status=DftiComputeForward(FFT_handle,HzExten)
status=DftiFreeDescriptor(FFT_handle)
And then I do the inverse transformation, the same errors appeared.The followings are the errors:
error #6284: There is no matching specific function for this generic function reference. [DFTICOMPUTEFORWARD]
error #6284: There is no matching specific function for this generic function reference. [DFTICOMPUTEBACKWARD]
Look forward your message.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dima,
Thank you very much,the errors were dealed.
Thanks,
Amy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Dima,
When I follow your advice I deal with the errors,but the new questions appeared:
/tmp/ifortboJ6Hx.o: In function `iteration_':
ground.f90:(.text+0x9d45): undefined reference to `dfti_create_descriptor_highd'
ground.f90:(.text+0x9d4f): undefined reference to `dfti_commit_descriptor_external'
ground.f90:(.text+0x9d86): undefined reference to `dfti_compute_forward_c'
ground.f90:(.text+0x9daa): undefined reference to `dfti_free_descriptor_external'
ground.f90:(.text+0x9e45): undefined reference to `dfti_create_descriptor_highd'
ground.f90:(.text+0x9e4f): undefined reference to `dfti_commit_descriptor_external'
ground.f90:(.text+0x9e8b): undefined reference to `dfti_compute_backward_c'
ground.f90:(.text+0x9e99): undefined reference to `dfti_compute_backward_c'
ground.f90:(.text+0x9eb3): undefined reference to `dfti_free_descriptor_external'
/tmp/ifortboJ6Hx.o: In function `continuation_hz2hxhy_mkl_':
ground.f90:(.text+0x18bd1): undefined reference to `dfti_create_descriptor_highd'
ground.f90:(.text+0x18bdb): undefined reference to `dfti_commit_descriptor_external'
ground.f90:(.text+0x18bfd): undefined reference to `dfti_compute_forward_c'
ground.f90:(.text+0x18c13): undefined reference to `dfti_free_descriptor_external'
ground.f90:(.text+0x18cb6): undefined reference to `dfti_create_descriptor_highd'
ground.f90:(.text+0x18cc0): undefined reference to `dfti_commit_descriptor_external'
ground.f90:(.text+0x18ce7): undefined reference to `dfti_compute_backward_c'
ground.f90:(.text+0x18cf4): undefined reference to `dfti_compute_backward_c'
ground.f90:(.text+0x18d0f): undefined reference to `dfti_free_descriptor_external'
make: *** [ground.out] 错误 1
Can you give me some ideas?
Thanks,
Amy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Please state the options used in the command line for building the executable. Did you use -mkl, for example?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes,I use the mkl.
use MKL_DFTI
status=DftiCreateDescriptor(FFT_handle,DFTI_DOUBLE,DFTI_COMPLEX,2,L)
status=DftiCommitDescriptor(FFT_handle)
do i=1,Ny
status=DftiComputeForward(FFT_handle,HzExten(:,i))
end do
status=DftiFreeDescriptor(FFT_handle)
And at the top of the program,I write the 'Include mkl_dfti.f90'to use the mkl.
Can you give me some advice?
Thanks,
Amy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The MKL library is not linked unless you ask for it, and a USE statement in the source does not necessarily cause passing any instructions to the linker. Please describe the method by which you attempted to build the program when you saw the linker errors listed in #7. Please answer the questions in #8.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry,I can't understand your ideas clearly,I just use the statement to ask for the MKL library like the #9.Can you tell me the wrong with my codes?
Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
A number of files of several categories must exist or be created, available and accessible in order to build an application.
INCLUDE source files are used by the compiler (or preprocessor pass, if applicable). Module files must be present (they are created when their source fies are compiled) before the compiler can operate on sources containing USE statements. Object files must be present for linking to work, and some needed objects may be present in libraries rather than as separate objects. Some libraries are specified for every build when you use the Fortran compiler driver to do the link step, but the MKL libraries are not in that category. However, there is an easy-to-use compiler option, "-mkl", that serves to include the necessary library files in simple applications. For more elaborate projects, the MKL Link Line Advisor is provided.
From what I gather from your post, you have not used the -mkl option of the compiler driver, nor have you specified the MKL libraries explicitly. There is nothing wrong with your code as far as I can see, but you seem to assume that having a "USE mkl_dfti" statement is going to cause the MKL libraries to be linked in. That is not true.
Please consult the MKL documentation or answer the question that I asked in #8 if you want more help on how to build.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear mecej4,
Thanks for the answers. I need your help very much. But I just know the"USE mkl_dfti" ,I really don't know the command line for building the executable. I also link the mkl by the "INCLUDE mkl_dfti.f90".Sorry,I use the mkl first time, I almost don't know anything. Give you so many troubles.Can you tell me how to do or tell me the MKL documentation where I can get.
Thanks,
Amy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Amy,
Looks like you use 'make' to build the executable. If you add flag '-n' to the 'make' command line, it will print the commands it would run to build the executable, without actually executing the commands. Thus you could see the command line that produces the error you've shown in #7. This build command should contain flag '-mkl' near the end of the command line, or other flags that tell the compiler 'icl' how to include MKL into the executable.
Thanks
Dima
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for your ideas,but I try to use "make -mkl"or 'icl',the result doesn't good.I alse can't deal the problems.Can you tell me how to write?
Thanks,
Amy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
So, are you, as Dmitry guessed, using make to build your program rather than calling ifort directly? It is important for you to communicate details about what you tried to do to build the program.
If you are doing builds through make, adding -mkl as an option to the make invocation will not work, because -mkl not an option that make knows anything about. Rather, the -mkl option should be given to the compiler driver.
You have to modify the makefile ("makefile", "Makefile" or another name that you have not told us about); find the line that contains "ifort" but not "-c", and add -mkl to that line. Or, post the makefile and we can see for ourselves.
Dmitry may have thought that you were working with C programs, which is why he mentioned "icl". You would use "ifort" with Fortran programs.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Oh,I know what your means
thank you very much!
Amy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I get exactly the same error but obviously my problem is not what Amy L had. Can you please help me in this regard? Thanks in advance
program FFT_Poisson
Use MKL_DFTI
IMPLICIT NONE
REAL, PARAMETER :: n=1000, pi=3.14159265359
real(8) :: xl,dx !x length, x grid spacing
real(8) :: x(0:n-1), wk(0:n-1), E(0:n-1), RHO(0:n-1)
complex :: FFT_RHO(0:n-1)
type(DFTI_DESCRIPTOR), pointer :: desc_handl
Integer :: status
integer :: i
xl=600
dx=xl/n
DO i=0,n-1
x(i)=i*dx
wk(i)=2*(pi/xl)*i
rho(i)=sin(2*(pi/xl)*x(i))+cos(3*2*(pi/xl)*x(i))-sin(10*2*(pi/xl)*x(i))
END DO
status = DftiCreateDescriptor(desc_handl, DFTI_DOUBLE, DFTI_COMPLEX, 1, INT(n))
status = DftiSetValue(desc_handl, DFTI_PLACEMENT, DFTI_NOT_INPLACE)
status = DftiCommitDescriptor(desc_handl)
status = DftiComputeForward(desc_handl, RHO, FFT_RHO)
status = DftiFreeDescriptor(desc_handl)
end program FFT_Poisson

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page