View Full Version : NLMeansCL: GPU based Non Local Means Denoising
Malcolm
5th January 2011, 23:34
Hi,
i would like to introduce a new filter for avisynth: NLMeansCL.
The filter is my try on the NLMeans algorithm. Tritical already wrote TNLMeans in 2006, which is also an implementation of the NLMeans algorithm. (Thanks for your work tritical!)
In contrast to tritical's implementation - which is written in C++ and runs on the CPU, my implementation is written in OpenCL and runs on the GPU (typically).
Note: I will update this post to reflect all changes to the filter. The most recent modifications will be marked in blue.
I was only able to test the filter on my NVIDIA Geforce 9600 GT. Therefore i can give no guarantee that it runs on your GPU or even crashes or kills your PC! (Not that i think it would do...) ;) The wrapper around the OpenCL algorithm is written in C#.
Syntax:
NLMeansCL(int A, int Ay, int Az, int S, int Sy, int B, int By, float aa, float h, float hC, int plane, bool debug, string debugpath, string smf, bool cpu, bool buffer, bool sse)
If you want to know some background information about the NLMeans algorithm, i'd like to point you to the very well written readme.txt that is part of tritical's TNLMeans filter package. He also explaines all the parameters of the filter in detail.
The syntax of NLMeansCL:
Parameter A: Sets the value for Ax and Ay. If you want to use the same values for Ax and Ay, you only have to specify one parameter. The same applies for S (-> Sx, Sy) and B ( -> Bx, By). You can specify a different value for Ay by using the explicit Ay parameter.
(default = 4)
Parameter Az: Sets the temporal radius. At the moment only 1 and 2 are supported. (default = 0)
Parameter S/Sy: default = 2
Parameter B/By: default = 1
Parameter aa: This parameter is equivalent to the parameter 'a' in TNLMeans. (default = 1.0)
Parameter h/hC: h defines the strength of the filter both for luma and chroma planes. hC is an addition to h. With hC you can set a different filter strength for the color channels U and V. (default = 1.8)
Parameter plane: Here you can specify, which color planes should be processed (similar to FFT3DFilter):
0 - luma (Y),
1 - chroma U,
2 - chroma V,
3 - chroma planes U and V,
4 - both luma and chroma
5 - copy all planes. In this mode, all planes are just copied by a very simple OpenCL kernel. In case NLMeansCL does not run on your GPU, this might help to check if a very simple OpenCL kernel executes.
(default = 0)
Parameter debug: Specifies, if a file with debug informations and error messages should be written. The debug file is named 'NLMeansCL_debug.txt'. (default = false)
Parameter debugpath: Specifies the path to the debug file. (default = C:\Temp\)
Parameter smf: This is a purely technical parameter to specifiy different memory allocation strategies. Possible values are "nan", "ahp", "chp", "achp" and "uhp". (default = ahp)
Parameter cpu: Specifies if the filter should be executed on the CPU rather than the GPU. (default = false)
Parameter buffer: Specifies if OpenCL buffers are used instead of OpenCL image objects to process the video data. (default = false)
Parameter sse: Specifies if the sum of squared differences is used (sse=true) or the sum of absolute differences (sse=false). (default = true)
Running the filter on CPUs:
To be able to run the filter on the CPU, you have to install the ATI Stream SDK. Furthermore, you have to set 2 parameters: cpu=true and buffer=true.
Using the parameter combination cpu=true and buffer=false will fail to execute, since AMD has not implemented image support for the CPU version of its OpenCL drivers yet!
The support for buffers is preliminary. That means i'm undecided if i will keep or remove it in future versions of the filter. If AMD adds image support to its drivers (either CPU or GPU), there is not much reason to leave it in the filter.
NLMeansCL will take full advantage of multiple CPU cores. There is no need to use MT() or setMTmode()! (It will rather degrade performance.)
When forcing to use buffers instead of images, the fps on my Geforce drops from 23.05 to 3.90
Here's how the content of the debug log file will look if the filter initializes correctly:
NLMeansCL Version 0.3.2
ScriptEnvironment present.
Number of OpenCL Compute Platforms = 2.
Trying OpenCL Compute Platform
NVIDIA Corporation.
OpenCL 1.0 CUDA 3.2.1.
Number of OpenCL Devices in Platform = 1.
Trying OpenCL Device GeForce 9600 GT.
Device available.
Wrong Device Type (Gpu) requesting Cpu.
Trying OpenCL Compute Platform
Advanced Micro Devices, Inc..
OpenCL 1.1 ATI-Stream-v2.3 (451).
Number of OpenCL Devices in Platform = 1.
Trying OpenCL Device Intel(R) Core(TM)2 CPU 4400 @ 2.00GHz.
Device available.
Device Type Cpu.
Device does not support images.
Using Device Intel(R) Core(TM)2 CPU 4400 @ 2.00GHz.
OpenCL Compute Context successfully created.
OpenCL Command Queue successfully created.
OpenCL Program successfully built.
Prog Y Build log:
Prog UV Build log:
OpenCL kernels successfully created.
Now, what do you have to do to get the filter running:
1. The NLMeansCL Filter DLL itself:
Link and attachment at the end of my post.
Put it in you avisynth plugin folder. And don't rename it!
2. CLOO: A .net library for OpenCL. Needed to run NLMeansCL.
You can download it here: http://sourceforge.net/projects/cloo/
Take the Cloo.dll file from \bin\release inside the zip file and put it in your avisynth plugin folder.
3. AvsFilterNet: A .net library to write Avisynth filters. Needed to run NLMeansCL.
You can download it here: http://avsfilternet.codeplex.com/
Take the AvsFilterNet.dll and put it in your avisynth plugin folder.
That's it.
Performance:
I evaluated some figures for my system:
CPU: Core2Duo, running on 3.2GHz
GPU: NVIDIA Geforce 9600GT, 512MB GDDR3, 650MHz Core / 900MHz Memory / 1600MHZ Shader, not overclocked
I typically get a speed improvement of factor 18 to 25 compared to TNLMeans.
For example:
Video: 720x576, YV12
Parameter: A=4, S=2, B=1
TNLMeans: 0.98 fps
NLMeansCL: 23.93 fps (cpu=false, buffer=false)
NLMeansCL: 3.90 fps (cpu=false, buffer=true)
NLMeansCL: 1.40 fps (cpu=true, buffer=true)
The speed factor between NLMeansCL and TNLMeans is similar for different video sizes (e.g. 1920x1080 or 360x288). As well as for different filter parameters (Bx = 0, By = 0).
On my GPU, the implementation does NOT benefit if you use values of 2 or above for B/By! I have some explanations for this behaviour, but it would lead to far to explain it...
I'm highly interested to see performance figures for different GPUs as well as the feedback if it runs on different graphic cards.
A typical script to test the performance would be the following. Load the script in Virtualdub and check the 'video rendering rate' in the status window.
mpeg2source(...)
trim(0, 1)
assumefps(500)
last = last + last + last + last
last = last + last + last + last
last = last + last + last + last
last = last + last + last + last
NLMeansCL(A=4, S=2, B=1, aa=1.0, h=1.8, plane=4)
Parameter values:
My findings so far are, that the default values for A, S and B work very well! Typically there is no improvements by setting A or S higher. It only get's a lot slower!
IMHO there is no need to change aa to something other than 1.0.
Playing around with h and hC is sufficient.
Problems:
If you have any problems with the filter, especially if i doesn't work at all. Please use GPU Caps Viewer (http://www.ozone3d.net/gpu_caps_viewer/) and check first, if the included OpenCL demos do run! Then go to the tab named 'Tools' and send me the 'Full XML Export'! There's an extra button for it on the tab. Also, please send me the log file, that NLMeansCL creates!
I cannot guarantee to help you out quick, since i'm rather busy!
Version 0.4.0 alpha:
This version is only a preliminary version (created in January) that implements a temporal version of the algorithm. Currently, it only supports a temporal window of 1, respectively 2 frames (in both directions). The temporal mode is only implemented for the image based algorithm, not the buffer based. On my PC, the algorithm produces some non deterministic artefacts in the video that are visible as small blocks of completely black pixels. I assume some runtime problems / asychronity between the shaders and writing out the memory to the host PC. I haven't worked for months now on the algorithm and this will probably be the status for the rest of the summer. I have also a version for arbitrary values of Az, but i'm not satisfied with the results (it's too slow and the computed values are incorrect)
TODOs:
- (Better) Temporal mode
- Make NLMeansCL work on AMD graphic cards
- x64 version
- Other color spaces (YUY2, RGB)
Changelog:
Changes from v0.1 to v0.1.1
Added some debug informations. See above for parameter description.
Added parameter to specify memory allocation strategy. Mainly to do technical low level tests.
Added mode 5 for parameter 'plane' for debug reasons. See above for parameter description
Changed the calculation of the imags areas for processing to prevent misbehaviour at certain video sizes like 1280x720. As a result, some pixels at the video borders might not be processed. (Just do an addborder() in your script to work around this)
Changes from v0.1.1 to v0.1.2
Resolved the misbehaviour at certain video sizes. Namely where RowSize == PitchSize. Now the processing is exact up to the video boundaries. No need to do addborder() / crop() anymore.
Changes from v0.1.2 to v0.2
Added support for execution on CPUs and hopefully on Radeon cards. Added 2 parameters 'cpu' and 'buffer' for that.
Fixed a bug where values near 1.0 (like 1.00000001) for parameter h lead to an error.
Changes from v0.2 to v0.2.1
Changed the device selection strategy. Hope now it will work for Platforms where GPU and CPU devices are mixed (AMD Radeon with ATI Stream SDK installed).
Changes from v0.2.1 to v0.2.2
Had to change again device selection strategy. Hope this works now in all cases.
Changes from v0.2.1 to v0.3
Added mode for sum of absolute differences when computing neighborhood similarity (Parameter sse)
Performance improvements in cases where not all planes are processed (plane != 4)
Changes from v0.3 to v0.3.1
Changed memory allocation strategy from uhp to ahp due to userreported errors. -> Changed default value for parameter smf to 'ahp'.
Fixed kernel name bug
Changes from v0.3.1 to v0.3.2
Switched to .Net 4
Switched to the latest version of Cloo (v0.9.0)
Switched to the latest version of AvsFilterNet (r62998)
NLMeansCL now reports errors the normal way (like all other avisynth plugins do)
When an error occurs, NLMeansCL does not crash avisynth anymore
Minor changes in the OpenCL code
v0.4.0 alpha
Implemented preliminary temporal version for Az=1 and Az=2.
v0.4.0 alpha is still based on .Net 3.5 as well as the older versions of Cloo (0.8.1) and AvsFilterNet (1.0 beta 2)!
Download latest version:
v0.3.2 :http://www.mediafire.com/?q4butkseucz9tin
v0.3.2 sources:http://www.mediafire.com/?l3swlzu2pm3375l
v0.4.0 alpha : http://www.mediafire.com/?9osy86a14u0qxr6
Malcolm
TheRyuu
6th January 2011, 00:05
Avisynth is telling me that NLMeansCL_netautoload.dll is not an avisynth 2.5 plugin.
Edit: Am I suppose to load this differently from other plugins other than just a simple LoadPlugin("X:\path\to\filter.dll")?
Malcolm
6th January 2011, 00:13
Huh?
You don't have to load it explicitly. AvsFilterNet does that for you if the filename ends with _netautoload.dll and it resides in the same folder.
If you remove the suffix, you can load it manually with LoadPlugin(). Still you need the AvsFilterNet.dll (i guess)
Malcolm
mastrboy
6th January 2011, 01:17
interesting filter, we have too few filters which run on the GPU.
Could you post some screenshots comparing NLMeansCL and TNLMeans?
Malcolm
6th January 2011, 01:28
@masterboy
When called with the same parameters, both filters produce exactly(*) the same result!
http://img340.imageshack.us/img340/4742/tnlmeansnlmeanscl.th.jpg (http://img340.imageshack.us/i/tnlmeansnlmeanscl.jpg/)
(*) The difference that you see on the right is 16 times enhanced. It contains only a few individual 'dots'. They arise from minor differences in the mathematical calculation. For performance reasons the calculation in OpenCL is performed with 'relaxed-math' optimization and with single-precision (float instead of double)
mastrboy
6th January 2011, 01:45
thats quite impressing considering the speed increase, will try it tomorrow together with DGNVIndex, and see what i can get out of it...
TheRyuu
6th January 2011, 01:48
Well unless I'm doing it wrong (I just threw all 3 things in the autoload folder for testing it) it caused my graphics drivers to 'crash' and have to recover (when loading in vdub).
Vdub says nothing on crash, avsp is saying some sort of null pointer exception when I try and run the script (and doesn't cause a driver recovery), dunno if that helps.
Running a GTX 570 here with the latest beta drivers (266.35).
GoodzMastaJ
6th January 2011, 02:40
I gave it a try. All three linked dll's in avisynth plugins folder, installed Catalyst 10.12 (APP version that has OpenCL support), and the StreamSDK which has the OpenCL libraries and whatnot. I get the below exception on my Radeon HD 4870. Any ideas how I can determine what actually failed (I know OpenCL on AMD is ?? at best, especially older cards like this one)?
Picture too wide for forum so linked (http://stuff.damagedgoodz.net/forumposts/openclex.png)
Hiritsuki
6th January 2011, 07:29
I wait for this filter long long time.
I test it right now. -w-
Dogway
6th January 2011, 08:52
The long awaited denoiser!! Thank you!
I get an error previewing in avspmod:
error messege (http://img534.imageshack.us/img534/9973/ataj.png)
Also will you implement temporal Az? I think it was something tritical did by himself, but itd be very welcome.
I have a Geforce 9600M GT card
driver version: 197.16
Hiritsuki
6th January 2011, 09:25
@Dogway
I think driver upate to 260.99 will fix that error.
Dogway
6th January 2011, 10:34
Thanks, it worked CL implementation is on the latter drivers only.
Some questions:
-the default behaviour is sse=true (as tnlmeans)? I like using sse=false for animation sources, it works nice for large flat colors.
-If you feel like, could you make some kind of dark protection? if a source has very dark scenes it completly turns into a mud secuence (just like tnl or dfttest).
-Do I need to make it MT or something?
benchmark:
# 0.40fps
MT("tnlmeans(ax=4,ay=4,az=1,sx=2,sy=2,bx=1,by=1,h=1.8,sse=true)",2,2)
# 0.19fps
NLMeansCL(A=4, S=2, B=1, aa=1.0, h=1.8, plane=4)
Malcolm
6th January 2011, 10:38
Well unless I'm doing it wrong (I just threw all 3 things in the autoload folder for testing it) it caused my graphics drivers to 'crash' and have to recover (when loading in vdub).Ok, let me explain: Under 'normal' circumstances, windows recovers your graphics card driver because it crashed. However, windows also does this, if your driver doesn't respond within 2 seconds. (You can change the time, as well as the general behaviour of windows by editing the registry).
That means: If you have a very complex OpenCL kernel, that computes for more than 2 seconds on one video frame, then windows will kill and restart your driver!
Since you have a GTX 570 i would assume that it's fast enough. So this shouldn't happen unless you use parameters like A=8, S=6 or so. But since i haven't tested the filter on that GPU i can only guess!
Malcolm
6th January 2011, 10:45
Any ideas how I can determine what actually failed (I know OpenCL on AMD is ?? at best, especially older cards like this one)?You can check if OpenCL is working on your configuration with this tool: http://www.ozone3d.net/gpu_caps_viewer/ It contains some OpenCL demos. You can as well choose on which 'hardware' you would like to execute the demo (if you have more than one GPU, or on the CPU if you have the ATI Stream SDK installed)
I will provide a version of the filter that spits out the real message. What you see on the picture is the mentioned general exception saying that the filter called env.ThowError(...)
Malcolm
6th January 2011, 10:57
-the default behaviour is sse=true (as tnlmeans)? I like using sse=false for animation sources, it works nice for large flat colors.
-If you feel like, could you make some kind of dark protection? if a source has very dark scenes it completly turns into a mud secuence (just like tnl or dfttest).
-Do I need to make it MT or something?- yes, i have only implemented sse. sad should be no problem. i will consider adding this.
- dark scene protection: actually i would recommend to do that with a little bit of scripting in avisynth.
- Using MT will not help. NLMeansCL itself is already mutithreaded on the GPU by nature. That's where the real work is done. So multithreading the wrapper-part, which runs on the CPU doesn't help improving performance.
0.19 fps?!? Wow! i cannot imagine how this number comes to existance. At 720x576? What's your script?
Dogway
6th January 2011, 12:07
Thanks for the answers, something must have been wrong, as there's no temporal I used an image and that was the speed. Now I tried with a video source and results were more optimistic:
# 0.77fps
MT("tnlmeans(ax=4,ay=4,az=1,sx=2,sy=2,bx=1,by=1,h=1.8,sse=true)",2,2)
# 12.77fps
NLMeansCL(A=4, S=2, B=1, aa=1.0, h=1.8, plane=4)
So maybe it doesn't like images or non mod16?
The dark protection is not only scenes, but part of the scenes, but I will look into that.
Malcolm
6th January 2011, 13:48
So maybe it doesn't like images or non mod16?
The dark protection is not only scenes, but part of the scenes, but I will look into that.
12.77 fps is pretty good for a mobile GPU like the 9600M GT i would say!
The filter doesn't care if it's mod16. Did you process only one frame? The initialization of the OpenCL stuff takes some time. That means processing the first frame is WAY slower than all following frames! Repeat your single frame 512 times and let the video play. What fps do you get after 256 frames?
Yes, i understand. it's about dark areas inside the video frame. But atm. i have to focus on the core functionality of the filter. 'dark scene protection' ist really something that can be added on top of any filter by scripting.
To the temporal filter mode: I have implemented this as a protoype, but i'm reluctant to investigate deeper at the moment.
Reasons are:
It doesn't bring that much benefit that one might think. (Maybe i will correct myself here in the future...)
It slows down the filtering. (Though it's not as slow as i expected)
Due to the nature of OpenCL / CUDA (that means to get fast executing code!), i'd have to write a second specialized kernel besides the existing one to realize Az=1. I'd have to write a third specialized kernel to realize Az=2, ...
A generalized kernel is possible but would be very slow! (And since it's all about performance...) At the current stage, i'd like to focus on the core kernel itself and work this out first.
Dogway
6th January 2011, 14:40
It's really strange, if I process my image with the example script of your first post, it goes nice (5.85fps), but with the next script I only get 0.19fps:
ImageReader("C:\image.jpg")
setmtmode(2)
mmod(2,2) #final resolution 1000x572
converttoyv12
NLMeansCL(A=4, S=2, B=1, aa=1.0, h=1.8, plane=4)
Im testing with AVSinfo.exe
I always use az=3, sometimes 6 depending on sources, I think it would benefit from still areas, taking advantage of temporal information (noise,codec blocks...), but that's only me, Im aware this is still in experimental phase, I just wanted to help a bit. Nice 3 wise present! Keep the good work :P
naoan
6th January 2011, 16:22
I got this error when trying to test the filter on avspmod
http://i.imgur.com/OITBQ.png
My system is using Windows 7 x64 and GPU AMD Radeon HD4850, checked using GPU-Z and opencl is ticked.
Didée
6th January 2011, 16:26
@ Dogway: Just kill that SetMTmode(2) out of your your script.
Simple logic: [SetMTmode(2)] AND [GPU filter] == FAIL
Malcolm
6th January 2011, 16:41
My system is using Windows 7 x64 and GPU AMD Radeon HD4850, checked using GPU-Z and opencl is ticked.The error message means, that the filter cannot use the retrieved GPU device. (for whatever reasons...)
AFAIK GPU-Z only checks your hardware and tells if your GPU can be used as OpenCL device. It doesn't tell if you have installed the necassary drivers.
Please download the above mentioned tool GPU Caps Viewer and start one of the incuded OpenCL GPU Demos. Do they run? Link: http://www.ozone3d.net/gpu_caps_viewer/
@Dogway
Didée is right, you are instancing NLMeansCL multiple times by using SetMTmode. Which doesn't help at all because now all instances must run in parallel and eat up your GPU memory! Also you have LESS shaders available per instance to do the work! FAIL! ;)
Dogway
6th January 2011, 16:45
@Didée: I use it for mmod and converttoyv12, doesnt it make sense? Either way it stays at 0.19fps
Didée
6th January 2011, 16:51
The bare minimum is that you switch back to SetMTmode(5) right before the GPU filter.
naoan
6th January 2011, 18:37
The error message means, that the filter cannot use the retrieved GPU device. (for whatever reasons...)
AFAIK GPU-Z only checks your hardware and tells if your GPU can be used as OpenCL device. It doesn't tell if you have installed the necassary drivers.
Please download the above mentioned tool GPU Caps Viewer and start one of the incuded OpenCL GPU Demos. Do they run? Link: http://www.ozone3d.net/gpu_caps_viewer/
Yes, I could run all the GPU OpenCL test, got nice fps too compared to CPU test...
Hiritsuki
7th January 2011, 08:17
Using author's sitting is more quality and more faster than PNLM default sitting,
That is true TNL's effect on the GPU.
Thanks Malcolm very very much. -w-++
test pic I'll upload when my MeGUI's job is over.
naoan
7th January 2011, 14:15
I updated Catalyst to 10.12 and it's still no good... :(
Damn, really want to use this filter, maybe it's time to upgrade, this time on green route...
Malcolm
7th January 2011, 14:24
I updated Catalyst to 10.12 and it's still no good... :(
Damn, really want to use this filter, maybe it's time to upgrade, this time on green route...I don't see a fundamental problem with my code and Radon GPUs. I just couldn't test it! So i guess it's just a simple obstacle that can be overcome. I'll provide a version soon, that gives out more debug information.
@Hiritsuki
Your english is really weird! ;)
Hiritsuki
7th January 2011, 14:59
Orz, I had test remote to run NLMeansCL and it's cannot run.
--[Error] An error occurred: avs [error]: NLMeansCL1 initialization error: System.Reflection.TargetInvocationException: 引動過程的目標傳回例外狀況。 ---> System.TypeInitializationException: 'Cloo.ComputePlatform' 的型別初始設定式發生例外狀況。 ---> Cloo.ComputeException: OpenCL error code detected: CL_PLATFORM_NOT_FOUND_KHR.
--[Error] An error occurred: 於 Cloo.ComputeException.ThrowOnError(ComputeErrorCode errorCode)
--[Error] An error occurred: x264 [error]: could not open input file `G:\OREIMO\11\OREIMO 11.avs'
--[Error] [2011/1/7 下午 09:56:00] Process exits with error code: -1
Hiritsuki
7th January 2011, 15:01
I don't see a fundamental problem with my code and Radon GPUs. I just couldn't test it! So i guess it's just a simple obstacle that can be overcome. I'll provide a version soon, that gives out more debug information.
@Hiritsuki
Your english is really weird! ;)
Sorry my english is broken.
naoan
7th January 2011, 15:30
I don't see a fundamental problem with my code and Radon GPUs. I just couldn't test it! So i guess it's just a simple obstacle that can be overcome. I'll provide a version soon, that gives out more debug information.
I'd be glad to help you by providing any info you need. :)
Thank you for this awesome filter, been waiting something like this for a long time now. :D
aegisofrime
7th January 2011, 15:43
Congrats Malcolm, on what I think is the first ever OpenCL Avisynth filter!
I just tried it, followed your instructions and called the function on a TGMC deinterlacing script. I loaded that into VDub, seems to work fine! Haven't tested speed yet as I'm currently encoding a video now.
Hopefully your work inspires more development in the field of OpenCL Avisynth :D
BTW, any plans for a 64-bit version?
Didée
7th January 2011, 17:34
I'm facing a serious problem here. (Nvidia GT240 on Win7 HP x64.)
- With Nvidia driver 258.96, the filter won't work. (Note: all GPU OpenCL tests from gpu_caps_viewer are working correctly with this driver ! )
- With Nvidia driver 260.66, the filter itself works. But I can't use my PC with this driver - the desktop and all application windows are scattered horribly with randomly changing pixel dot artifacts. It looks pretty much like the problem as described here (http://neuron2.net/board/viewtopic.php?f=8&t=49) - just much worse.
Dead road for me.
-----
Edit - one thing catched my eye. This is the error I get with driver 258.96:
http://img5.imageshack.us/img5/5203/nlmeansclerror.th.png (http://img5.imageshack.us/i/nlmeansclerror.png/)
Note the red marked part of the error. I've no clue about this programming language, but the double-dot thingy seems like a *syntax* issue to me. (?)
ChaosKing
7th January 2011, 18:56
Here's my quick benchmark:
CPU: q9550
GPU: 260GTX (896MB RAM)
Video: DVD (720x480, YV12) (+AnimIVTC)
Parameter: Ax=4, Ay=4, Sx=2, Sy=2, Bx=1, By=1 (same as yours)
TNLMeans: 1.15 fps
NLMeansCL(+AnimeIVTC): ~57-58 fps
NLMeansCL: ~86-90 fps
tested with Vdub: Run video analysis pass
amazing speed gain :D thx for the filter.
Malcolm
7th January 2011, 20:11
@aegisofrime
Yeah, thanks! The first OpenCL filter ever... sounds good! ;)
A 64bit version. Yes, i intend to do that. I just haven't used Avisynth 64bit yet, so i have to set up that first before i can tackle it.
@Didée
Hi!
I run driver version 263.06. Have you tried that?
I guess your screen looks like that, right?
http://img141.imageshack.us/img141/847/sterneb.th.png (http://img141.imageshack.us/i/sterneb.png/)
Well, that's serious! This is a case where the filter goes wild and writes to arbitrary memory locations on the graphics card. This looks like a real bug inside the filter. I will upload a version of the filter that gives out some debug information. Can you use the new version once available with the same video and send me the debug info? Thanks.
To the error dialoge. You have good eyes! ;)
But this is just an abbreviation in the message to tell that the error was thrown from inside the 'constructor' method of the filter class. Thanks anyway!
@ChaosKing
Now THAT are figures i like! 90 fps! :D
@To all others:
If you have any problems with the filter, especially if i doesn't work at all. Please use GPU Caps Viewer (http://www.ozone3d.net/gpu_caps_viewer/), go to the tab named 'Tools' and send me the 'Full XML Export'! There's an extra button for it on the tab.
mastrboy
7th January 2011, 21:45
i had the same problem as Didee with 258.96 on Win7 x64, upgraded to driver 260.99 today and it startet working without problems.
Hardware: Nvidia GTX260
FPS on a 720x480 anime with only tfm().tdecimate(mode=1).NLMeansCL() : 85-90~ fps, depending on scenes... :D
Using the settings specified in the first post: 60-70~ fps (NLMeansCL(A=4, S=2, B=1, aa=1.0, h=1.8, plane=4))
Testing in combination with DGNVIndex:
DGSource("D:\Video\Dragon Ball Z Kai\EP13\EP13_00035.dgi",crop_b=8,crop_l=240,crop_r=240,resize_w=960,resize_h=720)
NLMeansCL()
Results in 45-50~ fps
This is absolutely amazing if you ask me, never thought that the GPU would be so much faster than the CPU for denoising... (You should port dfttest also ;) )
GoodzMastaJ
7th January 2011, 23:20
You can check if OpenCL is working on your configuration with this tool: http://www.ozone3d.net/gpu_caps_viewer/ It contains some OpenCL demos. You can as well choose on which 'hardware' you would like to execute the demo (if you have more than one GPU, or on the CPU if you have the ATI Stream SDK installed)
I will provide a version of the filter that spits out the real message. What you see on the picture is the mentioned general exception saying that the filter called env.ThowError(...)
Thanks for the link, that tool has some interesting info. On the OpenCL tab it shows it supports OpenCL 1.0 on my GPU and OpenCL 1.1 on the CPU. The HD 4870 is one of the earliest OpenCL supported GPUs so that may have some effect. The OpenCL demos in the tool all ran fine. I'll just hang tight and wait for an updated version of your filter that might give a hint on where I'm going wrong.
Cheers
edit - Just in case it helps, here is the full report from GPU Caps viewer -> Link (http://stuff.damagedgoodz.net/forumposts/HD4870_GPU_Caps.txt)
Malcolm
7th January 2011, 23:22
I have updated the filter to version 0.1.1.
All changes are described in my first post.
The link for the DLL at Mediafire now points to v0.1.1.
Please read the changelog and look at the changed description of parameters.
Radeon users: Please play around with the 'smf' parameter. I don't know if changing the memory allocation strategy helps to get the filter running. I have some more things in mind that can be modified, but i need some time to implement. I just wanted to get the new version out quick, so anyone can use it.
Malcolm
GoodzMastaJ
7th January 2011, 23:32
It seems I found my problem using the version 0.1.1 you just posted (note: the dll in your zip needs to have _netautoload.dll appended to work like the previous version did). Also, if C:\Temp does not exist, the filter will throw an exception even if debug is false.
Here is the debug file:
NLMeansCL Version 0.1.1
ScriptEnvironment present.
Number of OpenCL Compute Platforms = 1.
Using first OpenCL Compute Platform.
Advanced Micro Devices, Inc..
OpenCL 1.1 ATI-Stream-v2.3 (451).
OpenCL Compute Context successfully created.
Number of OpenCL Devices in first Platform = 2.
Using first OpenCL Device.
ATI RV770.
Device available.
Parameter smf = chp
Device does not support images!
The last line is the same no matter what smf is set to. It seems my card is too old to use this filter :(
Malcolm
7th January 2011, 23:47
@GoodzMastaJ
Thanks!
I've quickly changed the implementation around the debug path. It should be more robust now! I guess i'm too tired to go on...
For your GPU: Please send me the full XML from GPU Caps Viewer as PN.
And be patient, we've just started with this filter! 'No image support' does not mean that it's all over...
Wilbert
7th January 2011, 23:53
Could you release the source code so that the community can enjoy your magic?
I have a GeFore 6800LE, is that good enough? Nvidia driver 61.76.
Malcolm
8th January 2011, 00:15
@Wilbert
I will do that. But i would like to work some things out first!
I don't think your 6800LE will be capable of executing OpenCL. it's from around 2004 if i'm right. That's long, long ago... And even if, the performance would probably be not much better that TNLMeans.
TheRyuu
8th January 2011, 00:51
Could you release the source code so that the community can enjoy your magic?
I have a GeFore 6800LE, is that good enough? Nvidia driver 61.76.
Only 8 series or higher supports OpenCL.
Edit: on a side note v 0.1.1 actually works for me. I did get a green bar on the bottom of the screen with non-mod16 resolution. I also get a green bar on the right side of the screen with plane=4 at 1280x720.
With plane=0 about 4-8 pixels on the right side turn black.
Edit2: padding like 16 pixels (addborders) on each side then cropping later seems to work.
naoan
8th January 2011, 18:14
Well I played around with smf parameters but it still won't work.
Here's the full XML export of my GPU, radeon HD4850 http://www.mediafire.com/?f4s4ktmocfk2hot
Hope that could help!
tormento
8th January 2011, 20:36
Major issues when trying to load avs in VirtualDub. Same errors as some seen here.
P.S: x64 version please =)
Malcolm
8th January 2011, 22:14
Here's the full XML export of my GPU, radeon HD4850 http://www.mediafire.com/?f4s4ktmocfk2hot
Hope that could help!Yes, that helped.
Seems like all RV770 users are out of business at the moment.
The AMD OpenCL drivers do not suppport images.
Same issue as GoodzMastaJ.
Please see below for a snippet of the full XML export from GPU Caps Viewer.
CL_DEVICE_NAME="ATI RV770"
CL_DEVICE_VENDOR="Advanced Micro Devices, Inc."
CL_DRIVER_VERSION="CAL 1.4.900"
CL_DEVICE_PROFILE="FULL_PROFILE"
CL_DEVICE_VERSION="OpenCL 1.0 ATI-Stream-v2.3 (451)"
CL_DEVICE_TYPE="GPU"
CL_DEVICE_IMAGE_SUPPORT="NO"
CL_DEVICE_IMAGE2D_MAX_WIDTH="0"
CL_DEVICE_IMAGE2D_MAX_HEIGHT="0"
@tormento
Please provide the contents of the debug file and the xml export of GPU Caps Viewer. Otherwise i can't help.
@all
I have uploaded version 0.1.2.
See the changelog in my first post for details.
@Didée
Version 0.1.2 should fix you error with the dots spread all over the screen! Can you give me feedback if this version works for you? Thanks.
TheRyuu
9th January 2011, 00:51
Getting a weird issue with regards to setting h = 1.0
Setting it to 1.0 will cause it to not work (gives error) but 0.9, 1.1 both work (any other value works I do believe).
Some tests someone I know did (credits to mirkosp):
nlmeanscl(h=1.0000001) <<< works
nlmeanscl(h=1.00000001) <<< gives error
nlmeanscl(h=1.00000006) <<< works
nlmeanscl(h=1.00000005) <<< gives error
Edit: more random stuff
nlmeanscl(h=1.0000000596046449899999990) <<< will work
nlmeanscl(h=1.000000059604644989999999) <<< gives error
19:14 < mirkosp> that's the limit, btw
Malcolm
9th January 2011, 01:30
Getting a weird issue with regards to setting h = 1.0Confirmed. It's a simple bug. Already fixed and will be gone with the next version.
tormento
9th January 2011, 11:35
Here you are. I noticed even GPU Caps Viewer crashes in CL test. An encoding is going now, I'll try to change drivers version ASAP and report you.
===================================================
GPU Caps Viewer v1.9.4
http://www.ozone3d.net/gpu_caps_viewer/
===================================================
===================================[ System / CPU ]
- CPU Name: Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz
- CPU Core Speed: 3600 MHz
- CPU Num Cores: 8
- Family: 6 - Model: 10 - Stepping: 4
- Physical Memory Size: 4087 MB
- Operating System: Windows 7 64-bit build 7600 [No Service Pack]
- DirectX Version: 10.0
- PhysX Version: 9100514
===================================[ Graphics Adapter / GPU ]
- SLI: disabled
- GPUs: 1
- Logical GPUs: 1
- OpenGL Renderer: GeForce GTX 460/PCI/SSE2
- Drivers Renderer: NVIDIA GeForce GTX 460
- DB Renderer: NVIDIA GeForce GTX 460
- Device Description:
- Adapter String: GeForce GTX 460
- Vendor: NVIDIA Corporation
- Vendor ID: 0x10DE
- Device ID: 0x0E22
- Sub device ID: 0x2381
- Sub vendor ID: 0x1462
- Drivers Version: 8.17.12.6590 (11-25-2010) - nvoglv64
- GPU Codename: GF104
- GPU Unified Shader Processors: 336
- GPU Vertex Shader Processors: 0
- GPU Pixel Shader Processors: 0
- TPD (Watts): 160
- Video Memory Size: 1024 MB
- Video Memory Type: GDDR5
- Clocks level #0: Core: 50MHz - Memory: 135MHz - Shader: 101MHz
- Clocks level #1: Core: 405MHz - Memory: 324MHz - Shader: 810MHz
- Clocks level #2: Core: 405MHz - Memory: 1950MHz - Shader: 810MHz
- Clocks level #3: Core: 811MHz - Memory: 1950MHz - Shader: 1622MHz
- BIOS String: 70.4.1b.0.2
- Current Display Mode: 1920x1080 @ 60 Hz - 32 bpp
===================================[ OpenGL GPU Capabilities ]
- OpenGL Version: 4.1.0
- GLSL (OpenGL Shading Language) Version: 4.10 NVIDIA via Cg compiler
- ARB Texture Units: 4
- Vertex Shader Texture Units: 32
- Pixel Shader Texture Units: 32
- Geometry Shader Texture Units: 32
- Max Texture Size: 16384x16384
- Max Anisotropic Filtering Value: X16.0
- Max Point Sprite Size: 63.4
- Max Dynamic Lights: 8
- Max Viewport Size: 16384x16384
- Max Vertex Uniform Components: 4096
- Max Fragment Uniform Components: 2048
- Max Geometry Uniform Components: 2048
- Max Varying Float: 60
- Max Vertex Bindable Uniforms: 12
- Max Fragment Bindable Uniforms: 12
- Max Geometry Bindable Uniforms: 12
- Frame Buffer Objects (FBO) Support:[yes]
- Multiple Render Targets / Max draw buffers: 8
- Pixel Buffer Objects (PBO) Support:[yes]
- S3TC Texture Compression Support:[yes]
- ATI 3Dc Texture Compression Support:[no]
- Texture Rectangle Support:[yes]
- Floating Point Textures Support:[yes]
- MSAA: 2X
- MSAA: 4X
- MSAA: 8X
- MSAA: 16X
- MSAA: 32X
- OpenGL Extensions: 245 extensions (GL=222 and WGL=23)
<li>GL_ARB_blend_func_extended</li>
<li>GL_ARB_color_buffer_float</li>
<li>GL_ARB_compatibility</li>
<li>GL_ARB_copy_buffer</li>
<li>GL_ARB_debug_output</li>
<li>GL_ARB_depth_buffer_float</li>
<li>GL_ARB_depth_clamp</li>
<li>GL_ARB_depth_texture</li>
<li>GL_ARB_draw_buffers</li>
<li>GL_ARB_draw_buffers_blend</li>
<li>GL_ARB_draw_indirect</li>
<li>GL_ARB_draw_elements_base_vertex</li>
<li>GL_ARB_draw_instanced</li>
<li>GL_ARB_ES2_compatibility</li>
<li>GL_ARB_explicit_attrib_location</li>
<li>GL_ARB_fragment_coord_conventions</li>
<li>GL_ARB_fragment_program</li>
<li>GL_ARB_fragment_program_shadow</li>
<li>GL_ARB_fragment_shader</li>
<li>GL_ARB_framebuffer_object</li>
<li>GL_ARB_framebuffer_sRGB</li>
<li>GL_ARB_geometry_shader4</li>
<li>GL_ARB_get_program_binary</li>
<li>GL_ARB_gpu_shader5</li>
<li>GL_ARB_gpu_shader_fp64</li>
<li>GL_ARB_half_float_pixel</li>
<li>GL_ARB_half_float_vertex</li>
<li>GL_ARB_imaging</li>
<li>GL_ARB_instanced_arrays</li>
<li>GL_ARB_map_buffer_range</li>
<li>GL_ARB_multisample</li>
<li>GL_ARB_multitexture</li>
<li>GL_ARB_occlusion_query</li>
<li>GL_ARB_occlusion_query2</li>
<li>GL_ARB_pixel_buffer_object</li>
<li>GL_ARB_point_parameters</li>
<li>GL_ARB_point_sprite</li>
<li>GL_ARB_provoking_vertex</li>
<li>GL_ARB_robustness</li>
<li>GL_ARB_sample_shading</li>
<li>GL_ARB_sampler_objects</li>
<li>GL_ARB_seamless_cube_map</li>
<li>GL_ARB_separate_shader_objects</li>
<li>GL_ARB_shader_bit_encoding</li>
<li>GL_ARB_shader_objects</li>
<li>GL_ARB_shader_precision</li>
<li>GL_ARB_shader_subroutine</li>
<li>GL_ARB_shading_language_100</li>
<li>GL_ARB_shading_language_include</li>
<li>GL_ARB_shadow</li>
<li>GL_ARB_sync</li>
<li>GL_ARB_tessellation_shader</li>
<li>GL_ARB_texture_border_clamp</li>
<li>GL_ARB_texture_buffer_object</li>
<li>GL_ARB_texture_buffer_object_rgb32</li>
<li>GL_ARB_texture_compression</li>
<li>GL_ARB_texture_compression_bptc</li>
<li>GL_ARB_texture_compression_rgtc</li>
<li>GL_ARB_texture_cube_map</li>
<li>GL_ARB_texture_cube_map_array</li>
<li>GL_ARB_texture_env_add</li>
<li>GL_ARB_texture_env_combine</li>
<li>GL_ARB_texture_env_crossbar</li>
<li>GL_ARB_texture_env_dot3</li>
<li>GL_ARB_texture_float</li>
<li>GL_ARB_texture_gather</li>
<li>GL_ARB_texture_mirrored_repeat</li>
<li>GL_ARB_texture_multisample</li>
<li>GL_ARB_texture_non_power_of_two</li>
<li>GL_ARB_texture_query_lod</li>
<li>GL_ARB_texture_rectangle</li>
<li>GL_ARB_texture_rg</li>
<li>GL_ARB_texture_rgb10_a2ui</li>
<li>GL_ARB_texture_swizzle</li>
<li>GL_ARB_timer_query</li>
<li>GL_ARB_transform_feedback2</li>
<li>GL_ARB_transform_feedback3</li>
<li>GL_ARB_transpose_matrix</li>
<li>GL_ARB_uniform_buffer_object</li>
<li>GL_ARB_vertex_array_bgra</li>
<li>GL_ARB_vertex_array_object</li>
<li>GL_ARB_vertex_attrib_64bit</li>
<li>GL_ARB_vertex_buffer_object</li>
<li>GL_ARB_vertex_program</li>
<li>GL_ARB_vertex_shader</li>
<li>GL_ARB_vertex_type_2_10_10_10_rev</li>
<li>GL_ARB_viewport_array</li>
<li>GL_ARB_window_pos</li>
<li>GL_ATI_draw_buffers</li>
<li>GL_ATI_texture_float</li>
<li>GL_ATI_texture_mirror_once</li>
<li>GL_S3_s3tc</li>
<li>GL_EXT_texture_env_add</li>
<li>GL_EXT_abgr</li>
<li>GL_EXT_bgra</li>
<li>GL_EXT_bindable_uniform</li>
<li>GL_EXT_blend_color</li>
<li>GL_EXT_blend_equation_separate</li>
<li>GL_EXT_blend_func_separate</li>
<li>GL_EXT_blend_minmax</li>
<li>GL_EXT_blend_subtract</li>
<li>GL_EXT_compiled_vertex_array</li>
<li>GL_EXT_Cg_shader</li>
<li>GL_EXT_depth_bounds_test</li>
<li>GL_EXT_direct_state_access</li>
<li>GL_EXT_draw_buffers2</li>
<li>GL_EXT_draw_instanced</li>
<li>GL_EXT_draw_range_elements</li>
<li>GL_EXT_fog_coord</li>
<li>GL_EXT_framebuffer_blit</li>
<li>GL_EXT_framebuffer_multisample</li>
<li>GL_EXTX_framebuffer_mixed_formats</li>
<li>GL_EXT_framebuffer_object</li>
<li>GL_EXT_framebuffer_sRGB</li>
<li>GL_EXT_geometry_shader4</li>
<li>GL_EXT_gpu_program_parameters</li>
<li>GL_EXT_gpu_shader4</li>
<li>GL_EXT_multi_draw_arrays</li>
<li>GL_EXT_packed_depth_stencil</li>
<li>GL_EXT_packed_float</li>
<li>GL_EXT_packed_pixels</li>
<li>GL_EXT_pixel_buffer_object</li>
<li>GL_EXT_point_parameters</li>
<li>GL_EXT_provoking_vertex</li>
<li>GL_EXT_rescale_normal</li>
<li>GL_EXT_secondary_color</li>
<li>GL_EXT_separate_shader_objects</li>
<li>GL_EXT_separate_specular_color</li>
<li>GL_EXT_shader_image_load_store</li>
<li>GL_EXT_shadow_funcs</li>
<li>GL_EXT_stencil_two_side</li>
<li>GL_EXT_stencil_wrap</li>
<li>GL_EXT_texture3D</li>
<li>GL_EXT_texture_array</li>
<li>GL_EXT_texture_buffer_object</li>
<li>GL_EXT_texture_compression_latc</li>
<li>GL_EXT_texture_compression_rgtc</li>
<li>GL_EXT_texture_compression_s3tc</li>
<li>GL_EXT_texture_cube_map</li>
<li>GL_EXT_texture_edge_clamp</li>
<li>GL_EXT_texture_env_combine</li>
<li>GL_EXT_texture_env_dot3</li>
<li>GL_EXT_texture_filter_anisotropic</li>
<li>GL_EXT_texture_integer</li>
<li>GL_EXT_texture_lod</li>
<li>GL_EXT_texture_lod_bias</li>
<li>GL_EXT_texture_mirror_clamp</li>
<li>GL_EXT_texture_object</li>
<li>GL_EXT_texture_shared_exponent</li>
<li>GL_EXT_texture_sRGB</li>
<li>GL_EXT_texture_swizzle</li>
<li>GL_EXT_timer_query</li>
<li>GL_EXT_transform_feedback2</li>
<li>GL_EXT_vertex_array</li>
<li>GL_EXT_vertex_array_bgra</li>
<li>GL_EXT_vertex_attrib_64bit</li>
<li>GL_IBM_rasterpos_clip</li>
<li>GL_IBM_texture_mirrored_repeat</li>
<li>GL_KTX_buffer_region</li>
<li>GL_NV_blend_square</li>
<li>GL_NV_conditional_render</li>
<li>GL_NV_copy_depth_to_color</li>
<li>GL_NV_copy_image</li>
<li>GL_NV_depth_buffer_float</li>
<li>GL_NV_depth_clamp</li>
<li>GL_NV_explicit_multisample</li>
<li>GL_NV_fence</li>
<li>GL_NV_float_buffer</li>
<li>GL_NV_fog_distance</li>
<li>GL_NV_fragment_program</li>
<li>GL_NV_fragment_program_option</li>
<li>GL_NV_fragment_program2</li>
<li>GL_NV_framebuffer_multisample_coverage</li>
<li>GL_NV_geometry_shader4</li>
<li>GL_NV_gpu_program4</li>
<li>GL_NV_gpu_program4_1</li>
<li>GL_NV_gpu_program5</li>
<li>GL_NV_gpu_program_fp64</li>
<li>GL_NV_gpu_shader5</li>
<li>GL_NV_half_float</li>
<li>GL_NV_light_max_exponent</li>
<li>GL_NV_multisample_coverage</li>
<li>GL_NV_multisample_filter_hint</li>
<li>GL_NV_occlusion_query</li>
<li>GL_NV_packed_depth_stencil</li>
<li>GL_NV_parameter_buffer_object</li>
<li>GL_NV_parameter_buffer_object2</li>
<li>GL_NV_pixel_data_range</li>
<li>GL_NV_point_sprite</li>
<li>GL_NV_primitive_restart</li>
<li>GL_NV_register_combiners</li>
<li>GL_NV_register_combiners2</li>
<li>GL_NV_shader_buffer_load</li>
<li>GL_NV_texgen_reflection</li>
<li>GL_NV_texture_barrier</li>
<li>GL_NV_texture_compression_vtc</li>
<li>GL_NV_texture_env_combine4</li>
<li>GL_NV_texture_expand_normal</li>
<li>GL_NV_texture_multisample</li>
<li>GL_NV_texture_rectangle</li>
<li>GL_NV_texture_shader</li>
<li>GL_NV_texture_shader2</li>
<li>GL_NV_texture_shader3</li>
<li>GL_NV_transform_feedback</li>
<li>GL_NV_transform_feedback2</li>
<li>GL_NV_vertex_array_range</li>
<li>GL_NV_vertex_array_range2</li>
<li>GL_NV_vertex_attrib_integer_64bit</li>
<li>GL_NV_vertex_buffer_unified_memory</li>
<li>GL_NV_vertex_program</li>
<li>GL_NV_vertex_program1_1</li>
<li>GL_NV_vertex_program2</li>
<li>GL_NV_vertex_program2_option</li>
<li>GL_NV_vertex_program3</li>
<li>GL_NVX_conditional_render</li>
<li>GL_NVX_gpu_memory_info</li>
<li>GL_SGIS_generate_mipmap</li>
<li>GL_SGIS_texture_lod</li>
<li>GL_SGIX_depth_texture</li>
<li>GL_SGIX_shadow</li>
<li>GL_SUN_slice_accum</li>
<li>GL_WIN_swap_hint</li>
<li>WGL_EXT_swap_control</li>
<li>WGL_ARB_buffer_region</li>
<li>WGL_ARB_create_context</li>
<li>WGL_ARB_create_context_profile</li>
<li>WGL_ARB_create_context_robustness</li>
<li>WGL_ARB_extensions_string</li>
<li>WGL_ARB_make_current_read</li>
<li>WGL_ARB_multisample</li>
<li>WGL_ARB_pbuffer</li>
<li>WGL_ARB_pixel_format</li>
<li>WGL_ARB_pixel_format_float</li>
<li>WGL_ARB_render_texture</li>
<li>WGL_ATI_pixel_format_float</li>
<li>WGL_EXT_create_context_es2_profile</li>
<li>WGL_EXT_extensions_string</li>
<li>WGL_EXT_framebuffer_sRGB</li>
<li>WGL_EXT_pixel_format_packed_float</li>
<li>WGL_NVX_DX_interop</li>
<li>WGL_NV_DX_interop</li>
<li>WGL_NV_float_buffer</li>
<li>WGL_NV_multisample_coverage</li>
<li>WGL_NV_render_depth_texture</li>
<li>WGL_NV_render_texture_rectangle</li>
===================================[ NVIDIA CUDA Capabilities ]
- CUDA Device 0
- Device name: GeForce GTX 460
- Compute Capability: 2.1
- Total Memory: 993 MB
- Shader Clock Rate: 1622 MHz
- Multiprocessors: 7
- Warp Size: 32
- Max Threads Per Block: 1024
- Threads Per Block: 1024 x 1024 x 64
- Grid Size: 65535 x 65535 x 1
- Registers Per Block: 32768
- Texture Alignment: 512 byte
- Total Constant Memory: 64 Kb
===================================[ OpenCL Capabilities ]
- Num OpenCL platforms: 1
- Name: NVIDIA CUDA
- Version: OpenCL 1.0 CUDA 3.2.1
- Profile: FULL_PROFILE
- Vendor: NVIDIA Corporation
- Num devices: 1
- CL_DEVICE_NAME: GeForce GTX 460
- CL_DEVICE_VENDOR: NVIDIA Corporation
- CL_DRIVER_VERSION: 265.90
- CL_DEVICE_PROFILE: FULL_PROFILE
- CL_DEVICE_VERSION: OpenCL 1.0 CUDA
- CL_DEVICE_TYPE: GPU
- CL_DEVICE_VENDOR_ID: 0x10DE
- CL_DEVICE_MAX_COMPUTE_UNITS: 7
- CL_DEVICE_MAX_CLOCK_FREQUENCY: 1622MHz
- CL_NV_DEVICE_COMPUTE_CAPABILITY_MAJOR: 2
- CL_NV_DEVICE_COMPUTE_CAPABILITY_MINOR: 1
- CL_NV_DEVICE_REGISTERS_PER_BLOCK: 32768
- CL_NV_DEVICE_WARP_SIZE: 32
- CL_NV_DEVICE_GPU_OVERLAP: 1
- CL_NV_DEVICE_KERNEL_EXEC_TIMEOUT: 1
- CL_NV_DEVICE_INTEGRATED_MEMORY: 0
- CL_DEVICE_ADDRESS_BITS: 32
- CL_DEVICE_MAX_MEM_ALLOC_SIZE: 254320KB
- CL_DEVICE_GLOBAL_MEM_SIZE: 993MB
- CL_DEVICE_MAX_PARAMETER_SIZE: 4352
- CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE: 128 Bytes
- CL_DEVICE_GLOBAL_MEM_CACHE_SIZE: 112KB
- CL_DEVICE_ERROR_CORRECTION_SUPPORT: NO
- CL_DEVICE_LOCAL_MEM_TYPE: Local (scratchpad)
- CL_DEVICE_LOCAL_MEM_SIZE: 48KB
- CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 64KB
- CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS: 3
- CL_DEVICE_MAX_WORK_ITEM_SIZES: [1024 ; 1024 ; 64]
- CL_DEVICE_MAX_WORK_GROUP_SIZE: 1024
- CL_EXEC_NATIVE_KERNEL: 4746436
- CL_DEVICE_IMAGE_SUPPORT: YES
- CL_DEVICE_MAX_READ_IMAGE_ARGS: 128
- CL_DEVICE_MAX_WRITE_IMAGE_ARGS: 8
- CL_DEVICE_IMAGE2D_MAX_WIDTH: 4096
- CL_DEVICE_IMAGE2D_MAX_HEIGHT: 32768
- CL_DEVICE_IMAGE3D_MAX_WIDTH: 2048
- CL_DEVICE_IMAGE3D_MAX_HEIGHT: 2048
- CL_DEVICE_IMAGE3D_MAX_DEPTH: 16
- CL_DEVICE_MAX_SAMPLERS: 16
- CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR: 1
- CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT: 1
- CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT: 1
- CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG: 1
- CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT: 1
- CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE: 1
- CL_DEVICE_EXTENSIONS: 16
- Extensions:
- cl_khr_byte_addressable_store
- cl_khr_icd
- cl_khr_gl_sharing
- cl_nv_d3d9_sharing
- cl_nv_d3d10_sharing
- cl_khr_d3d10_sharing
- cl_nv_d3d11_sharing
- cl_nv_compiler_options
- cl_nv_device_attribute_query
- cl_nv_pragma_unroll
-
- cl_khr_global_int32_base_atomics
- cl_khr_global_int32_extended_atomics
- cl_khr_local_int32_base_atomics
- cl_khr_local_int32_extended_atomics
- cl_khr_fp64
===================================[ Misc. ]
===================================[ Related Graphics Drivers ]
- http://www.geeks3d.com/?page_id=752
- http://downloads.guru3d.com/download.php?id=10
- http://www.tweakguides.com/NVFORCE_1.html
- http://www.nvidia.com/object/winxp-2k_archive.html
- http://www.geeks3d.com/?p=65
===================================[ Related Graphics Cards Reviews ]
- http://www.geeks3d.com/?tag=geforce-gtx-460
- http://www.google.us/search?q=NVIDIA+GeForce+GTX+460+review
Dogway
9th January 2011, 12:51
-Remember my post (http://forum.doom9.org/showpost.php?p=1468978&postcount=12)?
It was caused by source being non mod16. I made work a few images with mod4, but below mod16 performance. I havent checked video sources, but its something to look up.
-Also there are some aliasing issues on b>0 (less than tnlmeans but still)
-crashed on a 1280x688 (mod16) video source with this message (http://img510.imageshack.us/img510/8287/afag.png). (mkv through ffmpegsource) (Edit: problem was setting h<1.1 on v. 0.1.2)
tormento
9th January 2011, 18:51
Ok, updated to 266.44 drivers and works.
If only I could figure how to get a good value for parameters... They are a bit obscure to me.
For example, in a 1080p x264 encoding, what should I put to mimic SMDegrain (tr=3,thSAD=300,blksize=16,overlap=8) ? I suppose not... The temporal part is missing..
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.