Vi beskriver ROSE, en C++ infrastruktur för käll-till-källa översättning, som ger ett gränssnitt för programmerare att enkelt skriva sina egna översättare för att optimera användardefinierade högnivå abstraktioner. Med hjälp av semantiken från dessa högnivåabstractioner visar vi automatisk parallellisering av slingor som itererar över användardefinierade behållare som har gränssnitt som liknar listorna, vektorerna och uppsättningarna i standardmallbiblioteket (STL). Parallelliseringen förverkligas i två faser. För det första infogar vi OpenMP-direktiv i ett serieprogram som drivs av erkännandet av de högnivåuttag, containrar, som är trådsäkra. Sedan översätter vi OpenMP-direktiven till biblioteksrutiner som uttryckligen skapar och hanterar parallellism. Genom att tillhandahålla ett gränssnitt för programmeraren att klassificera semantik av deras abstraktioner, kan vi automatiskt parallellisera operationer på behållare, såsom länkade listor, utan att tillgripa komplexa loopberoende analystekniker. Vår strategi är förenlig med allmänna mål inom teleskopspråk.
I REF visas automatisk parallellisering av slingor som itererar över användardefinierade behållare som har gränssnitt som liknar listorna, vektorerna och uppsättningarna i C++ STL.