Log in

View Full Version : How to use filters that require OpenCL without a graphics card


ACKR
28th April 2020, 01:37
I have server with Xeon 1275 v1 processor and whenever i try to filters like dehalo or AA or QTGMC it fail because i don't have opencl drivers installed. anyway to bypass this?

StainlessS
28th April 2020, 01:57
dehalo or AA or QTGMC

That looks like three different questions, with no clues to what is wrong for any of them.
I dont use the first two, but I aint ever had problems using QTGMC without graphics card (or opencl),
you might want to at least state version of QTGMC and what error message is issued,
and also post script.
EDIT: Also reading/searching the docs for graphics card., opencl, or GPU might prove worthwhile.

EDIT:
Looking at QTGMC.3.363s.avsi

(Denoiser == "dfttest") ? noiseWindow.dfttest( Y=true, U=ChromaNoise, V=ChromaNoise, sigma=Sigma*4, tbsize=noiseTD, threads=FftThreads, Dither=DftDither, lsb=lsbd ) : \
(Denoiser == "KNLMeansCL") ? noiseWindow.SMDegrain_KNLMeansCL(Chroma=ChromaNoise, lsb=lsbd, a=2, d=NoiseTR, h=Sigma, device_type="GPU" ) : \

Maybe explore docs for SMDegrain_KNLMeansCL to see what arg to device_type switches it off, maybe removing that "device_type=GPU" will do it.
I presume that one of your settings enables that line, I'm guessin that QTGMC() alone does not have the problem.
as it stands, with certain args, QTGMC auto assumes that you have GPU with OpenCL, [maybe it should not, unless documented as doing so].

Perhaps others can help.

LigH
28th April 2020, 08:01
OpenCL is designed as versatile API. It provides functions which can take advantage of massive parallelization in a GPGPU if available. But the same functions may also be implemented with SIMD parallelization on a CPU, just with lower efficiency due to limited parallelism.

It all depends only on the drivers, whether they provide code for both cases or only for the specific computing hardware they are designed for. It's well possible that if you don't have a GPGPU useful for OpenCL, the graphic drivers may not offer OpenCL as a whole. Intel provides "legacy" CPU-only OpenCL drivers for Core and Xeon 64-bit processors. AMD seems not to support CPU-only OpenCL.

ACKR
28th April 2020, 09:20
OpenCL is designed as versatile API. It provides functions which can take advantage of massive parallelization in a GPGPU if available. But the same functions may also be implemented with SIMD parallelization on a CPU, just with lower efficiency due to limited parallelism.

It all depends only on the drivers, whether they provide code for both cases or only for the specific computing hardware they are designed for. It's well possible that if you don't have a GPGPU useful for OpenCL, the graphic drivers may not offer OpenCL as a whole. Intel provides "legacy" CPU-only OpenCL drivers for Core and Xeon 64-bit processors. AMD seems not to support CPU-only OpenCL.

can i get these drivers? . the exact problem i am having is that it says KNLMeansCL dependency is missing. i am using staxrip to encode

LigH
28th April 2020, 10:55
OpenCL™ Runtime for Intel® Core™ and Intel® Xeon® Processors (https://software.intel.com/en-us/articles/legacy-opencl-drivers#latest_CPU_runtime)

Deprecated. Check release notes for supported hardware. May require registration or similar, not sure.

real.finder
28th April 2020, 15:21
ACKR, can you post your script?

ACKR
29th April 2020, 05:31
ACKR, can you post your script?

i am working through staxrip. the program crashes whenever i try to aa or use awsharp2

StainlessS
29th April 2020, 15:45
Real.Finder's interest may be moslty in QTGMC usage.
Give Staxrip's args to QTGMC if staxrip exposes it.
also, what version QTGMC does staxrip use.

RanmaCanada
29th April 2020, 15:51
I do believe you are going to have to get a video card that works with OpenCL, as every CPU implementation is bad (from everything that I can find). It is driver based, but if the drivers suck, then it might as well not exist.

LigH
30th April 2020, 08:16
SIMD CPU instructions can parallelize a handful of calculations; GPGPU instructions possibly hundreds (as calculated in shader units). So OpenCL on a GPU can speed up calculations when you have algorithms that need to calculate rather simple instructions on a large number of values which don't depend much on each other. Rather small filter kernels on a whole line or stripe of pixels in a video frame are such a case: With hundreds of shader units you can filter the whole width in a few steps, whereas a CPU needs several hundred steps despite using SIMD instructions because they can still handle only e.g. 4 or 8 values at once.