2015-02-19 5 views
1

Я использую f2py для вызова процедуры LAPACK из python (а именно DGEQP3). Сначала я создал файл pyf, чтобы создать более удобный интерфейс.Ядро сбрасывается после успешного вызова f2py LAPACK

f2py -h dgeqp3.pyf -m dgeqp3 SRC/dgeqp3.f 

Этот файл теперь выглядит следующим образом:

! -*- f90 -*- 
! Note: the context of this file is case sensitive. 

python module dgeqp3 ! in 
    interface ! in :dgeqp3 
     subroutine dgeqp3(m,n,a,lda,jpvt,tau,work,lwork,info) ! in :dgeqp3:SRC/dgeqp3.f 
      integer :: m 
      integer :: n 
      double precision dimension(lda,0) :: a 
      integer intent(hide),depend(a) :: lda=shape(a,0) 
      integer intent(in, out), dimension(n), depend(n) :: jpvt 
      double precision intent(out), depend(m), dimension(m), :: tau 
      double precision intent(out), depend(lwork), dimension(lwork) :: work 
      integer :: lwork 
      integer intent(out) :: info 
     end subroutine dgeqp3 
    end interface 
end python module dgeqp3 

Я строю библиотеку так:

f2py -c dgeqp3.pyf SRC/dgeqp3.f -lblas -llapack -latlas 

Я создал следующий скрипт для вызова подпрограммы, которая, кажется, работая безупречно.

import dgeqp3 
import numpy as np 
print(np.version.version) 
A = np.array([1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0])  
jpvt = np.array([0,0,0]) 
lwork = 10 
j,t,w,i = dgeqp3.dgeqp3(3, 3, A, jpvt, lwork) 

Однако, как раз перед завершением программы, я получаю

*** Error in `python': free(): invalid next size (fast): 0x0000000002bb8e60 *** 
Aborted (core dumped) 

Я использую Numpy версию 1.8.2 и собрал Либерал DGEQP3 из LAPACK 3.5.0, на 64-битном Ubuntu 14.04 с ядром 3.13.0-43-generic. Что может пойти не так?

ответ

0

Мне это не удалось решить, но я обнаружил, что для этой функции Fortran есть available in Scipy.

scipy.linalg.lapack.dgeqp3 

Кроме того, для этого вызова требуется матрица ввода в качестве аргумента, что весьма удобно.

 Смежные вопросы

  • Нет связанных вопросов^_^