Abstract-Data-parallell programmeringsspråk är en viktig komponent i dagens parallella datorlandskap. Bland dessa finns domänspecifika språk som skuggspråk i grafik (HLSL, GLSL, RenderMan, etc.) och allmänna språk som CUDA eller OpenCL. Nuvarande implementationer av dessa språk på processorer förlitar sig enbart på multi-threading för att genomföra parallellism och ignorera den ytterligare intra-core parallellism som tillhandahålls av SIMD instruktion uppsättning av dessa processorer (som Intel s SSE och den kommande AVX eller Larrabee instruktionsset). I detta dokument diskuterar vi flera aspekter av att implementera dataparallellspråk på maskiner med SIMD instruktionsset. Vårt huvudsakliga bidrag är en språk- och plattformsoberoende kodomvandling som utför hela funktionen vektorisering på låg nivå mellanliggande kod som ges av en kontrollflödeskurva i SSA-form. Vi utvärderar vår teknik i två scenarier: Först införlivas i en kompilator för ett domänspecifikt språk som används i realtid ray spårning. För det andra, i en fristående OpenCL-förare. Vi observerar genomsnittliga upphastighetsfaktorer på 3,9 för strålspåraren och faktorer mellan 0,6 och 5.2 för olika OpenCL-kärnor.
Tekniker för att utföra hela funktionen vektorisering diskuteras i REF.
Whole-function vectorization
{'venue': 'International Symposium on Code Generation and Optimization (CGO 2011)', 'journal': 'International Symposium on Code Generation and Optimization (CGO 2011)', 'mag_field_of_study': ['Computer Science']}