Intel: usar herramientas para desarrollar aplicaciones que exploten a multi-threading y multi-core

31 Ago 2006 en Servidores

La mayoría de las herramientas de desarrollo que hoy utilizan los programadores no permiten escribir aplicaciones en la forma diferente que permite aprovechar la potencia de los nuevos procesadores multi-core.
Hasta la llegada de esta generación de procesadores, los fabricantes de procesadores como Intel, AMD y otros, sólo incrementaban la velocidad del reloj de la CPU y las aplicaciones corrían así cada vez más rápido.
Pero la nueva estrategia para aumentar potencia de computación es multi-core y es similar a SMP (Symmetric Multiprocessing), el conocido método de colocar dos o más CPUs en una misma computadora. Así, los fabricantes de chips colocan dos o más núcleos procesadores en un mismo chip físico en lugar de usar múltiples chips. Sun ya fabrica servidores con un procesador UltraSparc de ocho núcleos.
Con los procesadores multi-core se presentan los mismos problemas que limitaron el uso masivo de SMP: Se trata de la gran dificultad que encierra la programación de aplicaciones multithread o multi-hilo (ver Multi-threading, la tecnología que explota las ventajas de máquinas dual-core y multiprocesadores )
Nathan Brookwood, analista de Insight 64 a quien Datamation consulta con frecuencia, comenta que “la mayoría de los programadores piensan en una forma lineal, no paralela. Por eso, cuando quieren que sus aplicaciones se ajusten a una implementación multithread, les resulta difícil conceptualmente y en el debugging. Estas herramientas que ofrece Intel ayudan en los dos aspectos.”
En un estudio de mercado, Intel comprobó que casi un 80% de los desarrolladores trabajaban por lo menos en una aplicación multithreaded y que no tenían las herramientas o la experiencia necesarias.
James Reinders, director de marketing de la división Developer Products de Intel, nos dice que “las herramientas de software aún no han pegado el salto a multithreading, lo cual dificulta el aprovechamiento de esta capacidad de los procesadores. Queremos facilitar la programación y evitar que los programadores tengan que hacer un manejo explícito de los threads.”
Las herramientas que presentó Intel son tres: Thread Profiler 3.0 y Thread Checker 3.0, que son actualizaciones de productos existentes; y Threading Building Blocks que es nueva.
Intel Threading Building Blocks 1.0 es una librería runtime C++ que simplifica el agregado de multithreading en una aplicación escondiendo el trabajo necesario para asignar los threads o hilos a cada núcleo. Multithreading es también factible mediante OpenMP o Windows Threads, pero ninguno sería fácil de usar, según Reinders.
Las aplicaciones escritas con Threading Building Blocks automáticamente reconocen la cantidad de núcleos disponibles y ajustan la performance en consecuencia. De esta manera, una aplicación puede funcionar sobre una máquina con procesador multi-core sin modificaciones.
Thread Checker 3.0 verifica los threads para evitar errores. Esta nueva versión soporta aplicaciones de 64 bits sobre hardware Intel, de modo que los desarrolladores pueden controlar aplicaciones de 32 y 64 bits. También soporta integración con Visual Studio 2005 de Microsoft.
Thread Profiler 3.0 examina la forma en que interactúan los threads e identifica posibles cuellos de botella u otros problemas de performance. Examina tanto el código como los binarios en áreas donde el código no ha sido estructurado paralelamente en forma óptima.
Reinders cree que estas herramientas hacen al paralelismo más accesible, especialmente para quienes no tienen experiencia. “Hay mucho que aprender para utilizar threads. Hemos logrado abstraer la mayor parte de toda esa complicación,” agrega.