PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 21 июл 18 16:30

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
СообщениеДобавлено: 5 сен 12 18:24 
Не в сети

Зарегистрирован: 5 сен 12 16:49
Сообщения: 6
Здравствуйте,

Безуспешно пытаюсь откомпилироватьпростейшую программу FFT с использованием MPI. ( Intel =censored= 2011в оболочке VS 2008 )
Причем, программа (в варианте без MPI) из примера в библиотеке MKL работает.

Всего лишь в DftiCreateDescriptor вставил коммутатор (comm) MPI_COMM_WORLD, в соотвествии с документацией, и подкличил MPI_INIT.

Вот программа:

program mpi_fft

! Fortran example.
! 1D complex to complex
Use MKL_DFTI
include 'mpif.h'
integer :: ierr
Complex :: X_in(32), X_out(32)
type(DFTI_DESCRIPTOR), POINTER :: My_Desc_Handle
Integer :: Status

call MPI_INIT(ierr)
Status = DftiCreateDescriptor(MPI_COMM_WORLD,My_Desc_Handle,DFTI_SINGLE, DFTI_COMPLEX, 1, 32)
!Status = DftiSetValue( My_Desc_Handle, DFTI_PLACEMENT, DFTI_NOT_INPLACE)
!Status = DftiCommitDescriptor( My_Desc_Handle)
!Status = DftiComputeForward( My_Desc_Handle, X_in, X_out)
!Status = DftiFreeDescriptor (My_Desc_Handle)

call MPI_FINALIZE(ierr)

end program mpi_fft

Вот ошибка.
Error 1 error #6284: There is no matching specific function for this generic function reference. [DFTICREATEDESCRIPTOR]

Может, кто ни будь подсказать в чём дело?

Заранее спасибо.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 5 сен 12 18:33 
Не в сети

Зарегистрирован: 11 дек 02 19:37
Сообщения: 872
Откуда: НИВЦ МГУ
Цитата:
Всего лишь в DftiCreateDescriptor вставил коммутатор (comm) MPI_COMM_WORLD, в соотвествии с документацией, и подкличил MPI_INIT.


А теперь смотрим документацию:

Код:
status = DftiCreateDescriptor( desc_handle, precision, forward_domain, dimension, length )
...
desc_handle  | FORTRAN: DFTI_DESCRIPTOR  |  FFT descriptor.


Зачем туда надо подставлять MPI_COMM_WORLD я не понял. Но делать так не надо точно, тем более, что desc_handle - выходной параметр, а MPI_COMM_WORLD - константа.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re:Serg_Zhum
СообщениеДобавлено: 5 сен 12 20:28 
Не в сети

Зарегистрирован: 5 сен 12 16:49
Сообщения: 6
Intel? Math Kernel Library
Reference Manual


Syntax
Fortran:
Status = DftiCreateDescriptorDM(comm, handle, v1, v2, dim, size)
Status = DftiCreateDescriptorDM(comm, handle, v1, v2, dim, sizes)
C:
status = DftiCreateDescriptorDM(comm, &handle, v1, v2, dim, size );
status = DftiCreateDescriptorDM(comm, &handle, v1, v2, dim, sizes );

Input Parameters
comm MPI communicator, e.g. MPI_COMM_WORLD.

Из примера для С там же ст. 2744 (аналог):
DFTI_DESCRIPTOR_DM_HANDLE desc;
MKL_LONG len,v,i,n_out,s_out;
Complex *in,*work;
MPI_Init(...);
// Create descriptor for 1D FFT
DftiCreateDescriptorDM(MPI_COMM_WORLD,&desc,DFTI_DOUBLE,DFTI_COMPLEX,1,len);

?..

По аналогии я и действовал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Re:Serg_Zhum
СообщениеДобавлено: 6 сен 12 10:25 
Не в сети

Зарегистрирован: 11 дек 02 19:37
Сообщения: 872
Откуда: НИВЦ МГУ
andreyBD писал(а):
Intel? Math Kernel Library
Reference Manual


