cuPrintf  Nvidia’nın Nvidia Developer Account’a sahip insanların kullanımına sunduğu -nerdeyse- printf dengi fonksiyonu. Gerçekten süper bi olay. Kullanımı da oldukça basit. Tek yapılması gereken developer hesabından indirilen cuPrintf… isimli klasörün içindeki cuPrintf.cu ve cuPrintf.cuh dosyalarını projenin klasörünün içine atmak ve kendi projemizdeki kernelin üstüne #include “cuPrintf.cu” eklemek. Ve biter.

Nvidia’nın kendi örnek kodu şöyle:

#include "cuPrintf.cu"
__global__ void testKernel(int val)
{
cuPrintf("Value is: %d\n", val);
}
int main()
{
cudaPrintfInit();
testKernel<<<2, 3>>>(10);
cudaPrintfDisplay(stdout, true);
cudaPrintfEnd();
return 0;
}

cudaPrintfInit ve cudaPrintfEnd fonksiyonlarının proje boyunca sadece bir kez çağrılması yeterlidir. Çıktı doğrudan ekrana yazılmaz. Önce bufferda depolanır daha sonra cudaPrintfDisplay fonksiyonuyla ekrana basılır. Buffer size’i cudaPrintfInit(size_t bufferLen) fonksiyonuna opsiyonel olarak geçilen parametre ile değiştirilebilir.

cudaPrintfEnd fonksiyonu da cudaPrintfInit için ayrılan belleği free yapar. Yani sisteme geri verir.

Notnot: Sakın ha sakın gidip de projenin source klasörüne cuPrintf.cu’yu veya header klasörüne cuPrintf.cuh eklemeyin. Şöyle garip gurup hatalar verebilir:

cudaPrintfInit already defined in cuPrintf.cu.obj