Actualmente la computación paralela heterogénea (heterogeneous parallel processing) está tomando una relevancia muy importante en las tareas de cómputo, tanto a gran escala con grandes supercomputadores, como a menor escala en nuestros propios computadores a través de procesadores multi-núcleo y GPUs, es por eso que Microsoft ha anunciado algunas especificaciones de su C++ AMP (C++ Accelerated Massive Parallelism).
C++ AMP, para quienes no se hayan enterado es una tecnología de desarrollo basada en C++, anunciada por primera vez en junio de año pasado en el marco de la AMD Fusion Developer Summit 2011 y que Microsoft ha implementado en su herramienta de programación VisualStudio 11, el cual pretende ser una ayuda a los desarrolladores para usar aceleradores como GPU y CPUs Multi-núcleos para programación paralela.
Así, hace algunos días en el evento GoingNative 2012, Microsoft anunció la publicación, bajo la “Microsoft Community Promise license”, de las especificaciones abiertas para C++ AMP. Este lanzamiento significa que los desarrolladores pueden ahora implementar C++ AMP en sus compiladores. La ventaja es que esta API es tal como lo leyeron “abierta” por lo que eventualmente puede atraer más fácilmente la atención de los desarrolladores y se pueden ir perfeccionando en virtud de esto.
AMP ha sido desarrollado por Microsoft con cierta colaboración de AMD y NVIDIA, por lo que podrán imaginarse que los productos de ambas compañías (GPUS) podrán potenciar las aplicaciones desarrolladas con C++ AMP a través del la API DirectCompute de Microsoft DirectX, aunque las especificaciones publicadas por Microsoft también permiten la implementación de estándares abiertos como OpenGL/OpenCL, lo que es una avance desde el punto de vista de la interoperabilidad, aunque en teoría C++ AMP eventualmente es un competidor de OpenCL (basada en C), que también es un estándar abierto y destinado a computación paralela heterogénea.
Microsoft en todo caso afirma que C++ AMP, es mucho mas practico y fácil de trabajar que OpenCL, por cuanto simplifica el desarrollo basado en GPU y CPU, a diferencia de OpenCL que disgrega el desarrollo si se trata de aplicaciones para GPU o CPU.
El soporte de C++ AMP, lógicamente no sólo se limita a los GPUs de NVIDIA y AMD, también es compatible con CPU multi-núcleo y otras arquitecturas de cómputo.
[Microsoft] vía [arstechnica]