Computación científica de alto desempeño en sistemas Xeon Phi.
Resumen:
Intel Xeon Phi es una línea de coprocesadores cuya arquitectura consiste de entre 57 y 61 núcleos, a una frecuencia de alrededor de 1GHz, que implementan un superconjunto de las instrucciones x86, con la adición de instrucciones SIMD de 512 bits. Cada coprocesador viene contenido dentro de una tarjeta de expansión PCIe, incluyendo hasta 16GB de memoria RAM, y se integra a sistemas existentes corriendo su propio sistema operativo autónomo basado en Linux. Su arquitectura cuenta con compiladores oficiales para C/C++ y Fortran y con implementaciones de varios modelos de programación paralela comunes con otras arquitecturas de memoria compartida, incluyendo el estándar OpenMP y la biblioteca Intel Threading Building Blocks (TBB). Por sus características, es una arquitectura de alto desempeño que, en principio, no requiere conocimientos específicos para su uso y permite el desarrollo de aplicaciones portables. La propuesta de este trabajo es interiorizarse en la arquitectura de Xeon Phi y sus herramientas para el desarrollo de aplicaciones, con énfasis en TBB, buscando identificar las condiciones y prácticas necesarias para su desempeño óptimo, culminando con la implementación de una aplicación como prueba de concepto. La literatura consultada y las pruebas realizadas muestran que, para obtener un buen desempeño, es necesario que las aplicaciones sean escalables a entre 100 y 250 hilos concurrentes, que sus operaciones aprovechen el tamaño completo de las unidades vectoriales, y que saquen provecho de la localidad de memoria. Se conocen múltiples técnicas portables de optimización para favorecer la escalabilidad, la vectorización y el aprovechamiento de la localidad, pero se observa que, en la mayoría de los casos, es necesario usar construcciones específicas de la arquitectura para optimizar la vectorización. La prueba de concepto implementada consistió de una simulación de una red de pesca. Con la ayuda del perfilador VTune Amplifier, fue posible llegar a una implementación escalable de la simulación usando TBB. Sin embargo, la implementación final no mostró un buen aprovechamiento de la vectorización y la localidad, quedando pendiente la optimización de estos aspectos.
2023 | |
Xeon Phi Computación de alto desempeño Intel threading building blocks Manycore Procesadores multinúcleo Programación paralela |
|
Español | |
Universidad de la República | |
COLIBRI | |
https://hdl.handle.net/20.500.12008/43442 | |
Acceso abierto | |
Licencia Creative Commons Atribución - No Comercial - Sin Derivadas (CC - By-NC-ND 4.0) |
Sumario: | Intel Xeon Phi es una línea de coprocesadores cuya arquitectura consiste de entre 57 y 61 núcleos, a una frecuencia de alrededor de 1GHz, que implementan un superconjunto de las instrucciones x86, con la adición de instrucciones SIMD de 512 bits. Cada coprocesador viene contenido dentro de una tarjeta de expansión PCIe, incluyendo hasta 16GB de memoria RAM, y se integra a sistemas existentes corriendo su propio sistema operativo autónomo basado en Linux. Su arquitectura cuenta con compiladores oficiales para C/C++ y Fortran y con implementaciones de varios modelos de programación paralela comunes con otras arquitecturas de memoria compartida, incluyendo el estándar OpenMP y la biblioteca Intel Threading Building Blocks (TBB). Por sus características, es una arquitectura de alto desempeño que, en principio, no requiere conocimientos específicos para su uso y permite el desarrollo de aplicaciones portables. La propuesta de este trabajo es interiorizarse en la arquitectura de Xeon Phi y sus herramientas para el desarrollo de aplicaciones, con énfasis en TBB, buscando identificar las condiciones y prácticas necesarias para su desempeño óptimo, culminando con la implementación de una aplicación como prueba de concepto. La literatura consultada y las pruebas realizadas muestran que, para obtener un buen desempeño, es necesario que las aplicaciones sean escalables a entre 100 y 250 hilos concurrentes, que sus operaciones aprovechen el tamaño completo de las unidades vectoriales, y que saquen provecho de la localidad de memoria. Se conocen múltiples técnicas portables de optimización para favorecer la escalabilidad, la vectorización y el aprovechamiento de la localidad, pero se observa que, en la mayoría de los casos, es necesario usar construcciones específicas de la arquitectura para optimizar la vectorización. La prueba de concepto implementada consistió de una simulación de una red de pesca. Con la ayuda del perfilador VTune Amplifier, fue posible llegar a una implementación escalable de la simulación usando TBB. Sin embargo, la implementación final no mostró un buen aprovechamiento de la vectorización y la localidad, quedando pendiente la optimización de estos aspectos. |
---|