You are on page 1of 4

Control HPC

Pregunta 1:

FLOP significa Floating point operations. Para el contexto supondré que se refiere a flops que
serían operaciones de punto flotante por segundo. Se utiliza este concepto porque existen varios
factores que afectan el rendimiento de un computador y lo que nos interesa en la práctica es que
tantas instrucciones se pudieron ejecutar en cierto periodo de tiempo. Aunque los procesadores
sean muy rápidos también afecta la transmisión de datos, cache y de como sea el proceso
ejecutado.

Entro los criterios encontramos Rmax y Rpeak, siendo Rpeak el máximo teórico que alcanza la
máquina y Rmax el máximo de flops alcanzado al ejecutar el código de LINPACK (1). Un ejemplo de
esto sería el super computador Frontier en USA que alcanza un Rmax de 1,194.00 Pflops y tiene un
Rpeak de 1,679.82 Pflops. Otro ejemplo sería el super computador Fugaku en Japón que tiene
Rmax de 442.01 Pflops y un Rpeak de 537.21 Pflops. Esto de acuerdo con la página oficial de
Top500.

Pregunta 2:

Un ejemplo podría ser.

X = a[0] + 5

X = b[0] + 5

X = a[0] + 5

X = c[0] + 5 (4)

X = a[0] + 5 (5)

Suponemos que hay 2 páginas de cache y que a, b y c están en páginas diferentes. En este caso
primero se ponen las paginas A y B. llegamos al paso 4, Con FIFO reemplazamos A por C y en 5
volvemos a querer usar A pero hay un miss, particular un Conflict miss, pues se sacó información
de la cache lo que causó el miss, sin embargo había una mejor forma de sacar cosas de cache que
habría evitado el conflicto, por eso es conflicto miss.

Con LRU en el paso 4 habríamos quitado la página B (pues A lo habíamos usado de forma más
reciente) y en 5 no tendríamos una cache miss.

Pregunta 3:

La TLB se encarga de mapear la memoria virtual con la memoria real. Como el computador tiene
muchos lugarse donde guardar memoria, como las caches, registros, ram, disco duro, etc. Se
utiliza una memoria virtual, que simula la memoría de forma simplificada, sin embargo en algún
lado debemos saber hacia donde se mapea esa memoria virtual a real y eso es lo que indica la TLB.
A diferencia de las caches, la TLB no guarda información del programa si no que guarda
información de donde está almacenada la información.

Afecta a la velocidad del programa, pues cada vez que queremos ir a buscar algo a memoria
debemos revisar en la TLB cual es el lugar real de memoria y por ende tiene un costo utilizarla que
afecta la velocidad del programa.

Pregunta 4:

El false sharing se da cuando tenemos que núcleos distintos a datos que están cercanos en
memoria (no son el mismo dato). El problema es que hay que traspasar esta información y por lo
mismo se puede perder tiempo en tener actualizadas las caches, aunque no haya una race
condition como tal. Eso hace que se pierda bastante eficiencia.

Se puede reducir bastante como se muestra en el libro cuando por ejemplo solo se hacen estas
actualizaciones al terminar un loop, así se evita tener que compartir memoria innecesesaria a
mitad de un proceso.

Pregunta 5:

Afecta en cuantos misses podemos tener y por lo mismo que tanto vamos a tener que refrescar
memoria. Un stride es un intervalo de acceso a datos, por ejemplo un stride pequeño hará que
tengamos acceso de elementos cercanos en memoria. Como la cache se actualiza por cachelines,
tendremo que cuando vamos a buscar un dato, también se traerá cierta cantidad de datos vecinos,
por eso la localidad espacial ayuda mucho a la hora de tener eficiencia a nivel de cache. Un stride
grande hará que excedamos los datos que se traen en una cache line y por lo mismo tendremos
más misses.

Pregunta 6:
Bibliografía:

1. https://www.top500.org/project/top500_description/

You might also like