私は、データのチャンク上でベクトル - 行列乗算を実行し、結果をCPUにコピーしてから、別のチャンクの乗算を開始する必要があるコードに取り組んでいます。私はcublasライブラリ(次のコード)を使ってベクトルから行列への乗算を行います。正確なGPUの計算時間を測定する
clock_t a,b;
a = clock();
for(int i=0;i<n;i++)
{
cublasSgemv(handle,CUBLAS_OP_T,m,k,&alpha, dev_b1+((i+1)*m), m, dev_b1+(i*m),1, &beta,out,1);
out+=(n-(i+1));
cudaMemcpy(b3,dev_b3, sizeof(float)*(cor_size), cudaMemcpyDeviceToHost);
}
b = clock();
cout<<"Running time is: "<<(double)(b-a)/clocks_per_sec;
このforループの実行時間を測定する必要があります。私はCudaEventについて何かを読んだが、私のケースでは、カーネルではないトータル・ループの時間を測定したいので、私は時計機能を使用した。私はこれがコードのこの塊の時間を測定する正しい方法か、それを行うより正確な方法があるのだろうかと疑問に思っていますか? 私は、経過時間を測定するために、コードを複数回実行し、すべての実行の経過時間の平均を取る必要があることを知っています。したがって、もう1つの質問は、実行コードを繰り返す回数のトレードオフです?
おかげ