Syftet med detta dokument är att utvärdera prestanda för nya CUDA-mekanismer-enhetlig minne och dynamisk parallellism för verkliga parallella applikationer jämfört med standard CUDA API-versioner. För att få insikt i dessa mekanismers prestanda bestämde vi oss för att genomföra tre applikationer med kontroll- och dataflöde som är typiskt för SPMD, geometrisk SPMD och delnings-och-konvergenssystem, som sedan användes för tester och experiment. Särskilt testade applikationer inkluderar verifiering av Goldbachs gissningar, 2D värmeöverföringssimulering och adaptiv numerisk integration. Vi experimenterade med olika sätt på vilka dynamisk parallellism kan sättas in i ett befintligt genomförande och optimeras ytterligare. Därefter jämförde vi den bästa dynamiska parallellismen och enhetliga minnesversioner med respektive standard API-motsvarighet. Det visade sig att användningen av dynamisk parallellism resulterade i förbättrad prestanda för värmesimulering, bättre än statisk men sämre än en iterativ version för numerisk integration och slutligen sämre resultat för Golbachs gissningsverifiering. I de flesta fall resulterar ett enhetligt minne i minskad prestanda. Å andra sidan kan båda mekanismerna bidra till enklare och mer läsbara koder. För dynamisk parallellism gäller den algoritmer där den kan tillämpas naturligt. Ett enhetligt minne gör det i allmänhet lättare för en programmerare att gå in i programmeringsparadigmet för CUDA eftersom det liknar det traditionella minnesfördelnings-/användningsmönstret.
I papper REF undersökte vi prestanda för Unified Memory-versioner jämfört med standardminnesimplementeringar med cudaMalloc() för tre applikationer med kontroll- och dataflöde karakteristiskt för SPMD, geometriska SPMD och siffer-och-konquer paradigm.
Performance evaluation of unified memory and dynamic parallelism for selected parallel CUDA applications
{'venue': 'The Journal of Supercomputing', 'journal': 'The Journal of Supercomputing', 'mag_field_of_study': ['Computer Science']}