CUDA Academy · Lección

Enumeración y selección de dispositivos

cudaSetDevice y contextos por GPU

Lección 1 de 413 pasos

Enumeración y selección de dispositivos es una lección gratuita de CUDA Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CUDA Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CUDA Academy incluye 4 lecciones en total.

Más de una GPU

Una sola máquina puede contener varias GPU. Para utilizarlas todas, el programa debe descubrir primero cuántos dispositivos hay presentes antes de enviarles trabajo.

Contar los dispositivos

Una llamada le indica cuántas GPU puede ver el runtime. cudaGetDeviceCount escribe esa cantidad en el int que usted le proporciona.

int count;
cudaGetDeviceCount(&count);

Los dispositivos tienen números

Cada GPU recibe un identificador entero desde 0 hasta count menos uno. Ese identificador de dispositivo es la forma de indicar al runtime una tarjeta concreta.

Elegir el dispositivo activo

Puede elegir a qué GPU se dirigirán las siguientes llamadas mediante cudaSetDevice. A partir de ese momento, las asignaciones y los lanzamientos se realizan en esa tarjeta.

cudaSetDevice(1);

Existe un dispositivo actual

En cada momento, exactamente una GPU es el dispositivo actual del subproceso que realiza la llamada. Cada cudaMalloc o lanzamiento de kernel se ejecuta en el dispositivo que esté seleccionado.

Inspeccionar un dispositivo

Antes de confiar en una GPU, puede consultar sus especificaciones. cudaGetDeviceProperties rellena una estructura con el nombre, el tamaño de la memoria y la capacidad de cómputo.

cudaDeviceProp prop;
cudaGetDeviceProperties(&prop, 0);

Leer las propiedades

La estructura de propiedades contiene mucha información. Campos como name y totalGlobalMem le ayudan a elegir la mejor tarjeta o a descartar una que sea demasiado pequeña.

Cada dispositivo es dueño de su memoria

Un puntero obtenido mediante cudaMalloc pertenece a la GPU que era la actual en ese momento. Utilizarlo mientras otro dispositivo es el actual es un error a punto de ocurrir.

Contextos por dispositivo

Detrás de cada GPU hay un contexto que contiene sus asignaciones y streams. Cambiar el dispositivo actual le cambia al contexto de ese dispositivo.

Recorrer todas las GPU

Un patrón habitual consiste en recorrer un bucle que llama a cudaSetDevice para cada identificador y después configura esa tarjeta. Así puede distribuir el trabajo entre todos los dispositivos.

for (int d = 0; d < count; d++) {
  cudaSetDevice(d);
}

Restaure el dispositivo antes de salir

Si una función auxiliar cambia el dispositivo actual, vuelva a cambiarlo al terminar. Dejar modificado el dispositivo actual puede causar sorpresas en el resto del código.

Comprobación rápida

Recuerde qué llamada elige la GPU que utilizarán las siguientes asignaciones y lanzamientos.

Resumen

Cuenta las GPU, elige una con cudaSetDevice y la inspecciona mediante sus propiedades. Cada dispositivo tiene su propia memoria y contexto. A continuación: dividir el trabajo entre ellas. ✨

Gratis para empezar

Aprende C++ con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Enumeración y selección de dispositivos» es gratis?

Sí — el texto completo de «Enumeración y selección de dispositivos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CUDA Academy, actualiza a CoddyKit PRO. El curso de CUDA Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Enumeración y selección de dispositivos»?

cudaSetDevice y contextos por GPU Practicas CUDA Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar CUDA Academy?

No se requiere experiencia previa. CUDA Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Enumeración y selección de dispositivos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de CUDA Academy?

Sí. Cada lección de CUDA Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Enumeración y selección de dispositivos
  2. Partición del trabajo entre GPU
  3. Acceso entre pares a la memoria
  4. Varias GPU con NCCL
← Volver a CUDA Academy