Abstract-Regioner av häckade slingor är ett vanligt inslag i High Performance Computing (HPC) koder. I delade minnesprogrammeringsmodeller, såsom OpenMP, är dessa strukturer den vanligaste källan till parallellism. Parallellisera dessa strukturer kräver att programmerarna fattar ett statiskt beslut om hur parallellism ska tillämpas. Beroende på problemets parametrar och kodens karaktär kan dock statiska beslut om vilka slingor som ska parallelliseras inte vara optimala, särskilt som de inte gör det möjligt att utnyttja någon av körtidens egenskaper vid utförandet. Ändringar av iterationerna i det kretslopp som väljs ut för parallellisering kan begränsa den mängd processorer som kan användas. Vi har utvecklat ett system som gör det möjligt för en kod att göra ett dynamiskt val, i körtid, av vad parallellism tillämpas på häckade slingor. Systemet fungerar med hjälp av en källa till källkodskompilator, som vi har skapat, för att utföra omvandlingar till användarens kod automatiskt, genom ett direktivbaserat tillvägagångssätt (liknande OpenMP). Detta tillvägagångssätt kräver att programmeraren specificerar hur looparna i regionen kan parallelliseras och vår runtime bibliotek är sedan ansvarig för att fatta besluten dynamiskt under genomförandet av koden. Vår metod för att tillhandahålla dynamiska beslut om vilka slingor som ska parallelliseras betydligt överträffar standardmetoderna för att uppnå detta genom OpenMP (med hjälp av klausuler) och ytterligare optimeringar var möjliga med vårt system när det gäller simuleringar där antalet iterationer av slingorna ändras under programmets eller slingornas körtid inte är perfekt förankrade.
I REF föreslår författarna ett system som gör det möjligt för en kod att i körtid göra ett dynamiskt val av vilken parallellism som tillämpas på häckade slingor.
Dynamic Loop Parallelisation
{'venue': 'ArXiv', 'journal': 'ArXiv', 'mag_field_of_study': ['Computer Science']}