2017-12-15 15 views
2

最近Mac OS Xのhomebrew pythonをanacondaに変更しました。大きな(ish)行列を対角化するときにエラーが発生しました。およそ3000x3000エントリー上記マトリックスとscipy.linalg.eigvalsh(A)を呼び出すと、エラーを与える:anaconda scipyを使用して大きな行列を対角化するとエラーが発生する

$HOME/anaconda2/lib/python2.7/site-packages/scipy/linalg/decomp.pyc in eigvalsh(a, b, lower, overwrite_a, overwrite_b, turbo, eigvals, type, check_finite) 
    762     overwrite_a=overwrite_a, overwrite_b=overwrite_b, 
    763     turbo=turbo, eigvals=eigvals, type=type, 
--> 764     check_finite=check_finite) 
    765 
    766 

$HOME/anaconda2/lib/python2.7/site-packages/scipy/linalg/decomp.pyc in eigh(a, b, lower, eigvals_only, overwrite_a, overwrite_b, turbo, eigvals, type, check_finite) 
    385   if eigvals is None: 
    386    w, v, info = evr(a1, uplo=uplo, jobz=_job, range="A", il=1, 
--> 387        iu=a1.shape[0], overwrite_a=overwrite_a) 
    388   else: 
    389    (lo, hi) = eigvals 

ValueError: On entry to ZHBRDB parameter number 12 had an illegal value 

最終エラーメッセージは、この古いscipyのダウンロードの問題に似ているようだ:scipy/issues/5401、しかし、私は問題を抱えている行列ははるかに小さいです。

print np.__config__.show()を実行すると得られます。

lapack_opt_info: 
    libraries = ['mkl_rt', 'pthread'] 
    library_dirs = ['$HOME/anaconda2/lib'] 
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] 
    include_dirs = ['$HOME/anaconda2/include'] 
blas_opt_info: 
    libraries = ['mkl_rt', 'pthread'] 
    library_dirs = ['$HOME/anaconda2/lib'] 
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] 
    include_dirs = ['$HOME/anaconda2/include'] 
lapack_mkl_info: 
    libraries = ['mkl_rt', 'pthread'] 
    library_dirs = ['$HOME/anaconda2/lib'] 
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] 
    include_dirs = ['$HOME/anaconda2/include'] 
blas_mkl_info: 
    libraries = ['mkl_rt', 'pthread'] 
    library_dirs = ['$HOME/anaconda2/lib'] 
    define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] 
    include_dirs = ['$HOME/anaconda2/include'] 
None 
+0

Anacondaは古いバージョンのLapackを使用して下位互換性をサポートしている可能性があります。どのSciPyのバージョンを使用していますか? – darthbith

+0

私は最新バージョンのanacondaアップデートを実行しています。 '1.0.0' – RGWinston

+0

おそらく以前はMKLを使っていました。 – sascha

答えて

2

これは、そのままで、親切SciPy issue 8205に議論に従って@brd490によって報告されているMKLのバグであるとOpenBLAS内蔵ことaccepted by the Intel MKL team

注意ですSciPyにはこの問題はありません。しかし、その間に、最適なワークスペースの配列サイズがscipy.linalg.eighでは正しくないことに気付きました。また、基礎となる?SYEVR/?HEEVRラッパーのシグニチャーを変更する方法の決定を訂正する予定です。

これらのルーチンはもともとは許可されていても公開されていないので、おそらくは固有値を選択的に計算することができます。scipy.linalg.eigh

関連する問題