Recibo un error cuando trato de usar printf () en un kernel

Estoy usando Visual Studio 2010 y un GTX480 con capacidad de cálculo 2.0.

He intentado establecer sm en 2.0, pero cuando intento usar printf () en un kernel, obtengo:

error: no se permite llamar a una función de host ("printf") desde un __device __ / __ global__ function ("prueba")

Este es mi código:

#include "util\cuPrintf.cu"
#include <cuda.h>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <cuda_runtime.h>

__global__ void test (void)
{
  printf("Hello, world from the device!\n");
}

void main(void)
{
    test<<<1,1>>>();
    getch();
}

Encuentro un ejemplo aquí: "CUDA_C_Programming_Guide" 'page _106' "B.16.4 Ejemplos" por fin, es un trabajo para mí: D gracias.

#include "stdio.h"
#include <conio.h>

// printf() is only supported
// for devices of compute capability 2.0 and higher

  #if defined(__CUDA_ARCH__) && (__CUDA_ARCH__ < 200)
      #define printf(f, ...) ((void)(f, __VA_ARGS__),0)
  #endif


__global__ void helloCUDA(float f)
{
    printf("Hello thread %d, f=%f\n", threadIdx.x, f);
}

int main()
{
    helloCUDA<<<1, 5>>>(1.2345f);
    cudaDeviceSynchronize();
    getch();
    return 0;
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta