Generating renderers
[article]
Arsène Pérard-Gayot, Universität Des Saarlandes
2021
Most production renderers developed for the lm industry are huge pieces of software that are able to render extremely complex scenes. Unfortunately, they are implemented using the currently available programming models that are not well suited to modern computing hardware like CPUs with vector units or GPUs. Thus, they have to deal with the added complexity of expressing parallelism and using hardware features in those models. Since compilers cannot alone optimize and generate e cient programs
more »
... or any type of hardware, because of the large optimization spaces and the complexity of the underlying compiler problems, programmers have to rely on compiler-speci c hardware intrinsics or write non-portable code. The consequence of these limitations is that programmers resort to writing the same code twice when they need to port their algorithm on a di erent architecture, and that the code itself becomes di cult to maintain, as algorithmic details are buried under hardware details. Thankfully, there are solutions to this problem, taking the form of Domain-Speci c Languages. As their name suggests, these languages are tailored for one domain, and compilers can therefore use domain-speci c knowledge to optimize algorithms and choose the best execution policy for a given target hardware. In this thesis, we opt for another way of encoding domainspeci c knowledge: We implement a generic, high-level, and declarative rendering and traversal library in a functional language, and later re ne it for a target machine by providing partial evaluation annotations. The partial evaluator then specializes the entire renderer according to the available knowledge of the scene: Shaders are specialized when their inputs are known, and in general, all redundant computations are eliminated. Our results show that the generated renderers are faster and more portable than renderers written with state-of-the-art competing libraries, and that in comparison, our rendering library requires less implementation e ort. La plupart des moteurs de rendu développés pour l'industrie du lm sont de gigantesques logiciels qui sont capables de produire des images à partir de scènes très complexes. Malheureusement, ils sont implémentés avec les modèles de programmation courants qui ne sont pas vraiment adaptés pour programmer des ordinateurs modernes qui possèdent des CPUs avec des instructions vectorielles ou des GPUs. En conséquence, ces moteurs de rendu doivent faire face à la di culté d'exprimer du parallélisme et d'utiliser les fonctionalités o ertes par le matériel dans ces modèles. Les compilateurs seuls ne pouvant pas optimizer et générer des programmes e caces pour n'importe quel type de machine-parce que la recherche du programme le plus e cace est di cile et complexe-les programmeurs doivent donc utiliser des fonctions intrinsèques au compilateur, ou de manière générale, écrire du code non portable. La conséquence de cette limitation est que les programmeurs doivent réécrire le même code à chaque fois qu'ils veulent le porter vers une architecture di érente, et que donc la base de code grossit, devient di cile à maintenir et comprendre car les algorithmes sont dissimulés sous une large quantité de détails liés aux aspects matériels de la machine. Heureusement, il y a des solutions à ce problème, sous la forme de languages spécialisés à un domaine. Ces languages sont comme leur nom l'indique spécialisés dans un domaine, dont la connaissance permet aux compilateurs de choisir la meilleure méthode d'exécution sur une machine donnée lors de l'optimisation de programme. Dans cette thèse, on choisit une autre façon d'encoder cette connaissance: On implémente une bibliothèque de rendu et de tracé de rayons générique et déclarative dans un langage fonctionnel, et on la transforme ensuite pour l'exécution sur une machine particulière à l'aide d'annotations pour une évaluation partielle. L'évaluateur partiel spécialise alors le moteur de rendu dans son intégralité, en tenant compte du contenu de la scène: Les "shaders" sont spécialisés lorsque leurs entrées sont connues, et de manière générale, tous les calculs super us sont éliminés. Les résultats montrent que les moteurs de rendu ainsi générés sont plus rapides et portables que ceux écrits avec les bibliothèques proposées dans l'état de l'art, et que, de plus, l'implémentation de cette technique demande moins d'e ort. 8 Conclusion 81 Bibliography 85 Acronyms 95
doi:10.22028/d291-33532
fatcat:7phrxpvkjjfczjhvuxp262ris4