Arquitectura de los procesadores

Los nodos de computación en PROTEUS contienen diferentes arquitecturas de procesador. Los compiladores disponibles tienen diferentes opciones de compilación que intentan sacar el máximo rendimiento de las características específicas de cada arquitectura con el fin de obtener programas más rápidos. Todos los nodos usan procesadores Intel, con arquitecturas Nehalem, Haswell. Además, hay 2 tarjetas gráficas Tesla de NVIDIA, aunque su uso no será tratado en este apartado.  La lista completa de los nodos de computación, modelo de CPU y arquitectura se puede consultar en la página de Información Técnica.

Las arquitecturas de CPU se diferencian entre ellas por cambios en la organización estructural de las unidades funcionales que la componen y por el uso de nuevas instrucciones que permiten realizar nuevos tipos de computación. Un programa compilado para obtener las ventajas de una nueva arquitectura podría no poder ser ejecutado en una CPU más antigua. Entre las nuevas instrucciones destacan las llamadas single instruction, multiple data (SIMD). Las instrucciones SIMD permiten que la misma operación se realice sobre múltiple datos a la vez de forma paralela. Este escenario es muy frecuente en computación científica, donde se tiene que operar sobre arrays de datos. El uso de SIMD puede llegar a obtener mejoras de rendimiento en un factor de hasta 10.

Las instrucciones SIMD se agrupan en familias de instrucciones similares que se introdujeron en una misma arquitectura. Las arquitecturas más modernas incorporan todas las instrucciones de arquitecturas anteriores. Los principales conjuntos de instrucciones SIMD que tenemos que tener en cuenta a la hora de compilar son SSE4.2, AVX, and AVX2. Las instrucciones AVX y AVX2, por ejemplo, pueden realizar operaciones de hasta 8 números en coma flotante de 32 bits a la vez.

Para usar estas instrucciones, se podría hacer manualmente, lo cual es bastante tedioso y complicado, o indicarle al compilador que las queremos usar. Por defecto, el compilador no va a utilizarlas porque implica romper la compatibilidad con procesadores que no soporten las instrucciones. Hay que indicar explícitamente que queremos usarlas para poder obtener las ventajas que ofrecen.

Instrucciones SIMD en cada arquitectura de CPU

Cuando se usan opciones de optimización hay que tener en cuenta las instrucciones que son compatibles con los nodos donde van a correr los programas. Siempre hay que usar el conjunto de instrucciones más alto soportado ya que puede tener un impacto muy grande en el rendimiento obtenido. La siguiente tabla muestra el conjunto de instrucciones SIMD soportada por cada nodo del cluster.

NodosArquitectura IntelSSE3SSE4.1SSE4.2AVX
Artemis
Calypso
Kratos
Hermes00-12
Hermes13-16

Cuando se usen las instrucciones SIMD, el nodo donde se ejecute el programa debe soportar dichas instrucciones. El sistema de colas permite elegir los nodos destino en los que los programas se ejecutarán.