Buscar este blog

viernes, 10 de febrero de 2012

Entorno respetuoso de ejecución


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