Abstract:
|
Amb la proliferació de les arquitectures multi-core i many-core, s’han emprat molts esforços en l’especificació i la
implementació de nous models de programació, que facilitessin als desenvolupadors de programari la capacitat
d’explotació de paral·lelisme en aquestes noves arquitectures; és a a dir, la capacitat que diversos processadors
executin parts d’un programa simultàniament per tal de resoldre un determinat problema de còmput amb menys
temps.
Un d’aquests models de programació en paral·lel és l’OmpSs1
. Aquest model de programació es basa en la
definició de tasques de còmput, fragments de programa que poden executar-se en paral·lel a d’altres, i les seves
respectives dependències de dades en forma de dades d’entrada i dades de sortida o generades. D’aquesta
manera, las diverses tasques es poden anar executant fora d’ordre, sempre i quan les seves dependències de
dades estiguin resoltes.
Una problemàtica molt habitual en aquests models de programació cau en el fet que quan les tasques són
molt fines, la planificació i gestió de tasques consumeix una quantitat de recursos i de temps d’execució que
penalitza el rendiment final de l’aplicació. Com a solució a aquest problema, es va idear la creació de Picos,
una implementació via maquinari del motor d’execució del model de programació OmpSs.
Tal i com s’explica en els articles [1, 2], es pot veure Picos com un co-processador que s’executa en una
FPGA, que rep informació sobre la creació de noves tasques, amb les seves dependències i de la finalització
d’aquestes. Amb aquesta informació va planificant i organitzant les tasques pendents d’execució i indica quina
o quines tasques es troben ja preparades per a la seva execució. A la figura 1.1 a la pàgina següent es pot
veure un exemple de la seva estructura hardware.
Un dels seus components és la memòria de dependències o DM. Aquesta memòria registra les adreces de
dependències; és a dir, adreces de memòria que són generades per una tasca i que són consultades per altres
tasques. Aquesta memòria està actualment implementada con una taula de dispersió o hash table 8-associativa,
i presenta els següents problemes:
• No utilització de tota la capacitat de memòria disponible. Degut a la col·lisions provocades per a la funció
de dispersió o hash.
• Temps d’espera excessius degut a stalls. Això està provocat pel problema anterior ja que quan una tasca no es pot inserir en el sistema de la DM degut a una col·lisió, s’ha d’aturar Picos i s’ha d’esperar a que es
buidi.
Per mitigar aquests problemes, es pretén la substitució de la DM actual per un arbre binari de cerca autobalancejat.
D’a- questa manera s’empraria sempre tota la capacitat de memòria i es reduirien el nombre de
cicles perduts per les aturades del sistema.
Així doncs, l’objectiu d’aquest projecte que se us presenta consisteix en la implementació d’un arbre binari
de cerca auto- balancejat en un llenguatge de descripció de maquinari per a re-emplaçar la memòria de
dependències de Picos, un runtime per maquinari del model de programació OmpSs desenvolupat entre el Barcelona
Supercomputing Center i el Departament d’Arquitectura de Computadors de la Universitat Politècnica de
Barcelona. |