Investigating the Performance Scalability of the Vortex GPU
Abstract
Programvaresimulert datamaskinarkitektur-evaluering er treigt, spesielt for store fleir-kjerne arkitekturar. Ved å bruke FPGA-akselerert evaluering kan ein minske avstanden mellom simulering og prototyping, slik at ein kan oppnå mykje meir effektiv evaluering enn med det programvaresimulerte alternativet. For å kunne evaluere fleire arkitekturar på ein god måte, trenger ein ein kjent referansearkitektur, ein som ein veit korleis den kjem til å oppføre seg. Vortex [1], ein RISC-V basert programvare GPU såg innleiingsvis ut som ein god referansearkitektur for vidare GPU-evaluering.
I denne oppgåva skal vi fortsette på arbeidet gjort i mi prosjektoppgåve [2] og ta ein nærare kikk på Vortex. Vi skal gjennomføre ei nøye evaluering av Vortex sine referanseprogram for å finne ut korleis ein kan skvise ut betre yting frå Vortex. Vi vil prøve å rekonfigurere Vortex til å gi oss betre yting og ta ein nærare kikk på kvifor enkelte av referanseprogramma ser ut til å ha problem med å skalere med arkitekturen.
Vi oppdaga at Vortex sin skedulerer av og til har problem med å dele arbeidet sitt mellom dei ulike kjernane. Dette problemet ser ut til å vere i alle fall delvis forårsaka av at storleiken på utrekningskjernane er satt til ein. Vi viser at å justere storleiken på desse utrekningskjernane gir ei klar auke i ytinga. Dette og andre problem som blei oppdaga undervegs tydar på at Vortex kanskje ikkje er den mest eigna referanse-GPUen for vidare datamaskinarkitektur-evaluering. Software simulated computer architecture evaluation is slow, especially for large multi-core architectures. Using FPGA-accelerated evaluation one can bridge the gap between simulation and creating a prototype, enabling significantly more efficient evaluation than the software simulated alternative. To be able to evaluate multiple architectures well, one requires a good baseline, an example that performs well. Vortex [1], a RISC-V based software GPU initially seemed like a good candidate for a baseline for GPU evaluation.
In this thesis we will continue upon the work done in my project thesis [2] and take a closer look at Vortex. We will perform a thorough analysis of Vortex's benchmarks to figure out how to squeeze the most power out of it. We will attempt to reconfigure Vortex to give us better performance and take a closer look at why some benchmarks seem to have problems with performance scaling.
We found that Vortex's scheduler is at times unable to properly divide its work among the separate cores. This issue seems to be at least partially caused by the limitation of the compute kernel size to one. Adjusting the kernel size is shown to give a substantial boost in performance for one of the benchmarks. This and other issues that were discovered means that at the time of writing Vortex is perhaps not the best candidate for a baseline GPU.