The number of event handles is a limited resource of your OpenCL driver. opencl_number_event_handles Event handles are used so that darktable can monitor the success/failure of kernels and profiling info even if the pixelpipe is executed asynchronously. If in doubt, leave it at its default of FALSE. Problems have been reported with some older AMD/ATI cards, like the HD57xx, which can produce garbled output if this parameter is set to TRUE. darktable will then interrupt after each module so that you can more easily isolate the problem. If you experience OpenCL errors like failing kernels, set the parameter to FALSE. For optimum latency set this to TRUE, so that darktable runs the pixelpipe asynchronously and tries to use as few interrupts as possible. opencl_async_pixelpipe This flag controls how often darktable blocks the OpenCL pixelpipe to get a status on success/failure of the kernels that have been run. However, if you want to fiddle around a bit by yourself and try to optimize things further, here is a description of the relevant configuration parameters. Short-term stalls will not have a noticeable effect on the total time of an export.ĭarktable comes with default settings that should deliver a decent GPU performance on most systems. On the other hand darktable’s performance during file exports is more or less only governed by the speed of our algorithms and the horse-power of your GPU. However, even short-term stalls of the pixelpipe can easily become a bottleneck. These can be processed quickly by a fast GPU. This is especially important for the small image buffers we need to handle during interactive work. Any interrupts or a stalled data flow will add to the total processing time.
To allow for fast pixelpipe processing with OpenCL it is essential that we keep the GPU busy. Please note that the timings given for each individual module are unreliable when running the OpenCL pixelpipe asynchronously (see opencl_async_pixelpipe below). The most reliable value is the total time spent the in pixelpipe. – you will see the total time spent in the pixelpipe and the time spent in each of the OpenCL kernels. In order to obtain profiling information you need to start darktable from a terminal with darktable -d opencl -d perf.Īfter each reprocessing of the pixelpipe – caused by module parameter changes, zooming, panning, etc. For a comfortable workflow it is essential to keep latency low. how long it takes to reprocess the pixelpipe). Performance in this context mostly means the latency of darktable during interactive work (i.e.
There are a number of configuration parameters in $HOME/.config/darktable/darktablerc that can help to finetune your system’s OpenCL performance.