Форум программистов, компьютерный форум, киберфорум
Наши страницы
CUDA
Войти
Регистрация
Восстановить пароль
 
PoliMorfff
0 / 0 / 1
Регистрация: 19.11.2012
Сообщений: 9
#1

Ошибка Could not resolve generic procedure при компиляции - CUDA

09.02.2018, 11:48. Просмотров 224. Ответов 0
Метки нет (Все метки)

Пытаюсь скомпилировать пример из книги CUDA Fortran для инженеров и научных работников. И вот что выходит.

Коммандная строка
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
PGI$ pgf90 -o p precision_m.f90 cufft.cuf p.cuf -lcufft
precision_m.f90:
cufft.cuf:
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 3)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 27)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 35)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 56)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 56)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 56)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 56)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 56)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 56)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 56)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 56)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 56)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 56)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 56)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 56)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 67)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 67)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 67)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 67)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 67)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 67)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 67)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 67)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 67)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 67)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 67)
PGF90-W-0025-Illegal character (A0) - ignored (cufft.cuf: 67)
  0 inform,  27 warnings,   0 severes, 0 fatal for cufft_m
p.cuf:
PGF90-S-0155-Could not resolve generic procedure cufftplan1d (p.cuf: 47)
PGF90-S-0155-Could not resolve generic procedure cufftplan1d (p.cuf: 48)
PGF90-S-0155-Could not resolve generic procedure cufftdestroy (p.cuf: 75)
  0 inform,   0 warnings,   3 severes, 0 fatal for fft_derivative
Сами исходники
cufft.cuf
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
module cufft_m
 
    integer, parameter, public :: CUFFT_FORWARD =*-1
    integer, parameter, public :: CUFFT_INVERSE = 1
    integer, parameter, public :: CUFFT_R2C = Z'2a'*! Real to Complex (interleaved)
    integer, parameter, public :: CUFFT_C2R = Z'2c'*! Complex (interleaved) to Real
    integer, parameter, public :: CUFFT_C2C = Z'29'*! Complex to Complex, interleaved
    integer, parameter, public :: CUFFT_D2Z = Z'6a'*! Double to Double-Complex
    integer, parameter, public :: CUFFT_Z2D = Z'6c'*! Double-Complex to Double
    integer, parameter, public :: CUFFT_Z2Z = Z'69'*! Double-Complex to Double-Complex
 
**!*-----------------
**! cufftPlan[1|2|3]d
**!*-----------------
 
* interface cufftPlan1d
**** subroutine cufftPlan1d(plan, nx, type, batch) bind(C,name='cufftPlan1d@16')
****** use iso_c_binding
****** integer(c_int):: plan
****** integer(c_int),value:: nx, batch,type
**** end subroutine cufftPlan1d
* end interface
 
* interface cufftPlan2d
**** subroutine cufftPlan2d(plan, nx, ny, type) bind(C,name='cufftPlan2d@16')
****** use iso_c_binding
****** integer (c_int)*:: plan
****** integer (c_int), value :: nx, ny, type
**** end subroutine cufftPlan2d
* end interface
 
* interface cufftPlan3d
**** subroutine cufftPlan3d(plan, nx, ny, nz, type) bind(C,name='cufftPlan3d@20')
****** use iso_c_binding
****** integer (c_int)*:: plan
****** integer (c_int), value :: nx, ny, nz, type
**** end subroutine cufftPlan3d
* end interface
 
**!*------------
**! cufftDestroy
**!*------------
 
* interface cufftDestroy
**** subroutine cufftDestroy(plan) bind(C,name='cufftDestroy@4')
****** use iso_c_binding
****** integer(c_int),value:: plan
**** end subroutine cufftDestroy
* end interface
 
**!*----------------------------------
**! cufftExec[C2C|Z2Z|]
**!*----------------------------------
 
* interface cufftExecC2C
**** subroutine cufftExecC2C(plan, idata, odata, direction)*&
*********** bind(C,name='cufftExecC2C@16')
****** use iso_c_binding
****** use precision_m
****** integer(c_int), value:: plan
****** complex(singlePrecision), device :: idata(*), odata(*)
****** integer(c_int), value:: direction
**** end subroutine cufftExecC2C
* end interface
 
* interface cufftExecZ2Z
**** subroutine cufftExecZ2Z(plan, idata, odata, direction)*&
*********** bind(C,name='cufftExecZ2Z@16')
****** use iso_c_binding
****** use precision_m
****** integer(c_int),value:: plan
****** complex(doublePrecision), device:: idata(*), odata(*)
****** integer(c_int),value:: direction
**** end subroutine cufftExecZ2Z
* end interface
 
end module cufft_m
precision_m.f90
Fortran
1
2
3
4
5
6
module precision_m
    integer, parameter :: singlePrecision = kind(0.0)
    integer, parameter :: doublePrecision = kind(0.d0)
!   integer, parameter :: fp_kind = doublePrecision 
    integer, parameter :: fp_kind = singlePrecision
