Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

wait

GPU の計算が完了するまで待機

説明

wait(gpudev) は、GPUDevice オブジェクト gpudev で特定された GPU デバイスが計算を完了するまで、MATLAB® での実行をブロックします。これは、結果をワークスペースに返さない GPU コードのタイミングを設定する場合に、tic および toc の呼び出しの前に使用することができます。関数 gather を使用して GPU から結果を収集する際、MATLAB は GPU の計算が完了するまで待機するため、この場合に wait を明示的に呼び出す必要はありません。

すべて折りたたむ

MATLAB® の GPU 演算は非同期的に実行されます。つまり、バックグラウンドで実行され、後続のコード行が実行されるときに必ずしも完了しているとは限りません。これは、GPU で実行されるコードの時間を測定する際に関連します。

関数gputimeitを使用することで、GPU での関数の実行にかかる時間を測定できます。これにより、GPU でのすべての演算が時間の記録より前に完了している状態にすることができます。gputimeit はこの関数を複数回実行するため、特に長期間実行されるコードの時間を測定するのには適していない場合があります。代替策として、関数ticおよびtocを使用し、それぞれの関数の前に wait を呼び出します。

既定の GPU デバイスを選択します。

gpu = gpuDevice;
disp(gpu.Name + " GPU selected.")
NVIDIA RTX A5000 GPU selected.

GPU で乱数が含まれた 1000 行 1000 列の行列を作成します。

A = rand(1000,"gpuArray");

GPU デバイスが行列 A の作成を完了するまで待機し、tic を使用して時間の測定を開始します。

wait(gpu)
tic

関数luを使用して、行列を上三角行列および置換された下三角行列に因数分解します。

[L,U] = lu(A);

計算が完了するまで待機してから、toc を使用して経過時間を出力します。

wait(gpu)
toc
Elapsed time is 0.014811 seconds.

入力引数

すべて折りたたむ

GPU デバイス。現在選択されているデバイスを表す GPUDevice オブジェクトとして指定します。GPUDevice オブジェクトを取得するには、関数 gpuDevice を使用します。

バージョン履歴

R2014b で導入