Ok - first of all - open cl is transparent - if it is available, it will be used. Look here :
https://opencv.org/platforms/
"OpenCL accelerated branches transparently added to the original API functions and are used automatically when possible/sensible..."
So open cl for dnn will be used if available.
On the other hand, cuda for dnn ist NOT supported.
https://opencv.org/platforms/cuda.html
My personal experience/impression is that evaluating model on cuda(with the native dnn it was trained on) is way more performant than evluating the model with open cv on top of open cl. But please measure by yourself!
Here some performance measurements for opencv https://github.com/opencv/opencv/wiki...