Ошибка сегментации во время вызова подпрограммы DPOSV из библиотеки MKL 11.3 - PullRequest
0 голосов
/ 02 июня 2018

Я пытаюсь запустить следующий код, скомпилированный с IFORT 2016, связывающий библиотеку MKL 11.3:

program bug
  implicit none
  INCLUDE 'mkl.fi'
  integer*4, parameter :: Npart=25
  real(kind=8) :: u(1:Npart), lapackab(1:Npart,1:Npart)
  integer*4 :: i

  u=0.2d0
  lapackab=0d0
  do i=1,Npart
      lapackab(i,i)=2d0
  enddo

  call DPOSV('L',Npart,1,lapackab,Npart,u,Npart,i)
  write(*,*) "i=",i
end program

с помощью следующей команды:

ifort -O0 -g -openmp -o file.o -c file.f90 -I/opt/share/INTEL/mkl/include
ifort -O0 -g -openmp file.o -o run -L/opt/share/INTEL/mkl/lib/  -I/opt/share/INTEL/mkl/include  -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -ldl

по какой-то неясной причине,ошибки кода во время DPOSV.Понятия не имею почему.Серьезно, даже Valgrind не сообщает ничего странного. Есть ли у кого-то такая же проблема с этой конкретной подпрограммой?

EDIT: код прекрасно работает с LAPACK 3.6.1, но не с MKL 11.3.Я отправил сообщение на форуме поддержки Intel, но оно все еще должно быть одобрено модераторами.

1 Ответ

0 голосов
/ 03 июня 2018

Вы связываете версию MKL ILP64, но она используется для 64-битных целых чисел.Вы используете integer*4, поэтому ваши целые числа являются 32-разрядными (и целыми числами по умолчанию).Используйте MKL link Advisor , чтобы правильно связать MKL.Вероятно, вам нужна версия LP64.

...