Kortvektor SIMD och DSP instruktioner är populära tillägg till vanliga ISA:er. Dessa tillägg ger utmärkt prestanda och kompakt kod för vissa compute-intensiva applikationer, men de kräver specialiserat kompilatorstöd. För att programmeraren uttryckligen ska kunna begära att en sådan instruktion används tillhandahåller många C-kompilatorer plattformsspecifika inneboende funktioner, vars genomförande hanteras särskilt av kompilatorn. Användningen av sådana inneboende, dock oundvikligen resulterar i icke-portabel kod. I detta dokument utvecklar vi en ny metod för att omrikta en sådan icke-portabel kod, som kartlägger inneboende från en plattform till en annan, och drar nytta av liknande inneboende på målplattformen. Vi använder ett beskrivande språk för att ange signatur och semantik av inneboende och utföra graf-baserade mönster matchning och hög nivå kod transformationer för att härleda optimerade implementationer som utnyttjar målets inneboende, där det är möjligt. Vi demonstrerar effektiviteten i vår nya metodik, implementerad i det GRATIS RIDER-verktyget, genom att automatiskt omrikta riktmärken som härrör från OPENCV-prover och en komplex inbäddad applikation optimerad för att köra på en ARM CORTEX-M4 till en INTEL EDISON modul med SSE4.2 instruktioner. Vi uppnår en hastighetsökning på upp till 3,73 över en vanlig C-baslinje, och i genomsnitt 96,0 % av hastigheten hos manuellt anpassade och optimerade versioner av riktmärkena.
REF:s arbete har utvecklat en ny metod för att omrikta en icke-portabel kod som kan kartlägga de inneboende egenskaperna från en plattform till en annan.
Free Rider: A Tool for Retargeting Platform-Specific Intrinsic Functions
{'venue': "LCTES'15", 'journal': None, 'mag_field_of_study': ['Computer Science']}