MATLAB Answers

0

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

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

  0 Comments

Sign in to comment.

3 Answers

michio
Answer by michio
on 5 Sep 2018
 Accepted Answer

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

  0 Comments

Sign in to comment.


Answer by Hirokazu Tanaka on 28 Aug 2018

こちらにもおそらく同じエラーに関する質問がありましたが、再インストールが勧められています。

  3 Comments

再インストールをしましたが、エラーは消えませんでした。 2018a 2017b 2016aのバージョンも試しましたが、まだエラーが消えていない状態です。
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
on 4 Sep 2018
もしかしたら特定のMKLライブラリを使用するための環境変数 BLAS_VERSION が定義されていることが原因かもしれません。MATLABで
getenv('BLAS_VERSION')
を実行して環境変数が定義されているかどうかを確認してみてください。定義されている場合は、定義先に読み込むべき DLL があるかどうかの確認をお願いいたします。この環境変数が存在しない場合は、通常 MATLABのインストールパッケージに含まれる mlk.dll が呼ばれます。

Sign in to comment.


Answer by Mitsunori Takeda on 5 Sep 2018
Edited by 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

回答ありがとうございます。。 環境変数BLAS_VERSIONを削除し、MATLAB2018aを再インストールしたところ、エラー内容 「エラー: * BLAS 読み込みエラー: mkl_custom.dll: 指定されたモジュールが見つかりません。」がなくなりました。 行列計算ができるようになりました。 丁寧に説明して頂き本当にありがとうございました。
michioさんの回答を採用したいのですが、回答者にmichioさんがいないため採用できません。どうすれば採用できますか?
michio
on 5 Sep 2018
エラーがなくなったとのこと安心いたしました。もし差し支えなければ教えて頂きたいのですが、この環境変数 BLAS_VERSION は Takeda 様が作成されたものでしょうか?それともいつの間にかあった、というものでしょうか?
また回答の採用についても考えてくださりありがとうございます。それでは回答をまとめるという意味でもう1つ回答を作成しますので、そちらを採用頂けますでしょうか?わざわざありがとうございます。
結論から言うと、環境変数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.