¿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 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.

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)

Necesita la capacidad informática de los procesadores Intel® Xeon® multicore, pero las DIMM 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 DIMM 90+ GB/s.