2

GPU で使用可能な最大スレッド数を見つける最善の方法がわかりません。次のコードがあります。

int deviceCount, device;
int gpuDeviceCount = 0;
struct cudaDeviceProp properties;
cudaError_t cudaResultCode = cudaGetDeviceCount(&deviceCount);
if (cudaResultCode != cudaSuccess)
    deviceCount = 0;
/* machines with no GPUs can still report one emulation device */
for (device = 0; device < deviceCount; ++device) {
    cudaGetDeviceProperties(&properties, device);
    if (properties.major != 9999) /* 9999 means emulation only */
    if (device==0)
    {
            printf("multiProcessorCount %d\n",properties.multiProcessorCount);
            printf("maxThreadsPerMultiProcessor %d\n",properties.maxThreadsPerMultiProcessor);
    }
}

戻り値:

multiProcessorCount 14
maxThreadsPerMultiProcessor 1536

合計数は 14*1536=21504 であることがわかります。小さすぎると感じました(Tesla M2070を持っています)。

4

1 に答える 1

3

あなたの確認方法は正しいです。NVIDIA cuda SDK のサンプルを確認できます。SDK の「デバイス クエリ」サンプルで適切に定義されています。

于 2012-09-24T16:48:21.923 に答える