Main Content

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

gputimeit

GPU で関数を実行するために必要な時間

説明

t = gputimeit(F) は、関数ハンドル F で指定された関数を実行するために通常必要とされる時間を、秒単位で測定します。この関数ハンドルは外部入力引数を受け入れませんが、内部関数呼び出しの入力引数を使用して定義することができます。

t = gputimeit(F,numOutputs) は、必要な数 (numOutputs) の出力引数を指定して F を呼び出します。既定では、gputimeit は関数 F を 1 つの出力引数により呼び出します。ただし、F が出力を返さない場合は、出力引数を使用しません。

すべて折りたたむ

この例では、GPU で sum(A.' .* B, 1) を計算する時間の測定方法を説明します。ここで、A は 12000 行 400 列、B は 400 行 12000 列の行列です。

A = rand(12000,400,'gpuArray');
B = rand(400,12000,'gpuArray');
f = @() sum(A.' .* B, 1);
t = gputimeit(f)
0.0026

GPU での svd の実行時間を、1 つの出力引数と 3 つの出力引数の場合で比較します。

X = rand(1000,'gpuArray');
f = @() svd(X);
t3 = gputimeit(f,3)
1.0622
t1 = gputimeit(f,1)
0.2933

入力引数

すべて折りたたむ

測定対象の関数。関数ハンドルとして指定します。

関数呼び出しに使用する出力引数の数。スカラー整数として指定します。

F で指定した関数の出力数が可変である場合、numOutputsgputimeit がどの構文を使用してこの関数を呼び出すかを指定します。たとえば、関数 svd は 1 つの出力 s を返す場合もあれば、3 つの出力 [U,S,V] を返す場合もあります。構文 s = svd(X) の時間を測定するには numOutputs1 に設定し、構文 [U,S,V] = svd(X) の時間を測定するには 3 に設定します。

制限

  • 関数 Ftictoc を呼び出さないようにする必要があります。

  • tictoc を使用して gputimeit 自体の実行時間を測定することはできません。

ヒント

GPU を使用する関数については gputimeit の方が timeit よりも推奨されます。これにより、GPU でのすべての操作が時間の記録より前に完了し、オーバーヘッドが補正されます。GPU を使用しない操作については、timeit を使用すると精度が大幅に高まります。

バージョン履歴

R2013b で導入