24

Theanoのインストール ドキュメントには、「BLAS ライブラリが動的にロード可能なライブラリとして利用できる」場合、theanoはデフォルトで numpy の BLAS ライブラリを使用すると記載されています。これは私のマシンでは機能していないようです。エラー メッセージを参照してください。

  • numpy BLAS ライブラリが動的にロード可能かどうかを確認するにはどうすればよいですか?
  • 動的にロードできない場合、numpy BLAS ライブラリを再コンパイルするにはどうすればよいですか?

さらに情報が必要な場合は、お知らせください。

エラーメッセージ

We did not found a dynamic library into the library_dir of the library we use for blas. If you use ATLAS, make sure to compile it with dynamics library. /usr/bin/ld: cannot find -lblas

付録

Theanoライブラリには、特に numpy と BLAS ライブラリが必要です。sudo apt-get install python-numpy python-scipyUbuntuでインストールすると、numpyにはBLASが付属していると思いました。

これはのファイルリストです/usr/lib64/python2.6/dist-packages/scipy/lib/blas

cblas.so  info.py   __init__.py   scons_support.py   setup.py     
fblas.so  info.pyc  __init__.pyc  scons_support.pyc  setup.pyc  
setupscons.py  test
setupscons.pyc

これは次のように出力distutils.__config__.show()されます

blas_info:
    libraries = ['blas']
    library_dirs = ['/usr/lib64']
    language = f77

lapack_info:
    libraries = ['lapack']
    library_dirs = ['/usr/lib64']
    language = f77

atlas_threads_info:
  NOT AVAILABLE

blas_opt_info:
    libraries = ['blas']
    library_dirs = ['/usr/lib64']
    language = f77
    define_macros = [('NO_ATLAS_INFO', 1)]

atlas_blas_threads_info:
  NOT AVAILABLE

lapack_opt_info:
    libraries = ['lapack', 'blas']
    library_dirs = ['/usr/lib64']
    language = f77
    define_macros = [('NO_ATLAS_INFO', 1)]

atlas_info:
  NOT AVAILABLE

lapack_mkl_info:
  NOT AVAILABLE

blas_mkl_info:
  NOT AVAILABLE

atlas_blas_info:
  NOT AVAILABLE

mkl_info:
  NOT AVAILABLE
4

5 に答える 5

14

Python ライブラリの Anaconda ディストリビューションをダウンロードした後、Ubuntu 12.04 LTS 64 ビットで同じ問題が発生しました。Theano を libblas.so を含むディレクトリにポイントすることで解決しました。

$ THEANO_FLAGS=blas.ldflags="-L/usr/lib/ -lblas" python rbm.py

于 2013-11-07T17:38:05.440 に答える
3

ubuntu では、パッケージ マネージャーの libblas.so に libblas3gf パッケージが付属しています。libblas.so が作成されず、libblas.so.X が作成される場合は、次のようなシンボリック リンクを手動で作成します。

cd /usr/lib64
sudo ln -s libblas.so.3gf libblas.so

NB:これは私にとってはうまくいきましたが、以下のコメントを読んでください。また、このパッケージは特定のハードウェアに最適化されないことに注意してください (たとえば、ATLAS を示唆する他の回答を読んでください)。

于 2011-09-16T17:03:19.480 に答える
2

あなたの場合、 などを調べて、またはファイルとして利用できる/usr/lib64かどうかを確認する必要があります。libblas.so.so.X

BLAS の再コンパイルは簡単ではありませんが、ディストリビューションに関連する ATLAS パッケージをインストールしてみてください。

于 2011-09-16T16:35:40.463 に答える
1

あなたの主な質問は、基本的に、ディストリビューションのメンテナーが依存関係を正しくインストールしているかどうかの 1 つです。そのための答えや解決策はありません。

ただし、お勧めがあります。ATLAS を構築するのはそれほど難しくありません。ソースを入手して解凍し、依存関係を満たしていることを確認してから、構成と作成の手順を開始します。依存部分は、プロセスの中でおそらく最も時間のかかる手動部分です。

もちろん、numpy、theano などを再リンクする必要があります。これが苦痛であることは認識していますが (信じてください、私は Theano と Hannes Shulz & Andy Mueller の CSV の両方でそれを経験しました)、得られる利点は、調整された BLAS です。ハードウェア上で最適に実行されます。

于 2011-09-16T17:49:45.657 に答える
1

最新の十分なバージョンの numpy がインストールされている場合、theano はどのような場合でも正しく動作します。

そこから、使用されるブラを気にする唯一の理由は速度です。デフォルトの blas は非常に遅いです。多くのディストリビューションは、この遅い blas バージョンで再び numpy をコンパイルします。

blas の実装を高速化する簡単で迅速な方法は、atlas および atlas devel に関するディストリビューション パッケージをインストールすることです。これは、最適化された blas の実装です。

Unbuntu の新しいバージョンでは、atlas のインストールが完了し、numpy がそれを使い始めるようになっています。したがって、これに関して Theano で何も変更する必要はありません。他のディストリビューションがこれを行うかどうかはわかりません。

Theano が使用する blas が速いかどうかを確認する最善の方法は、時間を計ることです。これを行うには、これを bash で実行します。

X=`python -c "import theano;import os.path; print os.path.split(theano.__file__)[0]"`
python ${X}/misc/check_blas.py

次に、実行にかかった速度を、出力された他の比較結果と比較します。

于 2011-09-16T17:41:24.100 に答える