Programoptimering för högparallellsystem har historiskt sett ansetts vara en konst, med experter som gör mycket av performance tuning för hand. Med införandet av billiga, enchips, massivt parallella plattformar, kommer fler utvecklare att skapa mycket parallella applikationer för dessa plattformar, som saknar den stora erfarenhet och kunskap som krävs för att maximera deras prestanda. Detta skapar ett behov av mer strukturerade optimeringsmetoder med metoder för att uppskatta deras prestandaeffekter. Dessutom måste dessa metoder vara begripliga för de flesta programmerare. Detta dokument visar komplexiteten i optimeringen av tillämpningar för ett sådant system och en relativt enkel metod för att minska arbetsbelastningen i optimeringsprocessen. Detta arbete är baserat på ett sådant högparallellsystem, GeForce 8800 GTX med hjälp av CUDA. Dess flexibla tilldelning av resurser till trådar gör det möjligt att extrahera prestanda från en rad applikationer med varierande resursbehov, men ställer nya krav på utvecklare som försöker maximera en applikations prestanda. Vi visar hur optimeringar interagerar med arkitekturen på komplexa sätt, initialt föranleder en inspektion av hela konfigurationsutrymmet för att hitta den optimala konfigurationen. Även för ett till synes enkelt program som matris multiplikation, kan den optimala konfigurationen vara oväntad. Vi presenterar sedan mätvärden som härleds från statisk kod som fångar de första ordningsfaktorerna för prestanda. Vi visar hur dessa mått kan användas för att beskära många optimeringskonfigurationer, ner till dem som ligger på en Pareto-optimal kurva. Detta minskar optimeringsutrymmet med så mycket som 98% och finner fortfarande den optimala konfigurationen för var och en av de studerade applikationerna.
Det finns mätvärden för att beskära det optimeringsutrymme som gynnar GPU-applikationer REF.
Program optimization space pruning for a multithreaded gpu
{'venue': "CGO '08", 'journal': None, 'mag_field_of_study': ['Computer Science']}