Memoria fijada con cudaMallocHost
Búferes con páginas bloqueadas para DMA rápido.
Memoria fijada con cudaMallocHost es una lección gratuita de CUDA Academy en CoddyKit. Esta es la lección 2 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.
Conozca la memoria pinned
La memoria pinned es memoria del host que el sistema operativo se compromete a no mover ni intercambiar. Como su dirección física es fija, la GPU puede leerla directamente.
También llamada page-locked
Verá que el término page-locked se usa como sinónimo de pinned. Ambos significan lo mismo: páginas bloqueadas en su ubicación para que nunca puedan intercambiarse.
Asígnela correctamente
Solicite memoria pinned a CUDA mediante cudaMallocHost. Esta función devuelve un puntero ordinario del host que puede leer y escribir igual que cualquier arreglo de C++.
float* h_data;
cudaMallocHost(&h_data, N * sizeof(float));Úsela con normalidad
El puntero devuelto se comporta como cualquier búfer del host, por lo que su código de CPU no cambia. Solo tiene que llenarlo y leerlo exactamente como antes.
for (int i = 0; i < N; ++i) h_data[i] = i * 1.0f;Sin más copias intermedias
Como las páginas no pueden moverse, el controlador omite su copia intermedia oculta. La GPU obtiene los datos directamente de su búfer, por lo que desaparece la copia duplicada.
Transferencias más rápidas
La recompensa es un ancho de banda real. Las transferencias con memoria pinned suelen acercarse a la velocidad máxima del enlace, y a veces son aproximadamente el doble de rápidas que con memoria paginable.
Libérela correctamente
La memoria pinned requiere su propia función de liberación correspondiente. Use cudaFreeHost, nunca el free normal, o podría provocar un fallo y una fuga de memoria.
cudaFreeHost(h_data);No es memoria ilimitada
Las páginas pinned no pueden intercambiarse, por lo que mantienen ocupada la RAM real. Si fija demasiada memoria, privará al resto del sistema de memoria utilizable.
La asignación es más lenta
Bloquear páginas requiere trabajo, por lo que cudaMallocHost es más lenta al asignar que malloc. Reutilice un búfer pinned para muchas transferencias en lugar de volver a asignarlo.
La verdadera ventaja
Además de la velocidad, la memoria pinned es la clave para habilitar copias realmente asíncronas. Sin ella, cudaMemcpyAsync no puede solaparse con nada.
Cuándo utilizarla
Fije los búferes que transfiera con frecuencia o que alimenten streams. Para una copia puntual de un arreglo pequeño, malloc normal es perfectamente adecuado. 🙂
Comprobación rápida
Ha asignado un búfer con cudaMallocHost. ¿Cómo debe liberarlo?
Resumen
cudaMallocHost fija las páginas del host para que la GPU las lea directamente, lo que acelera las copias y permite solaparlas de forma asíncrona. Libere siempre la memoria con cudaFreeHost. 🔒
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 «Memoria fijada con cudaMallocHost» es gratis?
Sí — el texto completo de «Memoria fijada con cudaMallocHost» 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 «Memoria fijada con cudaMallocHost»?
Búferes con páginas bloqueadas para DMA rápido. 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 2 de 4.
¿Cuánto tiempo toma la lección «Memoria fijada con cudaMallocHost»?
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
- Por qué la memoria paginable es lenta
- Memoria fijada con cudaMallocHost
- cudaMemcpyAsync en un stream
- La canalización de doble búfer