A simple vista podríamos pensar que si un Grid solo puede ejecutar el mismo
kernel y este es controlado solo por un dispositivo el cual solo es accesible
desde el mismo thread del host, no es necesario tener en consideración otras interacciones
entre distintos procesos. Hasta la versión 3.2 de CUDA esto era así,
Figura 1. CUDA 4.0
revoluciona la computación paralela en GPGPU
pero con la aparición de CUDA 4.0, se han eliminado ésta y muchas
otras barreras: en cuanto a la plataforma GPUDirect™ se pueden realizar
transferencias de memoria directamente de una GPU a otra sin pasar por memoria
host; arquitectura 64-bit nativa; gestión de clúster; soporte multi-GPU en la
que se pueden compartir múltiples GPUs a través de múltiples hilos (de host),
un solo hilo (de host) puede acceder a todas las GPUs. En cuanto al modelo de
programación: direccionamiento de memoria unificado, ahora se podrá contemplar
la memoria de sistema y la memoria de cada una de las GPUs como una sola unidad
de memoria simplificando así la migración de programas existentes.
Además el
nuevo toolkit viene acompañado de librerías OpenSource y plantillas de
primitivas que ayudan y facilitan el manejo de vectores, matrices, etc. Un
nuevo sistema de análisis de rendimiento permitirá obtener todas las métricas
necesarias para afinar nuestros desarrollos.
Por
eso es importante diseñar no sólo kernels, sino también las rutinas de host que
los llaman, para que hagan un uso razonable de los recursos, por ejemplo
modificando el tamaño de los bloques e hilos en las llamadas dinámicamente, en
lugar de dejar un valor fijo para todas las llamadas.
No hay comentarios:
Publicar un comentario