oneapi::mkl::sparse::release_matrix_handle#
oneapi::mkl::sparse::matrix_handle_t オブジェクト内の内部データとハンドル自体を解放します。
説明#
oneapi::mkl::sparse::release_matrix_handle ルーチンは、oneapi::mkl::sparse::matrix_handle_t オブジェクトが保持するすべての内部データを解放します (依存関係が完了するまで待機します)。その後、オブジェクト自体を解放します。
注
oneMKL 2023.2 以降の場合: matrix_handle_t オブジェクトのアドレスが渡されますが (matrix_handle_t *p_spMat)、逆参照され (matrix_handle_t handle = *p_spMat;)、同期的に null に更新され、その後、handle は非同期にスケジュールされた破棄ルーチンに渡されるため、非同期破棄が安全であることが保証されます。
以前のリリースでは、逆参照は非同期的に発生していたため、p_spMat がスタック変数 (&handle など) であり、非同期実行 (逆参照を含む) が開始する前にスコープ外になると、セグメンテーション・エラーが発生する場合がありました。
注
スローされる例外の詳細は、エラー処理を参照してください。
推奨される使用モデルは次のとおりです
using namespace oneapi::mkl;
// 初期化のために init_matrix_handle に送信する前に、
// 新しく作成されたハンドルを nullptr に設定します
sparse::matrix_handle_t spMat = nullptr;
sparse::init_matrix_handle(&spMat);
// ハンドルは初期化され、入力して使用できるようになりました
sparse::set_csr_data(queue, spMat, /* 行列のサイズと配列 */);
// 終わったらハンドルをクリーンアップします
sycl::event ev_release = sparse::release_matrix_handle(queue, &spMat, dependencies);
ev_release.wait(); // ブロックするか、イベントを他に渡すかAPI#
構文#
namespace oneapi::mkl::sparse {
sycl::event release_matrix_handle (
sycl::queue & queue,
oneapi::mkl::sparse::matrix_handle_t *p_spMat,
const std::vector<sycl::event> &dependencies = {});
// 2023.0 で非推奨
[[deprecated("Use oneapi::mkl::sparse::release_matrix_handle(queue, p_spMat, dependencies) instead.")]]
void release_matrix_handle (
oneapi::mkl::sparse::matrix_handle_t *p_spMat,
const std::vector<sycl::event> &dependencies ={});
}インクルード・ファイル#
oneapi/mkl/spblas.hpp
入力パラメーター#
- queue
SYCL* カーネルの実行に使用される SYCL* コマンドキューを指定します。
- p_spMat
解放されるオブジェクトへの
sparse::matrix_handle_tハンドルのアドレス。スパース行列とその他の内部データが含まれており、oneapi::mkl::sparse::init_matrix_handleルーチンで初期化され、oneapi::mkl::sparse::set_<sparse_matrix_type>_dataルーチンのいずれかを使用してユーザーデータを設定します。oneapi::mkl::sparse::optimize_xyzルーチンは、呼び出しで解放される内部割り当てデータも保持している可能性があります。注
<sparse_matrix_type>でサポートされているケースは、CPU と GPU デバイスの両方でcsrとcooです。- dependencies
行列ハンドルを解放する前に
handleが依存するすべてのイベントのリストを含む、const std::vector<sycl::event>タイプのベクトル。
出力パラメーター#
- p_spMat
sparse::matrix_handle_t
sparse::matrix_handle_tハンドルのアドレスは、null オブジェクトを指すように更新がスケジュールされ、渡されたハンドルは割り当ての解除とクリーンアップを行うためスケジュールされます。
戻り値#
- sycl::event
割り当て解除クリーンアップ・ルーチンの完了を待機したり、依存関係として追加できる SYCL* イベント。
戻り値 (非推奨バージョン)#
非推奨バージョンでは、sycl::event は返されず、API はブロックされます。