82

数日以来、MATLAB を使用しているときに常に同じエラーが発生します。これは、ある時点でdlopen. 私は MATLAB にかなり慣れていないため、何をすべきかわかりません。Googleも私を助けていないようです。固有ベクトルを作成しようとすると、次のようになります。

Error using eig
LAPACK loading error:
dlopen: cannot load any more object with static TLS

乗算中にこれも取得します。

Error using  * 
BLAS loading error:
dlopen: cannot load any more object with static TLS

もちろん、この問題の解決策を探しましたが、あまり理解できず、どうすればよいかわかりません。これらは私が見つけたスレッドです:

  1. MATLAB が提供する BLAS ライブラリを使用するにはどうすればよいですか?
  2. http://www.mathworks.de/de/help/matlab/matlab_external/calling-lapack-and-blas-functions-from-mex-files.html

誰か助けてくれませんか?

このエラーを示す関数呼び出しの例

>> randn(3,3)

ans =

 2.7694    0.7254   -0.2050             
-1.3499   -0.0631   -0.1241             
 3.0349    0.7147    1.4897            

>> eig(ans)

Error using eig
LAPACK loading error:
dlopen: cannot load any more object with static TLS
4

10 に答える 10

27

Matlab を再起動すると、問題が解決しました。

于 2014-01-13T13:50:51.403 に答える
6

簡単に言うと、matlab を起動するディレクトリに、ファイル startup.m を content で作成しますones(10)*ones(10);。matlab を再起動すると処理されます。

于 2014-07-02T18:28:29.440 に答える
5

これは、MathWorks によってまだ解決されていない古い問題です。

これが私のために働いた私の2セントです(MEXを使用したIT ++外部ライブラリが必要な場合)。


問題の原因であることが判明したライブラリを「libXYZ.so」とし、それがシステム上のどこにあるのかを把握します。

解決策は、MATLAB にその起動の最も早い段階で特定のライブラリをロードするように通知することです。thread local storageこのエラーの理由は明らかに、この目的のためのスロットが不足しているためですtls(スロットは既にいっぱいになっているため)。

最新のコンパイルでは、起動時に以前に読み込まれていない新しいライブラリが突然必要になるため、MATLAB はこのエラーをスローします。

残念なことに、MATLAB はこの問題を長い間解決しようとはしませんでした。

幸いなことに、解決策は単一の非常に単純な端末コマンドです。


Linux マシンでの一般的な手順は次のとおりです。

  1. コマンド プロンプトを開きます ( Ctrl+Alt+TUbuntu の場合)。
  2. 次のコマンドを発行します

    export LD_PRELOAD=<PATH-TO-libxyz.so>

例えば:export LD_PRELOAD=/usr/local/lib/libitpp.so

  1. 同じターミナルから matlab を起動します

    マトラブ&

私の場合のように、今すぐプログラムを実行すると問題が解決するはずです。

幸運を!


参照:

[1] http://au.mathworks.com/matlabcentral/answers/125117-openmp-mex-files-static-tls-problem

于 2016-04-21T12:05:07.733 に答える
3

私は同じ問題を抱えていましたが、それを解決したと思います。

matlab をインストールするときは、カスタム インストールを使用します (最初はこれを実行しませんでした)。事前定義されたフォルダー (/usr/local/bin) に matlab スクリプトへのシンボリック リンクを作成することを選択します。これは私にとってはうまくいきました!

于 2013-10-16T19:41:30.947 に答える
3

Matlab 2013b と Matlab 2014a の両方で同じ問題が発生しました。mathworks が libiomp5.so に対して提供した修正は、LAPACK が機能しないという問題のみを取り除きました。ただし、OpenMp を使用している外部ライブラリ (VL_FEAT など) を使用できませんでした。「dlopen: 静的 TLS でこれ以上オブジェクトをロードできません」というエラーが引き続き表示されます。

私にとってうまくいった唯一のことは、Matlab 2012bにダウングレードすることでした。

于 2014-04-24T10:37:58.403 に答える
2

配列を使用した「バー」(棒グラフの場合) を使用すると、エラーがスローされずに単一の青いブロックが表示された後、この問題に遭遇しました。最初に再起動すると問題が解決しました。しかし、メモリ エラーの後 (非常に大きなファイルを処理した後)、この青いブロックの問題を乗り越えることができません。

行列入力で「hist」を使用すると、「BLAS 読み込みエラー」の問題が発生し、このスレッドにたどり着きました。Mathwork の回避策により、ヒストとバーの問題が修正されました。

このバグの影響の程度を認識させたかっただけです。

于 2014-05-08T00:51:09.833 に答える
0

R2013b/Ubuntu 12.04 では、Java ヒープ メモリを (512 mb まで) 増やすこともできました。「BLAS 読み込みエラー」は、11 GB ファイル (16 GB RAM) を処理したときに発生し、Java ヒープ メモリを増やして matlab を再起動した後も再発していません。

于 2014-05-22T16:06:22.627 に答える