ventajas tarjetas son sirve refrigeracion que programar para nucleos graficas con compatibles aplicaciones cuda

son - tarjetas compatibles con cuda



diferentes nĂșcleos para diferentes arquitecturas (2)

Me pregunto si hay alguna manera fácil de tener diferentes versiones de un kernel para diferentes arquitecturas. ¿Es su una manera fácil? ¿o la única posibilidad es definir kernels independientes en archivos independientes y pedirle a nvcc que compile a diferentes arquitecturas por archivo?


Puedes hacerlo mediante las directivas del compilador. Algo como

__global__ void kernel(...) { # if __CUDA_ARCH__ >= 350 do something # else do something else # endif }


Con un poco más de C ++ JackOLanterns Respuesta ligeramente modificada:

template <unsigned int ARCH> __global__ void kernel(...) { switch(ARCH) { case 35: do something break; case 30: do something else break; case 20: so something else break; default: do something for all other ARCH break; } }

EDITAR: para eliminar el error @ sgar91 señalado:

puede llamar al núcleo con las propiedades de su dispositivo CUDA consultado a través de

cudaGetDeviceProperties(&props, devId); unsigned int cc = props.major * 10 + props.minor; switch(cc) { case 35: kernel<35><<<1, 1>>>(/* args */); break; ... }