Particle Simulation using Asynchronous Compute : A Study of The Hardware

Background. With the introduction of the compute shader, followed by the application programming interface (API) DirectX 12, the modern GPU is now going through a transformation. Previously the GPU was used as a massive computational tool for running a single task at unparalleled speed. The compute...

Full description

Bibliographic Details
Main Author: Enarsson, Kim
Format: Others
Language:English
Published: Blekinge Tekniska Högskola, Institutionen för datavetenskap 2020
Subjects:
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:bth-19684
Description
Summary:Background. With the introduction of the compute shader, followed by the application programming interface (API) DirectX 12, the modern GPU is now going through a transformation. Previously the GPU was used as a massive computational tool for running a single task at unparalleled speed. The compute shader made it possible to run CPU like programs on the GPU, DirectX 12 takes this even further by introducing a multi-engine architecture. Multi-engine architecture unlocks the possibility of running the compute shader alongside the regular graphical stages, this concept is called asynchronous compute. Objectives. This thesis aims to investigate if asynchronous compute can be used to increase the performance of particle simulations. The key metrics being studied are total frame time, rendered frames per second, and overlap time. The frst two are used to determine if asynchronous compute improves performance or not, while the last is used to determine if the particle simulation is running asynchronous compute or not.Methods. For this thesis, the particle simulation used is the N-body particle simulation.The N-body particle simulation is implemented using a compute shader and is part of a larger DirectX 12 framework. One application is implemented that run two different execution models, one is the standard sequential execution model and one is the asynchronous compute model. The main difference between the two execution models is that the sequential execution model will be using only one command queue, this being a 3D command queue. The asynchronous compute model will be running a separate compute command queue alongside the 3D command queue. The performance metrics being studied are all collected using a custom-built GPU profiler. Results. The results indicate that it is possible to increase the performance of particle simulations using asynchronous compute. The registered performance gain reaches as high as 34% on hardware that supports asynchronous compute while hardware that according to NVIDIA does not support asynchronous compute registered performance gains up towards 11%. In terms of overlap time between the compute workload and the graphical workload, the AMD GPU showed an overlap time that matched the frame time. However, NVIDIA GPUs did not show the expected overlap time. Conclusions. It can be determined that asynchronous compute provide benefits when compared to the sequential execution model, it can be used to increase the performance of particle simulations. However, since the research in this thesis only made use of a single particle simulation, more work needs to be done, for example, work to test if the performance gain can be improved even further using different methods like, workload pairing or utilizing multiple GPUs, however that kind of work requires the use of a larger-scale application that consists of multiple different tasks other than just a single particle simulation. === Bakgrund. I och med Introduktionen av compute shadern, tätt följd av DirectX12, så genomgår den moderna GPUn en förvandling. Tidigare användes GPUn som ett massivt uträkningsverktyg ämnat att utföra en enda uppgift med en enastående hastighet. Compute shadern gjorde det möjligt at köra CPU liknande program på GPUn, DirectX 12 tar detta ett steg längre genom att introducera en multi-engine arkitektur. Denna arkitektur låser upp möjligheten att köra compute shadern samtidigt som de vanliga grafiska shader stadigerna, detta konceptet kallas asynchronous compute.Syfte. Syftet med denna avhandling är att undersöka om asynchronous compute kan användas för att öka prestandan på en partikel simulering. Den viktigaste data som kommer studeras är den totala frame tiden, antalet renderade frames varje sekund och överlapp tiden. Den totala frame tiden och antalet renderade frames varje sekund används för att bestämma om asynchronous compute faktiskt ökar prestandan eller inte, medan överlapp tiden används för att bestämma om partikel simuleringen kör asynchronous compute eller inte.Metod. Partikel simuleringen som används i denna avhandling är en N-body partikel simulering. N-body partikel simuleringen är implementerad i en compute shader och är en del av en större DirectX 12 applikation. En applikation implementeras som kör två olika exekverings modeller, den ena är den vanliga sekventiella exekverings modellen och den andra är asynchronous compute modellen. Den primära skillnaden mellan exekverings modellerna är att den sekventiella exekverings modellen bara använder sig av en kommando kö, vilken är en 3D kommando kö. Asynchronous compute modellen kommer använda sig av en separat compute kommando kö tillsammans med 3D kommando kön. Den metriska datan samlas in med hjälp av enegen byggd GPU profilerare.Resultat. Resultatet indikerar att det är möjligt att öka prestandan hos en partikelsimulering som använder sig av asynchronous compute. Den registrerade prestandaökningen når så högt som till 34% på hårdvara som stödjer asynchronous compute, medan hårdvara som inte stödjer asynchronous compute registrerade en prestandaökning upp till 11%. När det kommer till överlapp tiden mellan compute delen och den grafiska delen så visar GPUn från AMD en överlapp tid som matchar frame tiden. När det kommer till GPUerna från NVIDIA så visade dessa inte en förväntad överlapp tid.Slutsatser. Det kan fastställas att asynchronous compute har vissa fördelar jämfört med den sekventiella exekverings modellen. Asynchronous compute kan användas för att öka prestanda hos partikel simuleringar, men eftersom undersökningen i denna avhandling bara använder en enda partikel simulering så krävs ännu mera forskning. Exempelvis forskning som undersöker om prestanda ökningen kan bli ännu bättre, genom att applicera olika metoder som workload pairing och användingen av fera GPUer, detta krväver också att en större application för testing används, som består av fera olika typer av simuleringar och inte bara en enda partikel simuleing.