画像登録プログラムを作成していますが、mkl_free() を使用すると奇妙なエラーが発生することがわかりました。MKL 関数を使用して、MATLAB から行列指数関数 - expm() - の実装を作成しました。私はそれを個別にテストしましたが、エラーが発生することなく動作します。
コードはここにあります: https://github.com/poliu2s/MKL/blob/master/matrix_exponential.cpp
計算に必要な他の関数から呼び出すと、問題が発生します。私のプログラムは現在、最初の mkl_free() を呼び出す直前にクラッシュするため、何らかの形のメモリ リークであると思われます。しかし、関数内で使用される行列は自己完結型であるべきではありませんか? それらを解放すると、プログラム全体がどのようにクラッシュするかわかりません。
mkl_free_buffers() への呼び出し; および mkl_thread_free_buffers(); 私が観察できる効果はありません。プログラムの実行開始時の速度を犠牲にして、mkl_disable_fast_mm() を使用して Intel Memory Manager をオフにしようとしましたが、無駄になりました。
関数自体への入力を確認したところ、テスト中に使用したものと同じように、マトリックスは完全に有効です。
特定のループで mkl_free(array) を呼び出すと、プログラムがクラッシュする理由はありますか?