Finally There Are Output Variables, Defining Data Being Passed Onto the Next Stages
Projekt Resumé I 2016 udgav The Khronos Group Vulkan APIen, med det formål at øge hastigheden på grafikapplikationer, der er CPU-begrænsede. En grafikapplikation er CPU-begrænset, som er når GPUen udfører instrukser hurtigere end CPUen kan sende dem til GPUen. I mod- sætning til tidligere grafik-APIer, så har Vulkan et lavere abstraktionsniveau, og ifølge vores tidligere forskning gør dette APIen svær at anvende. Vi præsenterer PapaGo APIen, der forsøger at øge Vulkans abstraktionsniveau, mens den anvender førnævnte API som sin backend. Vores mål er at skabe en API, hvis abstrak- tionsniveau ligner OpenGLs. Samtidig ønsker vi dog at bibeholde Vulkans statelessness, dens eksplicitte kontrol af GPU-ressourcer samt dens GPU command buffers. Sidstnævnte anvendes til at sende kommandoer til GPUen, og de er centrale i at øge hastigheden af CPU-kode, da de kan genbruges over flere frames og kan optages til i parallel. Vi evaluerer PapaGo’s brugbarhed, hvormed vi introducerer en ny opgavebaseret API- evalueringsmetode baseret på en forgrening af Discount Evaluation. Vores evaluering viser, at vores deltagere, der er mere vante til at programmere med OpenGL eller lignende, hurtigt indpassede sig med vores API. Vi oplevede også at vores deltagere var hurtige til at udføre opgaverne givet til dem. Et performance benchmark blev også udført på PapaGo ved brug af en testapplika- tion. Testapplikationen blev kørt på to forskellige systemer, hvor den første indeholder en AMD Sapphire Radeon R9 280 GPU, imens den anden har en mere kraftfuld NVIDIA GeForce GTX 1060 GPU. I det CPU-begrænsede tilfælde af testen, blev hastigheden af ap- plikationen øget på begge systemer når kommandoer optages i parallel.
[Show full text]