end module precision_m
p.cuf
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
program fft_derivative
use iso_c_binding
use precision_m
use cufft_m
implicit none
real(fp_kind), allocatable:: kx(:), derivative(:)
real(fp_kind), allocatable, device:: kx_d(:)
 
complex(fp_kind), allocatable:: cinput(:), coutput(:)
complex(fp_kind), allocatable, device:: cinput_d(:), coutput_d(:)
integer:: i,n
 
type(c_ptr ):: plan
real(fp_kind ):: twopi=8._fp_kind* atan(1._fp_kind),h
 
n=8
h=twopi/real(n,fp_kind)
 
!выделить память для массивов на хосте
allocate (cinput (n), coutput (n),derivative (n),kx(n))
 
!выделить память для массивов на устройстве
allocate (cinput_d(n),coutput_d(n), kx_d(n))
 
!инициализировать массивы на хосте
kx = (/((i-1), i=1,n/2), ((-n+i-1), i=n/2+1,n) /)
 
!сбросить в нуль волновое число для частоты Наквиста
kx(n/2+1)=0._fp_kind
 
 
! Скопировать вектор волновых чисел на устройство
kx_d=kx
 
do i=1,n
    cinput(i)=(cos(2*real(i-1,fp_kind)*h)&
               +sin(3*real(i-1,fp_kind)*h))
 
    derivative(i)=(-2*sin(2*real(i-1,fp_kind )*h)&
                   +3*cos(3*real(i-1,fp_kind )*h))
end do
 
! скопировать исходные данные на устройство
cinput_d=cinput
 
! инициализировать план.для преобразования комплексные-комплексные
if (fp_kind == singlePrecision) call cufftPlan1D(plan,n,CUFFT_C2C,1)
if (fp_kind == doublePrecision) call cufftPlan1D(plan,n,CUFFT_Z2Z,1)
 
! прямое преобразование не на месте
call cufftExec(plan,cinput_d,coutput_d, CUFFT_FORWARD)
 
! Вычислить производную в спектральном пространстве и нормировать БИФ
!$cuf kernel do <<<*,*>>>
do i=1,n
    coutput_d(i)= cmplx(0., kx_d(i), fp_kind)*coutput_d(i)/n
end do
 
! обратное преобразование на месте
call cufftExec(plan,coutput_d,coutput_d,CUFFT_INVERSE)
 
! скопировать результаты обратно на хост
coutput=coutput_d
 
print *, "Первая производная по массиву комплексных чисел"
do i=1,n
    write(*,'(12,2(1x,f8.4),2x,e13.7)') i,real (coutput(i)), derivative(i) &
                                         ,real(coutput(i))-derivative(i)
end do
 
! освободить память на хосте и на устройстве
deallocate (cinput,coutput,kx,derivative,cinput_d,coutput_d,kx_d)
 
! ущалить план
call cufftDestroy(plan)
 
end program fft_derivative
Подскажите что делать.

Добавлено через 11 часов 7 минут
Удалось убрать предупреждения
Bash
1
2
3
4
5
6
7
8
PGI$ pgf90 -o p precision_m.f90 cufft.cuf p.cuf -lcufft
precision_m.f90:
cufft.cuf:
p.cuf:
PGF90-S-0155-Could not resolve generic procedure cufftplan1d (p.cuf: 46)
PGF90-S-0155-Could not resolve generic procedure cufftplan1d (p.cuf: 47)
PGF90-S-0155-Could not resolve generic procedure cufftdestroy (p.cuf: 74)
  0 inform,   0 warnings,   3 severes, 0 fatal for fft_derivative

http://www.cyberforum.ru/cuda/thread2179111.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2018, 11:48
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка Could not resolve generic procedure при компиляции (CUDA):

Ошибка при компиляции MPI
Начал изучать интерфейс MPI и у меня проблема с самого начала - не могу...

CUDA. Ошибка при компиляции
Компиляция программы не проходит из-за ошибок типа &quot;identifier is undefined in...

Ошибка при компиляции на Win7: не хватает хедеров типа graphics.h inet.h
Поставил на win 7 mingw установил все плюшки под си теперь когда пытаюсь...

Ошибка при компиляции: "is not a generic definition"
Всем доброго времени суток! Подскажите, пожалуйста, что означает ошибка...

Ошибка при запуске: Could not resolve host name
Я первый раз устанавливаю сервер, следовал этой статье...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2018, 11:48
Привет! Вот еще темы с решениями:

Ошибка при подключении к БД: ORA-12154: TNS:could not resolve the connect identifier specified
Доброго времени суток уважаемые форумчане. Возник вопрос по работе с Бд Oracle...

Нарисовать дом используя procedure Line, procedure Circle, procedure Rectangle
Добрый вечер, нужна ваша помощь, просто на просто не успеваю.. Помогите...

Ошибка generic host process for win32 services и тормоз при выходе в интернет
Здравствуйте! Соседка принесла ПК, с Windows XP SP3 и Kaspersky Total Security...

Ошибка при кодировании информации: Нельзя преобразовать тип procedure к string
Здравствуйте! Программа для кодирования и декодирования информации. Возникает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru