Korzystanie z OpenCL w Ansel wymaga, aby twój komputer był wyposażony w odpowiednią kartę graficzną i wymagane biblioteki. Większość nowoczesnych kart graficznych firm NVIDIA i AMD ma pełną obsługę OpenCL. Kompilator OpenCL jest zwykle dostarczany jako część własnościowego sterownika graficznego i jest używany jako biblioteka dynamiczna o nazwie libOpenCL.so
. Ta biblioteka musi znajdować się w folderze, w którym może być znaleziona przez dynamiczny linker twojego systemu.
Po uruchomieniu Ansel najpierw spróbuje znaleźć i załadować libOpenCL.so
, a jeśli się powiedzie, sprawdzi, czy dostępna karta graficzna obsługuje OpenCL. Aby Ansel mógł korzystać z GPU, musi być dostępna wystarczająca ilość pamięci graficznej (1 GB+). Jeśli to sprawdzenie zakończy się pomyślnie, Ansel spróbuje skonfigurować swoje środowisko OpenCL: należy zainicjować kontekst przetwarzania, uruchomić kolejkę obliczeniową, pliki kodu źródłowego OpenCL (rozszerzenie to .cl
) muszą zostać odczytane i skompilowane oraz dołączone procedury (jądra OpenCL) muszą być przygotowane na moduły Ansel. Jeśli to wszystko zakończy się pomyślnie, przygotowania są zakończone.
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).
Jeśli jesteś zainteresowany statystykami profilowania, możesz uruchomić Ansel z parametrami wiersza poleceń -d opencl -d perf
. Po każdym uruchomieniu kolejki zobaczysz szczegóły czasu przetwarzania dla każdego modułu oraz jeszcze bardziej szczegółowy profil dla wszystkich używanych jąder OpenCL.
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.