View Full Version : KNLMeansCL: OpenCL NLMeans de-noising algorithm [2018-01-29]
Groucho2004
4th January 2015, 00:04
New: about 10% faster.
Hm, 0.3.3 is slower than 0.3.2 on my box (XP32Sp3, i5-2500K).
0.3.2:
Frames processed: 500 (0 - 499)
FPS (min | max | average): 13.46 | 14.19 | 13.80
CPU usage (average): 25%
GPU usage (average): 95%
Thread count: 8
Memory usage (phys | virt): 70 | 69 MB
Time (elapsed): 00:00:36.220
0.3.3:
Frames processed: 500 (0 - 499)
FPS (min | max | average): 11.24 | 11.84 | 11.58
CPU usage (average): 25%
GPU usage (average): 96%
Thread count: 8
Memory usage (phys | virt): 70 | 69 MB
Time (elapsed): 00:00:43.194
Script:
w = 1920
h = 1080
colorbars(width = w, height = h, pixel_type = "yv12").killaudio().assumefps(24000, 1001)
trim(0,499)
fadeio(248)
trim(0,499)
NLMeansCL2()
Khanattila
4th January 2015, 00:35
This is interesting.
(8.1, i5-2500k, GTX760)
0.3.3
Frames processed: 500 (0 - 499)
FPS (min | max | average): 65.31 | 73.17 | 69.65
CPU usage (average): 25%
GPU usage (average): 83%
Thread count: 8
Memory usage (phys | virt): 102 | 102 MB
Time (elapsed): 00:00:07.179
0.3.2
Frames processed: 500 (0 - 499)
FPS (min | max | average): 58.67 | 64.88 | 62.17
CPU usage (average): 25%
GPU usage (average): 85%
Thread count: 8
Memory usage (phys | virt): 102 | 102 MB
Time (elapsed): 00:00:08.043
Groucho2004
4th January 2015, 00:37
Did you use the same script? Also, which Avisynth version?
Khanattila
4th January 2015, 00:52
Did you use the same script? Also, which Avisynth version?
All the same.
Another test, with more GPU load.
0.3.3
Frames processed: 500 (0 - 499)
FPS (min | max | average): 22.21 | 27.08 | 25.67
CPU usage (average): 25%
GPU usage (average): 90%
Thread count: 8
Memory usage (phys | virt): 105 | 96 MB
Time (elapsed): 00:00:19.475
0.3.2
Frames processed: 500 (0 - 499)
FPS (min | max | average): 19.60 | 23.73 | 22.60
CPU usage (average): 25%
GPU usage (average): 93%
Thread count: 8
Memory usage (phys | virt): 105 | 97 MB
Time (elapsed): 00:00:22.129
script
ColorBars(1920, 1080, "YV12").killaudio().assumefps(24000, 1001)
trim(0,499)
fadeio(248)
trim(0,499)
NLMeansCL2(A=8)
The new code should reduce GPU load, and increase the overall performance.
Groucho2004
4th January 2015, 01:03
I have a GT240, obviously much slower than your card. Maybe the newer card has some optimizations that the GT240 does not have. Could also be a driver issue...
Note to self: Add GPU info to AVSMeter log.
Khanattila
4th January 2015, 12:42
I have a GT240, obviously much slower than your card. Maybe the newer card has some optimizations that the GT240 does not have. Could also be a driver issue...
Note to self: Add GPU info to AVSMeter log.
Can you repeat the test and share the complete log?
AMD C-60, HD6290, W8.1. I have no other platform.
0.3.3
Frames processed: 100 (0 - 99)
FPS (min | max | average): 1.613 | 1.747 | 1.687
CPU usage (average): 5%
GPU usage (average): 82%
Thread count: 1
Memory usage (phys | virt): 81 | 75 MB
Time (elapsed): 00:00:59.283
0.3.2
Frames processed: 100 (0 - 99)
FPS (min | max | average): 1.133 | 1.589 | 1.481
CPU usage (average): 4%
GPU usage (average): 75%
Thread count: 1
Memory usage (phys | virt): 80 | 75 MB
Time (elapsed): 00:01:07.511
script
w = 1920
h = 1080
colorbars(width = w, height = h, pixel_type = "yv12").killaudio().assumefps(24000, 1001)
trim(0,99)
fadeio(49)
trim(0,99)
NLMeansCL2()
http://pastebin.com/wtQfVknS
http://pastebin.com/euQqAXiQ
Groucho2004
4th January 2015, 13:04
Can you repeat the test and share the complete log?
0.3.2: http://pastebin.com/tzqZZP35
Frames processed: 100 (0 - 99)
FPS (min | max | average): 13.32 | 14.15 | 13.79
CPU usage (average): 25%
GPU usage (average): 96%
Thread count: 8
Memory usage (phys | virt): 67 | 66 MB
Time (elapsed): 00:00:07.250
0.3.3: http://pastebin.com/xYwGcK7k
Frames processed: 100 (0 - 99)
FPS (min | max | average): 11.24 | 11.80 | 11.57
CPU usage (average): 25%
GPU usage (average): 91%
Thread count: 8
Memory usage (phys | virt): 67 | 66 MB
Time (elapsed): 00:00:08.646
WinXPSP3, i5-2500K @ 4GHz, GT240, Driver: 310.90
Khanattila
4th January 2015, 14:38
Maybe it is a problem due to the driver. There are some problems reported with 310.90.
Groucho2004
4th January 2015, 16:27
Maybe it is a problem due to the driver. There are some problems reported with 310.90.
I tried with the latest driver, same thing.
Could it be the OpenCL version (see below Aida64 report)?
OpenCL Properties:
Platform Name NVIDIA CUDA
Platform Vendor NVIDIA Corporation
Platform Version OpenCL 1.1 CUDA 6.5.12
Platform Profile Full
Device Properties:
Device Name GeForce GT 240
GPU Code Name GT215
Device Type GPU
Device Vendor NVIDIA Corporation
Device Version OpenCL 1.0 CUDA
Device Profile Full
Driver Version 340.52
OpenCL C Version OpenCL C 1.1
Khanattila
4th January 2015, 19:19
Device Version OpenCL 1.0 CUDA
According to khronos API:
If the -cl-std build option is not specified, the CL_DEVICE_OPENCL_C_VERSION is used to select the version of OpenCL C to be used when building the program executable for each device.
Possible the same source code generate different machine code. In this case slower.
(-cl-std=CL1.0 is not allowed)
Groucho2004
4th January 2015, 20:05
Device Version OpenCL 1.0 CUDA
According to khronos API:
If the -cl-std build option is not specified, the CL_DEVICE_OPENCL_C_VERSION is used to select the version of OpenCL C to be used when building the program executable for each device.
Possible the same source code generate different machine code. In this case slower.
(-cl-std=CL1.0 is not allowed)
I believe that "CL_DEVICE_OPENCL_C_VERSION" refers to "OpenCL C Version" which in my case is "OpenCL C 1.1".
Khanattila
4th January 2015, 23:15
I believe that "CL_DEVICE_OPENCL_C_VERSION" refers to "OpenCL C Version" which in my case is "OpenCL C 1.1".
But your device only support OpenCL 1.0, so I guess some instructions are downgrade for backward compatibility.
In a OpenCL program the kernel (the problem to be solved) is compiled just before running.
Probably I used some instruction OpenCL 1.1.
Khanattila
5th January 2015, 00:21
Edit.
Groucho2004
5th January 2015, 00:45
032:
Frames processed: 500 (0 - 499)
FPS (min | max | average): 13.51 | 14.27 | 13.86
CPU usage (average): 25%
GPU usage (average): 95%
Thread count: 8
Memory usage (phys | virt): 74 | 73 MB
Time (elapsed): 00:00:36.062
034 (legacy = true):
Frames processed: 500 (0 - 499)
FPS (min | max | average): 13.52 | 14.26 | 13.86
CPU usage (average): 25%
GPU usage (average): 95%
Thread count: 8
Memory usage (phys | virt): 90 | 88 MB
Time (elapsed): 00:00:36.063
So, performance is identical to 0.3.2 but the memory usage is a tiny bit higher.
Khanattila
8th January 2015, 16:15
Edit.
Groucho2004
8th January 2015, 17:10
0.4.0 does not work with my card (GT240) any more, whether I specify "legacy = true" or not:
[clBuildProgram (CL_BUILD_PROGRAM_FAILURE)]
I guess that's by design? :(
Khanattila
8th January 2015, 18:03
0.4.0 does not work with my card (GT240) any more, whether I specify "legacy = true" or not:
[clBuildProgram (CL_BUILD_PROGRAM_FAILURE)]
I guess that's by design? :(
OpenCL, NVIDIA and portability, can not be together :mad:
Please use this plugin that generates a debug file, link.
EDIT.
Groucho2004
8th January 2015, 18:23
Please use this plugin that generates a debug file, link (http://www.mediafire.com/download/j241ytqleqjv8id/NLMeansCL2.dll).
Log file:
"Language version specified by -cl-std is greater than the language version supported by the device!"
Khanattila
8th January 2015, 18:59
Log file:
"Language version specified by -cl-std is greater than the language version supported by the device!"
Fixed, just re-download.
If the -cl-std build option is not specified, the CL_DEVICE_OPENCL_C_VERSION is used to select the version of OpenCL C to be used when building the program executable for each device.
Thanks Nvidia.
In this version (0.4.0) I have specified -cl-std 1.1 because AMD support OpenCL >1.2 and could create problems. With legacy = true this check is now disabled.
Groucho2004
8th January 2015, 19:06
Fixed, just re-download.
Works, thanks!
Just to confirm - Memory consumption is lower than with the last version (0.3.4)
Groucho2004
9th January 2015, 23:33
This has been asked before in this thread a couple of times - any plans to implement temporal mode?
Khanattila
10th January 2015, 12:59
This has been asked before in this thread a couple of times - any plans to implement temporal mode?
First I have to solve a performance problem with B > 1 or 2.
Problem size is := [-Ax, ..., Ax] x [-Ay, ..., Ay] x [-Dpast, ..., Dfuture].
So Az=1 (three frame processing) is three times slower.
EDIT.
B = 0, 13.48 FPS //correct
B = 1, 41.38 FPS //correct
B = 2, 47.82 FPS //wrong, expected ~67 FPS
B = 3, 24.01 FPS //wtf???
Pulp Catalyst
28th February 2015, 15:59
could anyone recommend a default that will give be a ultralight kind of setting, i only want the bare minimum, my aim is so the original source will be affected so lightly that it will not be detected by the naked eye, i've been using the ultralight setting on Handbrake (vidcoder i use), but i don 't know the config parameters of course they use. (the strength value is very low though, and surprisingly still give very pleasing results as a generic profile)
if anyone can suggest recommended values and possible an example NLMeansCL2(????), that would be great.
Thanks,
p.s i really hope that a gpu version of this gets ported over to handbrake though one day.... the cpu version is so SLOWWWWW lol
Khanattila
10th March 2015, 16:33
could anyone recommend a default that will give be a ultralight kind of setting, i only want the bare minimum, my aim is so the original source will be affected so lightly that it will not be detected by the naked eye, i've been using the ultralight setting on Handbrake (vidcoder i use), but i don 't know the config parameters of course they use. (the strength value is very low though, and surprisingly still give very pleasing results as a generic profile)
if anyone can suggest recommended values and possible an example NLMeansCL2(????), that would be great.
Thanks,
p.s i really hope that a gpu version of this gets ported over to handbrake though one day.... the cpu version is so SLOWWWWW lol
Handbrake's nlmeans it's very different:
1) use a temporal search;
2) use a median filter (3x3 / 5x5);
3) use a edge mask;
4) other.
Normally, NLMeans2CL(A=4, S=2, B=1, h=1.3) is light enough.
Pulp Catalyst
11th March 2015, 04:39
NLMeansCL2(A=4, S=2, B=1, h=1.3, device_type="GPU")
I'm giving it a try, thanks for the feedback.
I did not realize the handbrake NLMeans was so different, is there version more mature than this one (has more features)?
I also hope for the day when i can insert this version into QTGMC .... Wink Wink.
feisty2
11th March 2015, 08:59
I'm giving it a try, thanks for the feedback.
I did not realize the handbrake NLMeans was so different, is there version more mature than this one (has more features)?
I also hope for the day when i can insert this version into QTGMC .... Wink Wink.
TNLMeans got a temporal mode but it's sloooooooow like hell and no support for high bitdepth
Stereodude
21st March 2015, 16:57
What is the expected behavior if the arguments passed to NLmeanCL2 require more resources (VRAM?) than the OpenCL device has?
I was trying to run this script suggested in this thread (http://forum.doom9.org/showthread.php?t=171942) on a FHD source.
nlmeanscl2(a=10,b=0,s=4,lsb_inout=true,h=4.8,aa=3.2, device_type="GPU", info=true)
With both the Intel HD 4600 (i7-4770k) and Nvidia GT440 (1gB) the graphics driver crashes (momentary black screen followed by a message in the system tray about it).
This message is returned to the application by AVIsynth
NLMeansCL2: Houston, we've had a problem!
[clCreateContext (CL_OUT_OF_RESOURCES)]
If I just use a NLMeansCL2 call of
nlmeanscl2(device_type="GPU", info=true)
it works fine.
I'm running Windows 7 x64 w/ 16gB of RAM and have the latest drivers on both the GT440 and the HD4600.
Khanattila
1st April 2015, 09:32
What is the expected behavior if the arguments passed to NLmeanCL2 require more resources (VRAM?) than the OpenCL device has?
I was trying to run this script suggested in this thread (http://forum.doom9.org/showthread.php?t=171942) on a FHD source.
nlmeanscl2(a=10,b=0,s=4,lsb_inout=true,h=4.8,aa=3.2, device_type="GPU", info=true)
With both the Intel HD 4600 (i7-4770k) and Nvidia GT440 (1gB) the graphics driver crashes (momentary black screen followed by a message in the system tray about it).
This message is returned to the application by AVIsynth
NLMeansCL2: Houston, we've had a problem!
[clCreateContext (CL_OUT_OF_RESOURCES)]
If I just use a NLMeansCL2 call of
nlmeanscl2(device_type="GPU", info=true)
it works fine.
I'm running Windows 7 x64 w/ 16gB of RAM and have the latest drivers on both the GT440 and the HD4600.
Please, use GPU Caps Viewer: http://www.geeks3d.com/20150127/gpu-caps-viewer-1-23-0-released/
I need some more info. Most likely your system does not have enough video memory.
Validation => Submit. Get a link like that: http://www.ozone3d.net/gpudb/gpu.php?which=49098&v=2
Stereodude
4th April 2015, 14:11
Please, use GPU Caps Viewer: http://www.geeks3d.com/20150127/gpu-caps-viewer-1-23-0-released/
I need some more info. Most likely your system does not have enough video memory.
Validation => Submit. Get a link like that: http://www.ozone3d.net/gpudb/gpu.php?which=49098&v=2
Here you go. http://www.ozone3d.net/gpudb/gpu.php?which=49162&v=2
Mangix
7th April 2015, 18:31
Latest Nvidia drivers support OpenCL 1.2. Any performance benefits?
Khanattila
12th April 2015, 19:06
Latest Nvidia drivers support OpenCL 1.2. Any performance benefits?
Nvidia seems to don't like OpenCL, maybe because of CUDA.
OpenCL 1.2 / 1.1 API are different. The plugin should be rewritten to exploit all.
EDIT. OpenCL 1.2 was presented on November 15, 2011.
Atak_Snajpera
14th April 2015, 11:51
What are your thoughts about opencl 2.0? AMD has just added support in latest drivers.
Khanattila
17th April 2015, 18:17
What are your thoughts about opencl 2.0? AMD has just added support in latest drivers.
Is a compatibility issue. I'd like to use OpenCL 2.0, but I can't.
To achieve the maximum diffusion I have to use OpenCL 1.1.
NVIDIA CUDA Toolkit v7.0 can't stand even OpenCL 1.2. (http://developer.download.nvidia.com/compute/cuda/7_0/Prod/doc/CUDA_Toolkit_Release_Notes.pdf) (http://developer.download.nvidia.com/compute/cuda/7_0/Prod/doc/CUDA_Toolkit_Release_Notes.pdf)
I don't want to build two different versions. I hope so.
Khanattila
17th April 2015, 18:24
Here you go. http://www.ozone3d.net/gpudb/gpu.php?which=49162&v=2
Sorry for the late response.
Probably a big "A" use too much private/local memory for yor GPU.
(GPU have 3 three different memories: private memory, local memory, global memory. Where private is the faster and global is the bigger.)
Please reduce the value of A.
Khanattila
17th April 2015, 18:28
Probably this week I will release a new version of NLMeansCL2.
Since it will be a major change, for now I'll call it NLMeansCL2b().
So you can keep both versions.
Khanattila
21st April 2015, 10:56
NLMeansCL2b (
clip src,
int D (0), // Temporal windows, disabled in Beta 1
int A (4), // Search window
int S (2), // Similarity neighborhood window
int B (0), // Base window
int wmode (1), // Weighting function
float h (1.8), // Strength of the filtering
string device_type ("default"),
int y (3),
int u (2),
int v (2),
bool lsb_inout (false),
bool info (false)
)
Little explanation:
[wmode = 0] Cauchy weighting function has a very slow decay.
It assign larger weights to dissimilar blocks than the Leclerc
robust function, which will eventually lead to oversmoothing.
[wmode = 1] Leclerc weighting function has a faster decay,
but still assigns positive weights to dissimilar blocks. Original
NLMeans weighting function.
[wmode = 2] Bisquare weighting function use a soft threshold.
Download: removed.
################
New:
Temporal windows search (disabled in Beta1).
Cauchy weighting function.
Bisquare weighting function.
Removed:
Ay, Sy and By arguments.
aa argument (simple Euclidean distance).
sse argument (replaced by wmode).
legacy kernel.
Changed:
Patchwise Implementation
Euclidean distance
Updated:
NVIDIA CUDA Toolkit v7.0.
AVS 2.6.0 RC 2 [150331].
Reel.Deel
21st April 2015, 18:52
Hi Khanattila, thanks for the update! I tried using NLMeansCL2b with AviSynth+ r1576 on my work computer but I got this error message: "Plugin was designed for a later version of Avisynth (6)"
I updated to r1779 and it works with that version. Was that intentional or is there something else going on? If so will this also be true for anyone using an older version before AviSynth 2.6 R2?
Khanattila
21st April 2015, 19:56
Hi Khanattila, thanks for the update! I tried using NLMeansCL2b with AviSynth+ r1576 on my work computer but I got this error message: "Plugin was designed for a later version of Avisynth (6)"
I updated to r1779 and it works with that version. Was that intentional or is there something else going on? If so will this also be true for anyone using an older version before AviSynth 2.6 R2?
Hi! Avisynth 2.6.0 has many bug fixes and improvements. It is a good idea to upgrade. For this I forced users to use an updated version. However, I do not know how Avisynth+ works.
Version 6 is 2.6.0.
Version 5 is 2.6.0a1-a5.
Version 4 is reserved.
Version 3 is 2.5.6.
StainlessS
21st April 2015, 21:38
I think there were multiple versions of Avisynth Header VERSION 5, a change was made to the header at some point which made plugins compiled with it
require Avisynth versionv2.6 Alpha 4+. The previous to current version of ClipClop plugin crashed on Avisynth v2.6a3 and previous
(as with other plugins, immediately at startup).
Groucho2004
21st April 2015, 22:41
I think there were multiple versions of Avisynth Header VERSION 5, a change was made to the header at some point which made plugins compiled with it
require Avisynth versionv2.6 Alpha 4+.
I think you're getting this mixed up with the introduction of "AVS_linkage" in 2.6 Alpha4.
As for the "AVISYNTH_INTERFACE_VERSION":
"3" : 2.5.x
"5" : 2.6.0 < RC1
"6" : 2.6.0 >= RC1
As for AVS+, the lastest builds (r17xx) have the header updated to v6.
StainlessS
22nd April 2015, 03:18
Guilty as charged M'lud :)
Khanattila
27th April 2015, 18:39
KNLMeansCL (
clip src,
int D (0), // Temporal window
int A (4), // Search window
int S (2), // Similarity neighborhood window
int wmode (1), // Weighting function
float h (1.8), // Strength of the filtering
string device_type ("default"),
bool lsb_inout (false),
bool info (false)
)
Changelog
v0.5.0 Beta2 (2015-04-27)
- New: Temporal windows search.
- New: Cauchy weighting function.
- New: Bisquare weighting function.
- Changed: plugin name!
- Changed: now process always luminace (y).
- Changed: simple Euclidean distance.
- Changed: sse argument, replaced by wmode.
- Removed: u and v arguments.
- Removed: Ay and Sy.
- Removed: patchwise Implementation.
- Removed: aa argument.
- Removed: legacy kernel.
- Updated: NVIDIA CUDA Toolkit v7.0.
- Updated: AVS 2.6.0 RC 2 [150331].
Groucho2004
27th April 2015, 22:14
KNLMeansCL (
clip src,
int D (0), // Temporal window
int A (4), // Search window
int S (2), // Similarity neighborhood window
int wmode (1), // Weighting function
float h (1.8), // Strength of the filtering
string device_type ("default"),
bool lsb_inout (false),
bool info (false)
)
Changelog
v0.5.0 Beta2 (2015-04-27)
- New: Temporal windows search.
- New: Cauchy weighting function.
- New: Bisquare weighting function.
- Changed: plugin name!
- Changed: now process always luminace (y).
- Changed: simple Euclidean distance.
- Changed: sse argument, replaced by wmode.
- Removed: u and v arguments.
- Removed: Ay and Sy.
- Removed: patchwise Implementation.
- Removed: aa argument.
- Removed: legacy kernel.
- Updated: NVIDIA CUDA Toolkit v7.0.
- Updated: AVS 2.6.0 RC 2 [150331].
Download: KNLMeansCL_v0.5_Beta2 (http://www.mediafire.com/download/7iubuq00u1vl2qj/KNLMeansCL_v.0.5_Beta2.dll).
Thanks for this new version. I suppose the default for "D" (0) disables temporal operation? I get a huge performance hit when I set it to "1" which I guess is normal.
I really like this filter and I think I have to consider upgrading from my old GT240.
So, how about running a simple benchmark to see how various video cards fare? I'm thinking something like this:
colorbars(width = 1280, height = 720, pixel_type = "yv12").killaudio().assumefps(24000, 1001)
trim(0,99)
fadeio(48)
trim(0,99)
KNLMeansCL(D = 1)
Running this script through AVSMeter (-log -gpu), I get these results:
[Runtime info]
Frames processed: 100 (0 - 99)
FPS (min | max | average): 1.421 | 1.452 | 1.448
Memory usage (phys | virt): 44 | 43 MB
Thread count: 8
CPU usage (average): 25%
GPU usage (average): 99%
Video engine load (average): 0%
GPU memory usage: 67 MB
Time (elapsed): 00:01:09.051
[Graphics card info]
Card name: NVIDIA GeForce GT 240
GPU name: GT215
Memory size: 512
OpenCL version: OpenCL 1.0 CUDA
Driver version: 6.14.13.4052 (ForceWare 340.52) / XP
Khanattila
28th April 2015, 00:31
D is the number of past and future frame that the filter uses for denoising the current frame.
D = 0, only current frame (n).
D = 1, use n - 1, n, n + 1.
D = 2, use n - 2, n - 1, n, n + 1, n + 2.
etc.
D = 0 also exploit the symmetry property of the weights, i.e. w(p, p + q) = w(p + q, p). But this requires an accumulation buffer, probably in an old GPU makes performance down.
(Symmetry is also possible in temporal but requires too many check).
KNLMeansCL(D = 0)
[Runtime info]
Frames processed: 100 (0 - 99)
FPS (min | max | average): 27.89 | 45.95 | 43.44
CPU usage (average): 24%
GPU usage (average): 73%
Thread count: 8
Memory usage (phys | virt): 60 | 75 MB
Time (elapsed): 00:00:02.302
KNLMeansCL(D = 1)
[Runtime info]
Frames processed: 100 (0 - 99)
FPS (min | max | average): 6.984 | 7.730 | 7.598
CPU usage (average): 25%
GPU usage (average): 94%
Thread count: 8
Memory usage (phys | virt): 63 | 77 MB
Time (elapsed): 00:00:13.161
KNLMeansCL(D = 2)
[Runtime info]
Frames processed: 100 (0 - 99)
FPS (min | max | average): 4.368 | 4.653 | 4.587
CPU usage (average): 25%
GPU usage (average): 95%
Thread count: 8
Memory usage (phys | virt): 64 | 79 MB
Time (elapsed): 00:00:21.799
EDIT.
Computational complexity: ((2 * A + 1) * (2 * A +1) * (2 * D + 1) - 1) / (D ? 1 : 2)
Groucho2004
28th April 2015, 01:25
I suppose you used the GTX760 for these measurements?
Khanattila
28th April 2015, 11:53
I suppose you used the GTX760 for these measurements?
[Graphics card info]
Card name: NVIDIA GeForce GTX 760
GPU name: GK104
Memory size: 2048
OpenCL version: OpenCL 1.2 CUDA
Driver version: 9.18.13.5012 WHQL (ForceWare 350.12) / Win8.1 64
EDIT.
Would you try this?
- 720x480. KNLMeansCL(0, 2, 1)
- 720x480. KNLMeansCL(0, 3, 1)
- 720x480. KNLMeansCL(0, 5, 1)
Original 9600 GT take: 100.00 FPS / 52.46 FPS / 18.46 FPS.
(B. Goossens, H.Q. Luong, J. Aelterman, A. Pizurica, and W. Philips,
"A GPU-Accelerated Real-Time NLMeans Algorithm for Denoising Color Video Sequences",
in Proc. ACIVS (2), 2010, pp.46-57. )
Groucho2004
28th April 2015, 12:19
Would you try this?
- 720x480. KNLMeansCL(0, 2, 1)
- 720x480. KNLMeansCL(0, 3, 1)
- 720x480. KNLMeansCL(0, 5, 1)
Original 9600 GT take: 100.00 FPS / 52.46 FPS / 18.46 FPS.
colorbars(width = 720, height = 480, pixel_type = "yv12").killaudio().assumefps(24000, 1001)
trim(0,99)
fadeio(48)
trim(0,99)
KNLMeansCL(0, x, 1) #x = 2, 3, 5
GT 240: 77 FPS / 40 FPS / 16.5 FPS.
How can this be? The 9600 is ancient.
Khanattila
28th April 2015, 14:15
colorbars(width = 720, height = 480, pixel_type = "yv12").killaudio().assumefps(24000, 1001)
trim(0,99)
fadeio(48)
trim(0,99)
KNLMeansCL(0, x, 1) #x = 2, 3, 5
GT 240: 77 FPS / 40 FPS / 16.5 FPS.
How can this be? The 9600 is ancient.
Code is not fully optimized... but about is the same card: http://www.tomshardware.com/reviews/geforce-gt-240,2475-5.html
Khanattila
30th April 2015, 10:35
Beta2 Beta3
S=0 59.05 FPS 52.44 FPS -11%
S=1 47.35 FPS 51.82 FPS + 9%
S=2 43.99 FPS 51.43 FPS +17%
S=3 38.88 FPS 50.39 FPS +30%
S=4 36.89 FPS 49.20 FPS +33%
Ready for the final release.
Groucho2004
30th April 2015, 21:18
KNLMeansCL_v.0.5_Beta3.dll (http://www.mediafire.com/download/yi78j1ad21nhrxq/KNLMeansCL_v.0.5_Beta3.dll)
I'm getting an error with this version:
[build_programm (CL_BUILD_PROGRAM_FAILURE)]
Also, a text file ("KNLMeansCL.txt") is created with this content:
"error: macro 'V_BLOCK_Y' contains embedded newline, text after the newline is ignored."
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.