¿Qué es la modernización del código?

 

Las computadoras de alto desempeño modernas han sido desarrolladas con una combinación de recursos, entre ellos procesadores multicore y manycore, cachés grandes, memoria rápida, trama de comunicaciones entre procesadores de ancho de banda alto y amplia compatibilidad para capacidades de E/S. El software de alto desempeño debe ser diseñado para aprovechar al máximo esta riqueza de recursos.

Ya sea que esté rediseñado y/o ajustando aplicaciones existentes para obtener el máximo desempeño o creando nuevas aplicaciones para equipos actuales y futuros, es fundamental estar al tanto del interjuego entre los modelos de programación y el uso eficiente de estos recursos.

Considere esto como un punto de partida de información relacionada con la modernización de código.

Vectorización

Un ingrediente clave para un buen desempeño en paralelo en hardware moderno es aprovechar totalmente las instrucciones de vectores, también conocidas como conjuntos de Instrucciones únicas de datos múltiples (Single Instruction Multiple Data, SIMD) . Aquí también aprenderá cómo optimizar operaciones escalares y seriales manteniendo la debida precisión, las constantes de tipo, y utilizando las funciones y marcas de precisión apropiadas.

De multicore a manycore

La ampliación es especialmente importante para las aplicaciones con un alto nivel de paralelismo y un uso intensivo de la capacidad informática. Minimice los cambios y maximice el desempeño al cambiar la meta de ejecución de un tipo de arquitectura Intel® (procesador Intel® Xeon®) a otro (coprocesador Intel® Xeon Phi™).

Optimización de memoria

En todos los sistemas (desde computadoras portátiles hasta supercomputadoras) los núcleos solo pueden funcionar a su capacidad informática plena si reciben los datos a la máxima velocidad a la cual pueden procesarla. Por lo tanto, para las aplicaciones regulares y las de informática de alto desempeño, el desempeño será mayor si la mayoría de las solicitudes de memoria van a memorias caché cercanas. Si ese no es el caso, vectorizar y paralelizar el código podría ser ineficaz. Descubra cómo reconocer y corregir esta situación.

Acceso a memoria no uniforme (NUMA) y MCDRAM

Necesita la capacidad informática de los procesadores para servidor multicore o los procesadores Intel Xeon Phi manycore, pero las DIMM y MCDRAM del sistema no reflejan las necesidades de las unidades de procesamiento de vectores múltiples, por lo tanto su programa se atasca. Aprenda a cambiar las características de acceso a datos de su aplicación, de modo que las caché L1 y L2 proporcionen esos necesarios 10,000+ GB/s. Termine con las demoras en los datos de las memorias MCDRAM 400+ GB/s o DIMM 90+ GB/s.