Syntax
Fortran:
Status = DftiCreateDescriptorDM(comm, handle, v1, v2, dim, size)


А приведённом Вами примере:

Цитата:
Status = DftiCreateDescriptor(MPI_COMM_WORLD,My_Desc_Handle,DFTI_SINGLE, DFTI_COMPLEX, 1, 32)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Serg_Zhum
СообщениеДобавлено: 6 сен 12 17:03 
Не в сети

Зарегистрирован: 5 сен 12 16:49
Сообщения: 6
Верно.

С DM все еще намного хуже,

Error 1 error LNK2019: unresolved external symbol MPI_Allgather referenced in function MKL_Allgather mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 2 error LNK2019: unresolved external symbol MPI_Allreduce referenced in function MKL_Allreduce mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 3 error LNK2019: unresolved external symbol MPI_Bcast referenced in function MKL_Bcast mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 4 error LNK2019: unresolved external symbol MPI_Comm_compare referenced in function MKL_Comm_compare mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 5 error LNK2019: unresolved external symbol MPI_Comm_free referenced in function MKL_Comm_free mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 6 error LNK2019: unresolved external symbol MPI_Comm_rank referenced in function MKL_Comm_rank mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 7 error LNK2019: unresolved external symbol MPI_Comm_size referenced in function MKL_Comm_size mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 8 error LNK2019: unresolved external symbol MPI_Comm_split referenced in function MKL_Comm_split mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 9 error LNK2019: unresolved external symbol MPI_Reduce referenced in function MKL_Reduce mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 10 error LNK2019: unresolved external symbol MPI_Send referenced in function MKL_Send mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 11 error LNK2019: unresolved external symbol MPI_Type_commit referenced in function MKL_Type_commit mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 12 error LNK2019: unresolved external symbol MPI_Type_contiguous referenced in function MKL_Type_contiguous mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 13 error LNK2019: unresolved external symbol MPI_Type_free referenced in function MKL_Type_free mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 14 error LNK2019: unresolved external symbol MPI_Type_vector referenced in function MKL_Type_vector mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 15 error LNK2019: unresolved external symbol MPI_Iprobe referenced in function MKL_Iprobe mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 16 error LNK2019: unresolved external symbol MPI_Alltoall referenced in function MKL_Alltoall mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 17 error LNK2019: unresolved external symbol MPI_Alltoallv referenced in function MKL_Alltoallv mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 18 error LNK2019: unresolved external symbol MPI_Irecv referenced in function MKL_Irecv mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 19 error LNK2019: unresolved external symbol MPI_Isend referenced in function MKL_Isend mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 20 error LNK2019: unresolved external symbol MPI_Barrier referenced in function MKL_Barrier mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 21 error LNK2019: unresolved external symbol MPI_Waitall referenced in function MKL_Waitall mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 22 error LNK2019: unresolved external symbol MPI_Recv referenced in function MKL_Recv mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 23 error LNK2019: unresolved external symbol MPI_Test referenced in function MKL_Test mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 24 error LNK2019: unresolved external symbol MPI_Wait referenced in function MKL_Wait mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 25 error LNK2019: unresolved external symbol MPI_Waitany referenced in function MKL_Waitany mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)
Error 26 fatal error LNK1120: 25 unresolved externals x64\Debug\mpi_fft.exe

Хотя Вы правы, его(DM) опускать не следовало, несмотря на это.

Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Serg_Zhum
СообщениеДобавлено: 6 сен 12 17:59 
Не в сети

Зарегистрирован: 11 дек 02 19:37
Сообщения: 872
Откуда: НИВЦ МГУ
andreyBD писал(а):
Error 1 error LNK2019: unresolved external symbol MPI_Allgather referenced in function MKL_Allgather mkl_blacs_intelmpi_lp64.lib(blacs_extended.obj)


