Я пытаюсь записать привязки Fortran 2003 в библиотеку CUFFT с помощью модуля iso_c_bindings, но у меня проблемы с подпрограммой cufftPlanMany
(аналогично sfftw_plan_many_dft
в библиотеке FFTW).
Сама привязка выглядит следующим образом:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! cufftResult cufftPlanMany(cufftHandle *plan, int rank, int *n,
! int *inembed, int istride, int idist,
! int *onembed, int ostride, int odist,
! cufftType type, int batch)
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
interface cufftPlanMany
subroutine cufftPlanMany(plan, rank, n, &
inembed, istride, idist, &
onembed, ostride, odist, &
type, batch) &
& bind(C,name='cufftPlanMany')
use iso_c_binding
integer(c_int):: plan
integer(c_int),value:: rank, type, batch
integer(c_int):: n(*)
integer(c_int),value:: istride, idist, ostride, odist
integer(c_int):: inembed(*), onembed(*)
end subroutine cufftPlanMany
end interface cufftPlanMany
Вызывающая часть выглядит следующим образом:
integer(c_int):: plan
integer(c_int):: batch
integer(c_size_t):: size
! ...
call cufftPlanMany(plan, 1, size,&
0, 1, size,&
0, 1, size,&
CUFFT_C2C, batch)
К сожалению, попытка скомпилировать это приводит к
Ошибка: нет специальной подпрограммы дляуниверсальное 'cufftplanmany' в (1)
ошибка компиляции.Попытка использовать переменные вместо констант также не помогла.Не могли бы вы помочь с отладкой этого?
Использовался компилятор gfortran : GNU Fortran (Gentoo 4.4.5 p1.2, pie-0.4.5) 4.4.5