エラー内容 「エラー: * BLAS 読み込みエラー: mkl_custom.dll: 指定されたモジュールが見つかりません。」

12 views (last 30 days)
Mitsunori Takeda
Mitsunori Takeda on 27 Aug 2018
[1 1]*[1 1]'というような簡単な行列計算でエラーがでます。 行列の掛け算、割り算でエラーが出ます。
おそらくパソコンを変えたことが原因だと思われます。 前使っていたパソコンのcpuはcore2QuadQ8400で、行列計算でエラーは出ませんでした。現在使っているパソコンのcpuはcorei7 8700Kで、行列計算でエラーがでます。mklは、インテル® マス・カーネル・ライブラリー (インテル® MKL)のことです。
エラーを消すにはどうすればよいでしょうか?

Accepted Answer

michio
michio on 5 Sep 2018
やり取りが長くなってしまったので解決方法をこちらにまとめます。
****
今回のエラーは、環境変数 BLAS_VERSION で示されている mkl_custom.dll が存在しないが原因でした。環境変数 BLAS_VERSION を削除することで正常に機能します。
この環境変数は MATLAB で特定の MKL ライブラリを使用するための環境変数であり、この環境変数が存在しない場合は、通常 MATLABのインストールパッケージに含まれる mlk.dll が呼ばれます。
MATLABで
getenv('BLAS_VERSION')
と実行すると環境変数が定義されているかどうかを確認することができます。

More Answers (2)

Hirokazu Tanaka
Hirokazu Tanaka on 28 Aug 2018
こちらにもおそらく同じエラーに関する質問がありましたが、再インストールが勧められています。
  3 Comments
michio
michio on 3 Sep 2018
ご不便をおかけしております。MKLに関連するライブラリが正しく参照できていない原因は現時点ではわかりませんが、トラブルシューティングのためまずは以下を順番にお試しいただけますでしょうか。
0:MATLAB環境の初期化 MATLABの設定ファイルを一旦初期化して、エラーが再現するかを確認ください。 詳細: 環境を初期化するにはどうすればよいですか?
1:userpath の変更
userpath として指定されているフォルダーは、起動時に検索パスの最上位に置かれます。こちらを新しく作成したフォルダ(空でも構いません)に設定したうえで MATLABを再起動して挙動を確認ください。これで解決する場合は、もともとの userpath フォルダ内にあるファイルが悪さをしている可能性が考えられます。
2:余計な pathdef.m の有無 MATLABは起動時に pathdef.m でパス設定を行います。このファイルが複数存在する場合には、意図しない挙動の原因となりますので、確認してみてください。
which -all pathdef.m
とMATLAB上で実行して、1つの pathdef.m であれば、特に問題ないかと思います。もちろん2つでも意図されたものであれば問題ありません。
3:startup.m の有無 MATLABは起動時に startup.m があれば実行し、各種初期設定を行わせることができます。
which -all startup.m
とMATLAB上で実行して、意図しない startup.m がないかを確認下さい。
4:別フォルダへのインストール
例えば C:\ 直下のフォルダなど、既定のフォルダ以外へMATLABをインストールしてみることも、あくまで経験上ですが問題回避につながる可能性があります。
michio
michio on 4 Sep 2018
Edited: michio on 4 Sep 2018
もしかしたら特定のMKLライブラリを使用するための環境変数 BLAS_VERSION が定義されていることが原因かもしれません。MATLABで
getenv('BLAS_VERSION')
を実行して環境変数が定義されているかどうかを確認してみてください。定義されている場合は、定義先に読み込むべき DLL があるかどうかの確認をお願いいたします。この環境変数が存在しない場合は、通常 MATLABのインストールパッケージに含まれる mlk.dll が呼ばれます。

Sign in to comment.


Mitsunori Takeda
Mitsunori Takeda on 5 Sep 2018
Edited: michio on 5 Sep 2018
回答ありがとうございます。 0~4の順番を試しましたが、エラーは消えませんでした。
getenv('BLAS_VERSION')を実行したところ 'mkl_custom.dll' という結果が出力されました。
気になる点があるのですが、 https://software.intel.com/en-us/articles/using-intel-mkl-with-matlab を参考に version -blasを実行すると
エラー: matlab.internal.language.versionPlugins.blas
BLAS 読み込みエラー:
mkl_custom.dll: 指定されたモジュールが見つかりません。
というエラーが出ます。 上記のURLは以前に参考にしたことがあるのですが、4.Building a Custom DLLの項の二つ目の箇条書きで、matlab_custom_dll.zipからファイルを抽出してコピーし、$ {MKL}\tools\builderにコピーするという部分が理解できませんでした。 \tools\builderというフォルダを見つけることができませんでした。
  5 Comments
michio
michio on 5 Sep 2018
エラーがなくなったとのこと安心いたしました。もし差し支えなければ教えて頂きたいのですが、この環境変数 BLAS_VERSION は Takeda 様が作成されたものでしょうか?それともいつの間にかあった、というものでしょうか?
また回答の採用についても考えてくださりありがとうございます。それでは回答をまとめるという意味でもう1つ回答を作成しますので、そちらを採用頂けますでしょうか?わざわざありがとうございます。
Mitsunori Takeda
Mitsunori Takeda on 7 Sep 2018
結論から言うと、環境変数BLAS_VERSIONは https://software.intel.com/en-us/articles/using-intel-mkl-with-matlab を参考に私が作成したものです。パソコンを新しくしたところ添付の写真(8月22日に撮ったもの)のようなエラーが出でるようになりました。そこでmklについて調べていたところ上記のURLにたどり着き、URLに書いてあることを実行すればエラーが消えるのでは?と思い、よく理解しないまま実行しているうちに環境変数を作成していました。環境変数が何なのかは知りませんでした。 おそらくBLAS_VERSIONを作ってから、エラー内容が「エラー: * BLAS 読み込みエラー: mkl_custom.dll: 指定されたモジュールが見つかりません。」になったのだと思います。「エラー: * BLAS 読み込みエラー:mkl.dll:メモリ ロケーションへのアクセスが無効です。」の原因はわかりませんが、現在MATLABを使っていて問題はありません。

Sign in to comment.

Categories

Find more on 環境と設定 in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!