Подключите библиотеку MPI. Лучше всего компилируйте не с помощью ifort, а mpifort.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 8 сен 12 16:52 
Не в сети

Зарегистрирован: 5 сен 12 16:49
Сообщения: 6
Но подключение MPI наличествует. По крайней мере тестовые программы работают. К примеру, работает:

program test

implicit none
include 'mpif.h'
integer i, size, rank, namelen, ierr
character*(MPI_MAX_PROCESSOR_NAME) name
integer stat(MPI_STATUS_SIZE)
call MPI_INIT (ierr)

call MPI_COMM_SIZE (MPI_COMM_WORLD, size, ierr)
call MPI_COMM_RANK (MPI_COMM_WORLD, rank, ierr)
call MPI_GET_PROCESSOR_NAME (name, namelen, ierr)
if (rank.eq.0) then
do i = 1, size - 1
call MPI_RECV (rank, 1, MPI_INTEGER, i, 1,MPI_COMM_WORLD, stat, ierr)
call MPI_RECV (size, 1, MPI_INTEGER, i, 1, MPI_COMM_WORLD, stat, ierr)
call MPI_RECV (namelen, 1, MPI_INTEGER, i, 1,MPI_COMM_WORLD, stat, ierr)
call MPI_RECV (name, namelen, MPI_CHARACTER, i, 1, MPI_COMM_WORLD, stat, ierr)
enddo

call MPI_FINALIZE (ierr)

end program test

Ошибка при вызове библиотечного файла mkl_blacs_intelmpi_lp64.lib.

Error 1 error LNK2019: unresolved external symbol MPI_Allgather referenced in function MKL_Allgather mkl_blacs_intelmpi_lp64.lib (blacs_extended.obj)

Но в чём причина такой ошибки мне непонятно.

Пути указаны:

C:\Program Files (x86)\Intel\ics\2011.0.014\mpi\em64t\include
C:\Program Files (x86)\Intel\ics\2011.0.014\mpi\em64t\lib
Подключен кластерный вариант библиотеки MKL:
Cluster (/Qmkl:cluster)

Вот только в следующий строчке пусто.

Properties=>Fortran=>language=> MPI configuration file.

Но вряд ли дело в этом.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 сен 12 10:10 
Не в сети

Зарегистрирован: 11 дек 02 19:37
Сообщения: 872
Откуда: НИВЦ МГУ
andreyBD писал(а):
Пути указаны:

C:\Program Files (x86)\Intel\ics\2011.0.014\mpi\em64t\include
C:\Program Files (x86)\Intel\ics\2011.0.014\mpi\em64t\lib
Подключен кластерный вариант библиотеки MKL:
Cluster (/Qmkl:cluster)


Попробуйте убрать пути, но вместо компилятора ifort использовать mpiifort. Проверьте, что указываете все бибилиотеки MKL в нужном порядке (в документации по MKL), они очень чувствительны к этому.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 сен 12 13:20 
Не в сети

Зарегистрирован: 5 сен 12 16:49
Сообщения: 6
Извините,


"вместо компилятора ifort использовать mpiifort"

Подскажите как это сделать?

Вот нашел в папке:C:\Program Files (x86)\Intel\ics\2011.0.014\mpi\em64t\bin

mpiifort.bat


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 сен 12 9:48 
Не в сети

Зарегистрирован: 11 дек 02 19:37
Сообщения: 872
Откуда: НИВЦ МГУ
Похоже, он и есть.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 12 16:25 
Не в сети

Зарегистрирован: 5 сен 12 16:49
Сообщения: 6
Но как мне чрез него построить проект (Build)?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 12 17:14 
Не в сети

Зарегистрирован: 11 дек 02 19:37
Сообщения: 872
Откуда: НИВЦ МГУ
Найдите в настройках где указан компилятор и замените на него. К сожалению, в дебрях MS-продуктов уже давно не разбирался и не могу подсказать где именно это задаётся.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB