GPU assisted possible / useful?
GPU assisted possible / useful?
Hi,
Loving neatvideo, as it made my analogue captures so much easier (used to all filtering in avisynth with plugins, but the need for constant tweaking drove me nuts as I wasn't very good at it ).
However, speed improvements would be nice. (filtering 1:40h video at full res takes a day with my X2 4400+)
Unfortunately, I'm not familiar with math involved with wavelets, but if they make extensive use of floating point operations, GPU assisted filtering might be possible. It is already apparent parallelization is feasible, as this already takes use of multiple cores.
For example fft3d -> fft3dgpu offered significant speed improvements in speed even with "low class" (dx9 compatible) GPU. Of course, fft is very flop intensive, so that's "easy" to see why it would improve.
Source code for fft3dgpu is available if you want to have an example how it can be implemented and analyze if it would be feasible for neatvideo too.
Of course this would also need to be a user selectable option, as not all encoding machines have a useful GPU (or they might to want to have the GPU for other stuff)...
Loving neatvideo, as it made my analogue captures so much easier (used to all filtering in avisynth with plugins, but the need for constant tweaking drove me nuts as I wasn't very good at it ).
However, speed improvements would be nice. (filtering 1:40h video at full res takes a day with my X2 4400+)
Unfortunately, I'm not familiar with math involved with wavelets, but if they make extensive use of floating point operations, GPU assisted filtering might be possible. It is already apparent parallelization is feasible, as this already takes use of multiple cores.
For example fft3d -> fft3dgpu offered significant speed improvements in speed even with "low class" (dx9 compatible) GPU. Of course, fft is very flop intensive, so that's "easy" to see why it would improve.
Source code for fft3dgpu is available if you want to have an example how it can be implemented and analyze if it would be feasible for neatvideo too.
Of course this would also need to be a user selectable option, as not all encoding machines have a useful GPU (or they might to want to have the GPU for other stuff)...
That's not possible; wrapper won't help, a plugin rewrite is required to take advantage of GPUs.
(technically, it would be possible to write an emulation layer which would translate CPU instructions to GPU instructions, but that would only make things slower)
Also, I wouldn't promote GPU acceleration at this point unless it can be done in shaders, as the only other viable solutions at this point are still vendor specific (CUDA / Stream) and OpenCL is around the corner (which would be a more open platform).
So, lets see Q2/3 what OpenCL brings and evaluate then.
(technically, it would be possible to write an emulation layer which would translate CPU instructions to GPU instructions, but that would only make things slower)
Also, I wouldn't promote GPU acceleration at this point unless it can be done in shaders, as the only other viable solutions at this point are still vendor specific (CUDA / Stream) and OpenCL is around the corner (which would be a more open platform).
So, lets see Q2/3 what OpenCL brings and evaluate then.
i don't know about neat, but the gpu world is about to make a leap soon, with the release of nvidia's fermi : http://www.brightsideofnews.com/news/20 ... gddr5.aspx
The huge thing imho is not the speed, but the possibility to directly calculate at 32bit and 64bit (at half speed, but which is huge still) and that it's programmable in C++, with debugging in Visual Studio enabled.
I don't know in which language the NeatVideo filter is written, but this development makes things look more feasible than they were some months ago.
Another lead could be OpenCL
Interesting times.
The huge thing imho is not the speed, but the possibility to directly calculate at 32bit and 64bit (at half speed, but which is huge still) and that it's programmable in C++, with debugging in Visual Studio enabled.
I don't know in which language the NeatVideo filter is written, but this development makes things look more feasible than they were some months ago.
Another lead could be OpenCL
Interesting times.
C++ support is indeed interesting. The closer GPU comes to regular programming methods the easier it becomes to use in real-world products. Another issue is of course standardization. Hopefully there will a merging of several competing approaches into a univesal standard. We are watching these developments too.
Vlad
Vlad
Yes, but i don't know the algorithm used in NV, but CUDA is made for some specific process, and if NV is not using the same process, they will not be able to benefit from GPU acceleration. Others use it, because they are benefit to them. The true question is : Are GPU/CUDA functions benefit/usabled by NV ?