[CUDA] GPUデバイスからprintfする

CUDA Toolkit 3.1からデバイスからprintfを発行できるようになりました.ただし,Device Capability 2.0以降のデバイスでなければサポートされていないので,GTX480といったいわゆるFermiアーキテクチャのカードが必要です.

#include <stdio.h>

__global__
void test() {
    printf("Hello world from %d of %d\n", threadIdx.x, blockDim.x);
}

int main() {
    test<<<1, 32>>>();
    cudaThreadSynchronize();
    return 0;
}

printfが使えるようになったとはいえ,CPUのように使うわけにはいきません.制限事項については,CUDA Programming ManualのB.14のFormatted Outputを参照してください.

制限があるとはいえ,簡単にログが取れるようになったのは大きいと思います.