I detta arbete utvärderar vi OpenCL som ett programmeringsverktyg för att utveckla prestandaporterbara applikationer för GPGPU. Medan Chronos-gruppen utvecklade OpenCL med programmeringsportabilitet i åtanke, prestanda är inte nödvändigtvis bärbar. OpenCL har krävt prestanda-impacting initieringar som inte finns på andra språk som CUDA. Genom att förstå dessa konsekvenser kan vi förse ett enda bibliotek med anständiga prestationer på en mängd olika plattformar. Vi väljer triangulär lösare (TRSM) och matris multiplikation (GEMM) som representativa nivå 3 BLAS rutiner att genomföra i OpenCL. Vi profilerar TRSM för att få tidsfördelningen av OpenCL-runtime-systemet. Vi tillhandahåller sedan stämda GEMM-kärnor för både NVIDIA Tesla C2050 och ATI Radeon 5870, de senaste GPU som erbjuds av båda företagen. Vi undersöker fördelarna med att använda texturcachen, prestandaförgreningarna av att kopiera data till bilder, avvikelser i OpenCL- och CUDA-kompilatorernas optimeringar och andra problem som påverkar prestandan. Experimentella resultat visar att nästan 50 % av toppprestandan kan uppnås i GEMM på båda GPU:erna i OpenCL. Vi visar också att prestandan hos dessa kärnor inte är mycket portabel. Slutligen föreslår vi användning av automatisk inställning för att bättre utforska dessa kärnors parameterutrymme med hjälp av söksele.
Du och Al. REF, å andra sidan, studerade skillnaderna i OpenCL- och CUDA-kompilatorernas optimering som påverkar den tillhörande GPU-datorprestandan.
From CUDA to OpenCL: Towards a Performance-portable Solution for Multi-platform GPU Programming
{'venue': None, 'journal': None, 'mag_field_of_study': ['Computer Science']}