amd/ati apparaten

Hoewel NVIDIA-apparaten en de meeste moderne AMD/ATI-apparaten vaak zonder verdere instellingen goed werken, is er meer te doen voor oudere AMD/ATI-grafische kaarten, namelijk die van vóór de HD7xxx-serie. Dit begint met het feit dat die apparaten slechts een deel van hun totale GPU-geheugen zullen rapporteren aan darktable. Voor een apparaat van 1 GB is dit doorgaans slechts 512 MB, een waarde die darktable in zijn standaardconfiguratie als onvoldoende zal weigeren. Het apparaat zal dan ook niet worden gebruikt.

Op internet kan je een tip vinden om de omgevingsvariabele GPU_MAX_HEAP_SIZE in te stellen op 100 als dit gebeurt. Dit zorgt er inderdaad voor dat de AMD/ATI-driver het volledig geïnstalleerde geheugen aan darktable rapporteert. Er is echter een probleem. Op veel (de meeste?) kaarten zal dit ervoor zorgen dat buffers op jouw computer (host) worden toegewezen en niet op de videokaart! In dit geval moeten alle geheugentoegangen via de langzame PCIe-bus gaan. Dit kost je een factor 10x of meer in prestatie en maakt OpenCL onbruikbaar voor jou, vooral bij het exporteren van bestanden.

Een andere omgevingsvariabele die het gedrag van het stuurprogramma verandert, is GPU_MAX_ALLOC_PERCENT. Je kan dit instellen op 100 om geheugentoewijzingen tot 1 GB op uw AMD/ATI-kaart mogelijk te maken. Het probleem is dat dit ertoe leidt dat darktable vroeg of laat crasht.

Ons advies is dan ook om deze instellingen ongewijzigd te laten. Vaak wordt jouw kaart herkend met 512 MB geheugen en een maximale toewijzingsgrootte van 128 MB. Er zijn drie configuratieparameters die je in $HOME/.config/darktable/darktablerc kan instellen om de zaken aan de gang te krijgen. Hier zijn de details:

opencl_memory_requirement
Stel deze parameter in op 500 zodat darktable jouw 512 MB grafische geheugen accepteert als voldoende geheugen.
opencl_memory_headroom
Deze parameter bepaalt hoeveel grafisch geheugen (van wat door jouw kaart is gerapporteerd) darktable onaangeroerd moet laten voor gebruik door stuurprogramma’s en beeldschermen. Aangezien we voor AMD/ATI-apparaten toch maar de helft van het beschikbare RAM-geheugen kunnen krijgen, is het veilig om dit op nul te zetten, zodat alle 512 MB door darktable kan worden gebruikt.
opencl_avoid_atomics
Atomaire bewerkingen in OpenCL zijn een speciale methode voor gegevenssynchronisatie. Ze worden slechts in een paar kernels gebruikt. Helaas zijn sommige (de meeste?) AMD/ATI-apparaten extreem traag in het verwerken van atomaire gegevens. Het is beter om de betrokken modules op de CPU te verwerken in plaats van een ultra-langzaam GPU-codepad te accepteren. Stel deze parameter daarom in op TRUE als je een trage verwerking ervaart van modules zoals schaduwen en hooglichten, [monochroom](.. /../module-reference/processing-modules/monochrome.md), lokaal contrast, of [globale toonmap (verouderd)] (../../module-reference/processing-modules/global-tonemap) of als jou systeem met tussenpozen vastloopt.

Deze aanbevelingen zijn niet van toepassing op de recentere Radeon HD7xxx-serie met GCN-architectuur. Behalve dat ze erg snel zijn op het gebied van GPU-computing, zijn ze normaal gesproken bijna zonder bijkomende instellingen (out-of-the-box), hoewel je zou kunnen overwegen om enkele van de prestatie-optimalisatie-opties te proberen die in de volgende sectie worden beschreven.

translations