Selur's Little Message Board
QTGMC vapoursynth opencl device - Printable Version

+- Selur's Little Message Board (https://forum.selur.net)
+-- Forum: Hybrid - Support (https://forum.selur.net/forum-1.html)
+--- Forum: Problems & Questions (https://forum.selur.net/forum-3.html)
+--- Thread: QTGMC vapoursynth opencl device (/thread-382.html)

Pages: 1 2


QTGMC vapoursynth opencl device - Mimo - 14.04.2018

hi,
is there a way to specify a opencl device instead of the default one (i have 2 devices - intel and nvidia and i want to use nvidia one)


RE: QTGMC vapoursynth opencl device - Selur - 14.04.2018

QTGMC for Vapoursynth has the following parameters:
QTGMC(Input, Preset='Slower', TR0=None, TR1=None, TR2=None, Rep0=None, Rep1=0, Rep2=None, EdiMode=None, RepChroma=True, NNSize=None, NNeurons=None, EdiQual=1, EdiMaxD=None, ChromaEdi='', EdiExt=None, Sharpness=None, SMode=None, SLMode=None, SLRad=None, SOvs=0, SVThin=0., Sbb=None, SrchClipPP=None, SubPel=None, SubPelInterp=2, BlockSize=None, Overlap=None, Search=None, SearchParam=None, PelSearch=None, ChromaMotion=None, TrueMotion=False, Lambda=None, LSAD=None, PNew=None, PLevel=None, GlobalMotion=True, DCT=0, ThSAD1=640, ThSAD2=256, ThSCD1=180, ThSCD2=98, SourceMatch=0, MatchPreset=None, MatchEdi=None, MatchPreset2=None, MatchEdi2=None, MatchTR2=1, MatchEnhance=0.5, Lossless=0, NoiseProcess=None, EZDenoise=None, EZKeepGrain=None,  NoisePreset='Fast', Denoiser=None, FftThreads=1, DenoiseMC=None, NoiseTR=None, Sigma=None, ChromaNoise=False, ShowNoise=0., GrainRestore=None, NoiseRestore=None, NoiseDeint=None, StabilizeNoise=None, InputType=0, ProgSADMask=None, FPSDivisor=1, ShutterBlur=0, ShutterAngleSrc=180, ShutterAngleOut=180, SBlurLimit=4, Border=False, Precise=None, Tuning='None', howSettings=False, ForceTR=0, TFF=None, pscrn=None, int16_prescreener=None, int16_predictor=None, exp=None, alpha=None, beta=None, gamma=None, nrad=None, vcheck=None, opencl=False)
see https://github.com/HomeOfVapourSynthEvolution/havsfunc/blob/master/havsfunc.py, line 682+
so as you can see by default this is not possible. (which is why Hybrid doesn't support it)

That said, looking through the source code using openCL will use core.nnedi3cl.NNEDI3CL and core.eedi3m.EEDI3CL.

Looking at those filters:
NNECI3CL:
nnedi3cl.NNEDI3CL(clip, int field[, bint dh=False, bint dw=False, int[] planes, int nsize=6, int nns=1, int qual=1, int etype=0, int pscrn=2, int device=-1, bint list_device=False, bint info=False]
see: https://github.com/HomeOfVapourSynthEvolution/VapourSynth-NNEDI3CL
EEDI3CL:
edi3m.EEDI3CL(clip clip, int field[, bint dh=False, int[] planes, float alpha=0.2, float beta=0.25, float gamma=20.0, int nrad=2, int mdis=20, bint hp=False, bint ucubic=True, bint cost3=True, int vcheck=2, float vthresh0=32.0, float vthresh1=64.0, float vthresh2=4.0, clip sclip=None, int opt=0, int device=-1, bint list_device=False, bint info=False])
both with:
device: Sets target OpenCL device. Use list_device to get the index of the available devices. By default the default device is selected.
this could be added.

=> So atm. the default graphic card will be used. If your NVIDIA card is the default it will be used otherwise the intel card will be used.

QTGMC could be adjusted to use a specific graphic card.
I created an issue inside the havsfunc repository (https://github.com/HomeOfVapourSynthEvolution/havsfunc/issues/12) asking the maintainer of havsfunc to add this.
Yes, I could add this myself, but it would be a pain to always remember it whenever havsfunc changes.
-> in case Holy (the maintainer) won't add this I might create a custom version of it, but I'd prefer to avoid it.

Cu Selur


RE: QTGMC vapoursynth opencl device - Selur - 14.04.2018

Good news, Holy adjusted havsfunc to support device selection.
-> will add support for it in Hybrid with the next release.
(will send you a link to a dev version for testing once I find time to adjust Hybrid)

Cu Selur


RE: QTGMC vapoursynth opencl device - Mimo - 14.04.2018

hohoho so quick response sir ...

thanks a lot

(14.04.2018, 11:40)Selur Wrote: QTGMC for Vapoursynth has the following parameters:
QTGMC(Input, Preset='Slower', TR0=None, TR1=None, TR2=None, Rep0=None, Rep1=0, Rep2=None, EdiMode=None, RepChroma=True, NNSize=None, NNeurons=None, EdiQual=1, EdiMaxD=None, ChromaEdi='', EdiExt=None, Sharpness=None, SMode=None, SLMode=None, SLRad=None, SOvs=0, SVThin=0., Sbb=None, SrchClipPP=None, SubPel=None, SubPelInterp=2, BlockSize=None, Overlap=None, Search=None, SearchParam=None, PelSearch=None, ChromaMotion=None, TrueMotion=False, Lambda=None, LSAD=None, PNew=None, PLevel=None, GlobalMotion=True, DCT=0, ThSAD1=640, ThSAD2=256, ThSCD1=180, ThSCD2=98, SourceMatch=0, MatchPreset=None, MatchEdi=None, MatchPreset2=None, MatchEdi2=None, MatchTR2=1, MatchEnhance=0.5, Lossless=0, NoiseProcess=None, EZDenoise=None, EZKeepGrain=None,  NoisePreset='Fast', Denoiser=None, FftThreads=1, DenoiseMC=None, NoiseTR=None, Sigma=None, ChromaNoise=False, ShowNoise=0., GrainRestore=None, NoiseRestore=None, NoiseDeint=None, StabilizeNoise=None, InputType=0, ProgSADMask=None, FPSDivisor=1, ShutterBlur=0, ShutterAngleSrc=180, ShutterAngleOut=180, SBlurLimit=4, Border=False, Precise=None, Tuning='None', howSettings=False, ForceTR=0, TFF=None, pscrn=None, int16_prescreener=None, int16_predictor=None, exp=None, alpha=None, beta=None, gamma=None, nrad=None, vcheck=None, opencl=False)
see https://github.com/HomeOfVapourSynthEvolution/havsfunc/blob/master/havsfunc.py, line 682+
so as you can see by default this is not possible. (which is why Hybrid doesn't support it)

That said, looking through the source code using openCL will use core.nnedi3cl.NNEDI3CL and core.eedi3m.EEDI3CL.

Looking at those filters:
NNECI3CL:
nnedi3cl.NNEDI3CL(clip, int field[, bint dh=False, bint dw=False, int[] planes, int nsize=6, int nns=1, int qual=1, int etype=0, int pscrn=2, int device=-1, bint list_device=False, bint info=False]
see: https://github.com/HomeOfVapourSynthEvolution/VapourSynth-NNEDI3CL
EEDI3CL:
edi3m.EEDI3CL(clip clip, int field[, bint dh=False, int[] planes, float alpha=0.2, float beta=0.25, float gamma=20.0, int nrad=2, int mdis=20, bint hp=False, bint ucubic=True, bint cost3=True, int vcheck=2, float vthresh0=32.0, float vthresh1=64.0, float vthresh2=4.0, clip sclip=None, int opt=0, int device=-1, bint list_device=False, bint info=False])
both with:
device: Sets target OpenCL device. Use list_device to get the index of the available devices. By default the default device is selected.
this could be added.

=> So atm. the default graphic card will be used. If your NVIDIA card is the default it will be used otherwise the intel card will be used.

QTGMC could be adjusted to use a specific graphic card.
I created an issue inside the havsfunc repository (https://github.com/HomeOfVapourSynthEvolution/havsfunc/issues/12) asking the maintainer of havsfunc to add this.
Yes, I could add this myself, but it would be a pain to always remember it whenever havsfunc changes.
-> in case Holy (the maintainer) won't add this I might create a custom version of it, but I'd prefer to avoid it.

Cu Selur

i i have red this this is a reason for my question.

now i have another one - how to use dgindexnv and im libs with vapoursync? tried to copy them near anywhere ...


RE: QTGMC vapoursynth opencl device - Selur - 14.04.2018

Quote:now i have another one - how to use dgindexnv and im libs with vapoursync? tried to copy them near anywhere ...
?im libs? <- no clue what you want to say,.. lost in translation Smile
vapoursync <- I suspect you mean Vapoursynth

To use DGDecNV:
  1. the DGNV files:
    • DGDecodeNV.dll
    • DGIndexNV.exe
    • license.txt
  2. need to be placed into the 'Hybrid\64bit\vsfilters\SourceFilter\DGDecNV' folder.
  3. 'Filtering->Vapoursynth->Misc->Input->Use DGDevNV when avaialable' needs to be enable

Cu Selur


RE: QTGMC vapoursynth opencl device - Selur - 14.04.2018

Send you dev version for testing which allows to set the openCL device for QTGMC.

Cu Selur


RE: QTGMC vapoursynth opencl device - Mimo - 14.04.2018

i mean dgindexim  variant


RE: QTGMC vapoursynth opencl device - Selur - 14.04.2018

Hybrid will look for the DGIm files in 'Hybrid\64bit\vsfilters\SourceFilter\DGDecIM', so you need to place them an the license.txt there and enable 'Filtering->Vapoursynth->Misc->Input->Use DGDevIM when available'.

Cu Selur


RE: QTGMC vapoursynth opencl device - Mimo - 14.04.2018

looks working fine,
now with dgindex nv the encoding speed together with deinterlace is 17 fps instead of 5

thx


RE: QTGMC vapoursynth opencl device - Mimo - 15.04.2018

it seems that opencl qtgmc part is not running on nvidia for some reasons. but i can combine decode on nvidia and deinterlace on intel ...