Abstrakt. Thread-level spekulation (TLS) tillåter potentiellt beroende trådar att spekulativt utföra parallellt, vilket gör det lättare för kompilatorn att extrahera parallella trådar. Den höga kostnaden i samband med obalanserad last, misslyckad spekulation och kommunikation mellan trådarnas värde gör det dock svårt att uppnå önskad prestanda om inte de spekulativa trådarna noga väljs. I detta dokument fokuserar vi på att utvinna parallella trådar från slingor i allmänna tillämpningar eftersom slingor, med sina vanliga strukturer och betydande täckning på exekveringstiden, är idealiska kandidater för att extrahera parallella trådar. Allmänna tillämpningar, dock, innehåller vanligtvis ett stort antal häckade slingor med oförutsägbara parallella prestanda och dynamiskt beteende, vilket gör det svårt att bestämma vilken uppsättning av slingor bör parallelliseras för att förbättra övergripande programprestanda. Vår föreslagna slingurvalsalgoritm tar upp alla dessa svårigheter. Vi har funnit att (i) med hjälp av profileringsinformation, kompilatoranalyser kan uppnå en någorlunda korrekt uppskattning av prestandan vid parallell utförande, och att (ii) olika anrop av en loop kan bete sig annorlunda, och att utnyttja detta dynamiska beteende kan ytterligare förbättra prestanda. Med ett klokt val av loopar, kan vi förbättra den totala programprestandan för SPEC2000 heltalsriktmärken med så mycket som 20%.
Wang m.fl. REF använder omfattande profileringsinformation för att statiskt uppskatta loopprestanda och välja en uppsättning loopar för parallellisering för att maximera den totala programprestandan.
Loop Selection for Thread-Level Speculation
{'venue': 'LCPC', 'journal': None, 'mag_field_of_study': ['Computer Science']}