Los que somos usuarios de aplicaciones gráficas, siempre estamos expectantes que los equipos tengan suficiente memoria de trabajo. En esto, los programas CAD/GIS siempre han sido cuestionados o medidos en función de el tiempo que se tardan en realizar actividades cotidianas como:
- Análisis espacial
- Rectificación y registro de imágenes
- Despliegue de datos masivos
- Gestión de datos dentro de una geodatabase
- Servicio de datos
La PC tradicional no ha cambiado mucho en los últimos años, en lo que respecta memoria RAM, disco duro, memoria gráfica y características que solo han ido incrementándose; pero la lógica de operación del CPU ha mantenido su diseño original (Por eso seguimos llamándole CPU). También ha sido una desventaja que a medida que los equipos crecen en capacidades, los programas matan su expectativa diseñándose para consumir el nuevo potencial.
Como ejemplo, (y solo ejemplo), cuando se colocan dos usuarios al mismo tiempo, en iguales condiciones de equipo y datos, uno con AutoCAD 2010 y otro con Microstation V8i, cargando 14 imágenes raster, un archivo parcelario de 8,000 predios y conexión a una base de datos espacial Oracle, nos hacemos la pregunta:
¿Qué tiene uno de los dos, para no colapsar la máquina?
La respuesta no está en innovación, simplemente es la forma de desarrollo del programa, porque no sucede así con AutoDesk Maya, que hace cosas más locas y rinde mejor. El modo de explotar la PC es igual (hasta ahora en el caso de los dos programas), y en función de esto fusilamos los programas, porque los ocupamos para trabajar, y mucho. Así, algunos equipos se conocen como PCs tradicionales, estaciones de trabajo o servidores; no porque sean de otro color, sino por la manera que rinden ejecutando programas de alto consumo en el diseño gráfico, tratamiento de video, desarrollo de aplicaciones, funciones de servidor y en nuestro caso, operación con datos espaciales.
Menos CPU, más GPU
De lo más sobresaliente en cambios recientes sucedidos a la arquitectura de las PCs es el término acuñado como GPU, (Unidad de Procesos Gráficos), que permite encontrar un mejor rendimiento del equipo, convirtiendo grandes rutinas en pequeñas tareas simultáneas, sin pasar por la administración del CPU (Unidad Central de Procesos), cuya capacidad de trabajo se juega entre las revoluciones del disco duro, memoria RAM, memoria de video y entre otras particulares (no muchas otras).
Las tarjetas gráficas, no están hechas para incrementar la memoria de video, sino que ellas mismas incluyen un procesador que contiene cientos de núcleos diseñados para ejecutar procesos paralelos. Esto lo han tenido siempre (más o menos), pero la ventaja actual radica en que estos fabricantes ofrecen cierta arquitectura abierta (casi) para que los desarrolladores de software puedan considerar la existencia de una tarjeta de estas capacidades y explotar su potencial. PC Magazine de este mes de Enero menciona empresas como nVidia, ATI y otras incluidas dentro de la alianza OpenCL
Para entender la diferencia entre CPU y GPU, aquí les refiero un símil:
CPU, todo centralizado, es como una municipalidad con todo centralizado, que tiene un planeamiento urbano, sabe que debe controlar su crecimiento pero es incapaz de supervisar ni tan siquiera las nuevas construcciones que están violando las normas. Pero en lugar de concesionar este servicio a la empresa privada, insiste en atribuirse el rol, la población no sabe a quien quejarse por el vecino que se está tomando la acera, y la ciudad sigue desordenándose cada día más.
Disculpa, no hablaba de tu alcalde, solo hablaba de un símil del CPU, donde esta Unidad Central de Procesos (en caso de Windows) debe hacer que el equipo rinda en procesos como:
- Programas que se ejecutan al iniciar Windows, como Skype, Yahoo Messenger, Antivirus, Motor de Java, etc. Todos consumiendo una parte de la memoria de trabajo con una prioridad baja pero de forma innecesaria a menos que se modifiquen mediante el msconfig (cosa que algunos ignoran).
- Servicios que están en ejecución, que son parte de Windows, programas de uso común, hardware conectado u otros que se desinstalaron pero quedan allí corriendo. Estos suelen tener una prioridad media/alta.
- Programas en uso, que consumen espacio con prioridad alta. Su velocidad de ejecución la sentimos en el hígado porque maldecimos si no lo hacen rápido a pesar de tener un equipo de alto rendimiento.
Y aunque Windows hace sus malabares, prácticas como tener muchos programas abiertos, instalar o desinstalar de forma irresponsable, temas innecesarios que se ven pintones, hacen que nosotros mismos seamos culpables del mal funcionamiento del equipo.
Sucede entonces, que cuando echamos a andar un proceso de los mencionados al inicio, el procesador se quiebra el coco buscando dar prioridad a este por sobre los otros programas en uso. Sus pocas opciones para optimizar son la memoria RAM, memoria de video (que muchas veces es compartida), si hay una tarjeta gráfica sacarle algo, dependiendo del tipo de disco duro y otras pequeñeces, el quejido lastimero podría ser menor.
GPU, procesos paralelos, es como que la municipalidad decida descentralizar, concesionar o privatizar aquellas cosas que están fuera de su alcance que aunque sean grandes procesos se entregan en pequeñas tareas. Así, en base a la normativa vigente se entrega a una empresa privada el rol de vigilar las violaciones penables de forma específica. Como resultado (sólo ejemplo), el ciudadano puede cumplir con ese delicioso placer de contarle las costillas al vecino que saca el perro a cagarse en su acera, que construye un muro tomándose parte de la acera, que parquea su carro de forma indebida, etc. La empresa atiende la llamada, va al lugar, procesa la acción, le lleva a la corte, ejecuta la multa, la mitad va para la municipalidad, la otra es un negocio rentable.
Así funciona el GPU, los programas pueden diseñarse de modo que no envíe procesos masivos de forma convencional, sino que se vayan en paralelo como pequeñas rutinas filtradas. Oh! maravilloso!
Hasta ahora, no muchos programas están haciendo sus aplicaciones con estas características. La mayoría, juegan aspiran llegar a 64 bits para resolver sus problemas de lentitud, aunque todos sabemos que don Bill Gates siempre se va a pasear en esas capacidades cargando cosas innecesarias sobre las próximas versiones de Windows. La estrategia de Windows incluye aprovechar el GPU por medio de las API diseñadas para trabajar sobre DirectX 11, que seguro será una alternativa que todos (o la mayoría) aceptarán porque lo preferirán como estándar en lugar de hacer locuras para cada marca fuera de OpenCL.
El gráfico muestra un ejemplo, donde se muestra como entre 2003 y 2008 el procesador nVidia vía GPU ha ido revolucionando sus capacidades en comparación con el procesador Intel CPU. También la explicación fumada de la diferencia.
Pero el potencial del GPU está allí, ojalá y los programas CAD/GIS le saquen el jugo necesario. Ya se ha escuchado, aunque el caso más sobresaliente es el d
e Manifold GIS, con las tarjetas CUDA, de nVidia, en el que un proceso de generación de modelo digital de terreno que se tardaba más de 6 minutos se logró ejecutar en apenas 11 segundos aprovechando la existencia de una tarjeta CUDA. Fumada que les hizo ganar el Geotech 2008.
En conclusión: Vamos por el GPU, seguro veremos mucho en los próximos dos años.