GPU-programmeren
Een programma dat duizenden keren achter elkaar zeer kleine kernels start is traag. Welke verbetermethode is het meest passend?
- AMeerdere kleine kernels samenvoegen (fuseren) om het aantal starts te verminderen
- BTussen de kernelstarts wachttijd inlassen
- CHet aantal threads per block op 1 zetten
Antwoord en toelichting tonen
Antwoord: A. Meerdere kleine kernels samenvoegen (fuseren) om het aantal starts te verminderen
Het starten van een kernel kost een vaste tijd van enkele microseconden voor verwerking aan de CPU-zijde en voorbereiding van de GPU. Als de inhoud van de kernel korter is dan dat, valt vooral de moeite van het starten op. Als meerdere bewerkingen in één kernel worden samengevoegd, neemt het aantal starts af en vervalt ook de moeite om tussenresultaten naar het geheugen te schrijven en weer te lezen. Ook worden mechanismen gebruikt die een reeks starts samen vastleggen en in één keer versturen (zoals CUDA Graphs).