CUDA, cuPrintf вызывает "неопределенный сбой запуска"? - PullRequest
1 голос
/ 04 июля 2011

У меня есть ядро, которое запускается дважды с разным размером сетки.

Моя проблема с cuPrintf.Когда у меня нет cudaPrintfInit() до запуска ядра и cudaPrintfDisplay(stdout, true) и cudaPrintfEnd() после запуска ядра, у меня нет ошибки, но когда я их туда помещаю, я получаю ошибку «неопределенная ошибка запуска».

В коде моего устройства есть только один цикл для печати:

if (threadIdx.x==0) {
     cuPrintf("MAX:%f x:%d y:%d\n", maxVal, blockIdx.x, blockIdx.y);
}

Я использую CUDA 4.0 с картой с поддержкой cuda 2.0 и собираю свойкод с этим синтаксисом:

nvcc LB2.0.cu -arch=compute_20 -code=sm_20  

1 Ответ

1 голос
/ 04 июля 2011

Если вы используете графический процессор CC 2.0, вам вообще не нужен cuPrintf - в CUDA есть встроенная функция printf для графических процессоров CC-2.0 и выше.Поэтому просто замените ваш вызов cuPrintf следующим:

#if __CUDA_ARCH__ >= 200
if (threadIdx.x==0) {
    printf("MAX:%f x:%d y:%d\n", maxVal, blockIdx.x, blockIdx.y);
}
#endif

(Обратите внимание, что вам нужны только строки #if / #endif, если вы компилируете свой код для sm_20 и более ранних версий. В примере командной строки компиляцииВы дали, вы можете устранить их.)

С printf вам не нужны cudaPrintfInit () или cudaPrintfDisplay () - это автоматически.Однако, если вы печатаете много данных, вам может потребоваться увеличить размер FIFO printf по умолчанию с помощью cudaDeviceSetLimit () , передав параметр cudaLimitPrintfFifoSize.

...