0

タイトルで述べたように、 の関数はcudaMallocPitch()多くの時間をcudaMemcpy2D()消費し、かなりの時間を消費することもわかりました。

私が使用しているコードは次のとおりです。

cudaMallocPitch((void **)(&SrcDst), &DeviceStride, Size.width * sizeof(float), Size.height);

cudaMemcpy2D(SrcDst, DeviceStride * sizeof(float), 
        ImgF1, StrideF * sizeof(float), 
        Size.width * sizeof(float), Size.height,
        cudaMemcpyHostToDevice);

実装では、Size.widthSize.heightは両方とも 4800 です。所要時間cudaMallocPitch()は約 150 ~ 160ms (事故の場合は複数のテスト) でcudaMemcpy2D()、約 50ms を消費します。

CPU と GPU 間のメモリ帯域幅がそれほど制限されているとは思えませんが、コードにエラーは見られません。その理由は何ですか?

ちなみに、私が使用しているハードウェアは Intel I7-4770K CPU と Nvidia Geforce GTX 780 (エラーのないかなり良いハードウェア) です。

4

1 に答える 1