Många automatiska programparallaliseringssystem har föreslagits under de senaste årtiondena, men de flesta av dem är dedikerade till käll-till-källa transformationer. Detta dokument visar att parallellisering körbara program är genomförbart, även om de kräver komplexa omvandlingar, och i själva verket frikopplar parallellisering från sammanställning, till exempel för sluten källkod eller äldre programvara, där binär kod är den enda tillgängliga representationen. Vi föreslår en automatisk parallellizer, som kan utföra avancerad parallellisering på binär kod. Den tolkar först den binära koden och extraherar information på hög nivå. Från denna information genereras ett C-program. Detta program fångar endast en delmängd av programmet semantik, nämligen loopar och minnesåtkomster. Detta C-program parallelliseras sedan med hjälp av befintliga, state-of-the-art parallellizers, inklusive avancerade polyhedral parallellizers. De ursprungliga programsemantikerna återinjiceras sedan, och de omvandlade parallella loopbona kompileras om av en standard C-kompilator. Vi visar på PolyBench benchmark svit att vårt system framgångsrikt upptäcker och parallelliserar nästan alla loop bon från den binära koden, med hjälp av en nyligen polyhedral loop parallellizer som ett gränssnitt. Dokumentet avslutas med att utarbeta en strategi för att parallellisera mer komplexa program, såsom de som innehåller icke-linjär åtkomst till minne, och ger några exempel fallstudier.
Pradelle m.fl. REF föreslog en automatisk statisk parallellizer för binär kod som extraherar information på hög nivå genom att tolka den binära koden.
Polyhedral parallelization of binary code
{'venue': 'TACO', 'journal': None, 'mag_field_of_study': ['Computer Science']}