Het gebruik van OpenCL in Ansel vereist dat jouw pc is uitgerust met een geschikte grafische kaart en dat deze over de vereiste bibliotheken beschikt. De meeste moderne grafische kaarten van NVIDIA en AMD worden geleverd met volledige OpenCL-ondersteuning. De OpenCL-compiler wordt normaal gesproken geleverd als onderdeel van het propriëtaire grafisch stuurprogramma en wordt gebruikt als een dynamische bibliotheek genaamd libOpenCL.so
. Deze bibliotheek moet zich in een map bevinden waar deze kan worden gevonden door de dynamische linker van jouw systeem.
Wanneer Ansel start, zal het eerst proberen libOpenCL.so
te vinden en te laden en, bij succes, controleren of de beschikbare grafische kaart OpenCL-ondersteuning heeft. Er moet voldoende grafisch geheugen (1GB+) beschikbaar zijn om Ansel te laten profiteren van de GPU. Als die controle slaagt, probeert Ansel zijn OpenCL-omgeving in te stellen: een verwerkingscontext moet worden geïnitialiseerd, een berekeningspijplijn moet worden gestart, OpenCL-broncodebestanden (extensie is .cl
) moeten worden gelezen en gecompileerd en de meegeleverde routines (OpenCL-kernels) moeten voorbereid zijn voor de modules van Ansel. Als dat allemaal met succes is voltooid, is de voorbereiding voltooid.
By default, OpenCL support is activated in Ansel if all the above steps were successful. If you want to de-activate it you can do so in Preferences > Processing > CPU, GPU, Memory. This configuration parameter is grayed out if the OpenCL initialization failed.
You can switch OpenCL support off and on at any time without requiring a restart. Depending on the type of modules you are using, you will notice the effect as a general speed-up during interactive work and export. Most modules in Ansel can take advantage of OpenCL but not all modules are demanding enough to make a noticeable difference. In order to feel a real difference, use modules like diffuse or sharpen, and denoise (profiled).
Als je geïnteresseerd bent in profileringsstatistieken, kan je Ansel starten met de opdrachtregelparameters -d opencl -d perf
. Na elke run van de pixelpijp krijgt je details te zien van de verwerkingstijd voor elke module plus een nog fijnmaziger profiel voor alle gebruikte OpenCL-kernels.
Apart from the speed-up you should not see any difference in the results between CPU and GPU processing. Except for some rounding errors, the results are designed to be identical. If, for some reason, Ansel fails to properly finish a GPU calculation, it will normally detect the failure and automatically (and transparently) fall back to CPU processing.