MEXファイルからの予期しない標準例外(pytorchモデルフォワード)

Aug 22 2020

Matlabからmexapiを呼び出すと、予期しない標準例外が発生しました。

2つのpytorchDNNモデルを「A.pt」ファイルと「B.pt」ファイルにエクスポートしました。

そして、 '。pt'ファイルからモデルをロードしてモデルを実行する(フォワード)c ++関数を実装しました。

C ++の実装は正常に機能し、モデルから適切な結果を得ることができます。

ロード&ランフォワード関数を「.dll」ライブラリに組み込み、それらを呼び出すことができるmexapi関数を実装しました。

Matlab環境でmexapiを呼び出すと、2つのモデルが正常に読み込まれ、最初のモデルが正しく実行されます。

ただし、2番目のモデルを実行すると、次の例外が発生しました。


MEXファイルからの予期しない標準例外

What():TorchScriptインタープリターで次の操作が失敗しました。

TorchScriptのトレースバック(最後の最後の呼び出し):

RuntimeError:次の操作がTorchScriptインタープリターで失敗しました。

TorchScriptのトレースバック(最後の最後の呼び出し):

RuntimeError:LoadLibraryAのエラー


c ++の実装が正常に機能する理由はわかりませんが、Matlabからmexapiを介して呼び出すと例外が発生します。

ロード&ランフォワード関数は変更されていないため、まったく同じ結果を期待していました。

コールスタックの出力がないため、デバッグはより困難です。

コールスタックを取得する方法はありますか?

アドバイスをお願いします。

前もって感謝します。

-環境 - - - - - - - - - - - - - - - -

C ++コンパイラ:Visual Studio2017コミュニティ

matlab:R2020a

libtorch:1.6

pytorch:1.5

Python:3.6

cuda:10.2


回答

1 양유경 Aug 23 2020 at 02:00

Cris Luengo氏のコメントから、すべてのlibtorch dllをMatlabのbinフォルダーにコピーすることで、この問題を解決しました。重複したファイルがいくつかありますが、上書きしました。安全かどうかはわかりませんので、以前のdllのバックアップをお勧めします。クリス・ルエンゴさん、ありがとうございました。