Log in

View Full Version : KNLMeansCL: OpenCL NLMeans de-noising algorithm [2018-01-29]


Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

Khanattila
12th May 2016, 18:46
May I ask the best settings for removing film grain?

Thanks


Sent from my iPhone using Tapatalk

No best settings ever.

The main parameters are three:
-'d' and 'a', which control the quality of de-noising;
-'h', which controls the strength of de-noising.

Default 'd' and 'a' are good compromise between performance and quality.
Set 'h' accordingly.

Magik Mark
30th May 2016, 00:44
For multiple GPUs, is there a way to direct knlmeans to use GPU 1 or GPU 2?

poisondeathray
30th May 2016, 00:50
For multiple GPUs, is there a way to direct knlmeans to use GPU 1 or GPU 2?

Read doc
https://github.com/Khanattila/KNLMeansCL/blob/master/DOC.md

device_id=0
device_id=1
.
.
.

Khanattila
2nd June 2016, 00:17
The procedure is also valid for multiple CPUs.

Bloax
2nd June 2016, 01:52
Hmm, would that mean that to fully utilize both GPUs you'd do
a = SelectEven()
b = SelectOdd()
Interleave(a.KNLMeansCL(blahblah,device_id=0),b.KNLMeansCL(blahblah,device_id=1))
? ;)

MysteryX
2nd June 2016, 04:10
Hmm, would that mean that to fully utilize both GPUs you'd do
a = SelectEven()
b = SelectOdd()
Interleave(a.KNLMeansCL(blahblah,device_id=0),b.KNLMeansCL(blahblah,device_id=1))
? ;)
In this case, temporal denoising might not give the expected result.

I just did a test. Using a single device, I get 24.03fps. With both devices, I get 23.68fps. It degrades performance. The bottleneck is memory transfers from the GPU, and it appears the memory bottleneck is shared between both devices.

asarian
2nd June 2016, 11:16
KNLMeansCL seems to hang my QTGMC process. I installed Intel OpenCL drivers for Core processors (this is a for a Vmware box; without them, KNLMeansCL just fails to load). QTGMC keeps burning my CPU at 99%, but never outputs anything any more to x264.

What am I missing here?!

asarian
2nd June 2016, 11:54
In this case, temporal denoising might not give the expected result.

I just did a test. Using a single device, I get 24.03fps. With both devices, I get 23.68fps. It degrades performance. The bottleneck is memory transfers from the GPU, and it appears the memory bottleneck is shared between both devices.

Might be interesting for x264, though (as in letting VS use your GTX 980, or whatever, and then let x264 use --OpenCL with the 'onboard' CPU Haswell OpenCL engine).

asarian
2nd June 2016, 12:17
KNLMeansCL seems to hang my QTGMC process. I installed Intel OpenCL drivers for Core processors (this is a for a Vmware box; without them, KNLMeansCL just fails to load). QTGMC keeps burning my CPU at 99%, but never outputs anything any more to x264.

What am I missing here?!

^^ Actually, it doesn't hang, it's just 10,000x slower than GPU:

[0.0%] 1/154656 frames, 0.00 fps, 34471.19 kb/s, eta 22792:09:06

That can't be right.

asarian
2nd June 2016, 13:13
^^ Please, someone?! No way my i7 980X is 10,000x slower than my GPU! Has anyone else tried KNLMeansCL on 'CPU' only? (via QTGMC)

Magik Mark
2nd June 2016, 13:40
Knlmeans is extremely slow when used through CPU. It is however a very good denoiser. If you regularly encode videos, you might as well invest in Pascal GPU


Sent from my iPhone using Tapatalk

Groucho2004
2nd June 2016, 13:48
^^ Please, someone?! No way my i7 980X is 10,000x slower than my GPU! Has anyone else tried KNLMeansCL on 'CPU' only? (via QTGMC)
I did some speed comparisons (http://forum.doom9.org/showthread.php?p=1739321#post1739321) a while ago.

asarian
2nd June 2016, 20:44
I did some speed comparisons (http://forum.doom9.org/showthread.php?p=1739321#post1739321) a while ago.

Yikes! Your tests show GPU is about 83 times faster! So, a job which would normally cost me ~24 hours, now will take 1,992 hours! (Aka, 83 days)

That means, for all purposes and intent, I won't be able to use KNLMeansCL any more on my VM. :( Sigh. And the whole idea was to offload the rendering a bit to my server.

Thanks for the reply, though.

asarian
2nd June 2016, 20:47
Knlmeans is extremely slow when used through CPU. It is however a very good denoiser. If you regularly encode videos, you might as well invest in Pascal GPU

This is for my server. Not going to put a GTX 1080 in it. :)

Groucho2004
2nd June 2016, 21:31
This is for my server. Not going to put a GTX 1080 in it. :)I'm pretty sure that nowadays you'll get about the same speed as the GTX750 with a cheap(ish) Nvidia or AMD card for ~70-100 bucks. Or, if you go cheaper, half that speed which is still 40 times faster than the CPU.

asarian
2nd June 2016, 21:37
I'm pretty sure that nowadays you'll get about the same speed with a cheap(ish) Nvidia or AMD card for ~70-100 bucks. Or, if you go cheaper, half that speed which is still 40 times faster than the CPU.


Then that is really what I may have to do. :) Thx. An 80 days rendering job is simply undoable; and I've really come to love KNLMeansCL.

I'll check for a card that can reasonably do it *and* can be made to be pass-thru to ESXi 6.

MysteryX
3rd June 2016, 02:47
I'm pretty sure that nowadays you'll get about the same speed as the GTX750 with a cheap(ish) Nvidia or AMD card for ~70-100 bucks. Or, if you go cheaper, half that speed which is still 40 times faster than the CPU.
I'm wondering something about GPU memory transfers. According to my tests, on my dual-graphics system, I'm getting the same performance, and perhaps even very slightly faster performance with Intel HD 4000 than with the Radeon 7670M.

Since the bottleneck is memory transfers back from the GPU, do you get better performance from a GTX750 than with a regular card? Do dedicated graphic cards have higher transfer bandwidth than in a dual-graphics laptop?

Groucho2004
3rd June 2016, 08:42
Since the bottleneck is memory transfers back from the GPU
Do you have data to back that up that statement? How did you test it?

asarian
3rd June 2016, 09:08
Do you have data to back that up that statement? How did you test it?


Why would 'memory transfers back from the GPU' play into this at all, I wonder?! Way I figure this, is that 99% (made-up internet number) of the whole operation consists of the GPU actually doing the OpenCL computations, and that the remaining 1% is used to send back some numbers as a result, no?

Even under 'regular' SLI conditions, with real memory transfers, during gaming and such, running at 8 lanes hardly makes any difference. So, unless I completely misunderstood the process, I have a hard time grasping how OpenCL computations, done on the GPU, could cause such wicked memory transfers as to slow things down with 2 GPU's. But I'd love to learn. :)

Groucho2004
3rd June 2016, 09:31
Way I figure this, is that 99% (made-up internet number) of the whole operation consists of the GPU actually doing the OpenCL computations, and that the remaining 1% is used to send back some numbers as a result, no?
That's what I'm thinking. I'm sure the author can enlighten us.

MysteryX
3rd June 2016, 11:54
Script:
colorbars(width = 640, height = 480, pixel_type = "yv12").killaudio().assumefps(25, 1).trim(0, 399)
KNLMeansCL(device_type = "CPU")


Just for kicks, here is the result with the same script and my GTX750:

colorbars(width = 640, height = 480, pixel_type = "yv12").killaudio().assumefps(25, 1).trim(0, 399)
KNLMeansCL(device_type = "GPU")

FPS (min | max | average): 242.3 | 285.2 | 283.4
Memory usage (phys | virt): 59 | 77 MB
Thread count: 8
CPU usage (average): 25%
GPU usage (average): 91%
Video engine load (average): 0%
GPU memory usage: 56 MB


Here are my results on a dual-graphics Intel HD 4000 and Radeon 7670M

device_id=0

Frames processed: 400 (0 - 399)
FPS (min | max | average): 9.251 | 17.47 | 13.19
Memory usage (phys | virt): 58 | 97 MiB
Thread count: 12
CPU usage (average): 11%

GPU usage (average): 75%


device_id=1

Frames processed: 400 (0 - 399)
FPS (min | max | average): 8.078 | 14.27 | 11.13
Memory usage (phys | virt): 47 | 99 MiB
Thread count: 12
CPU usage (average): 5%

GPU usage (average): 0% (GPU-Z fails to detect)
GPU memory usage (Dedicated): 9 MiB
GPU memory usage (Dynamic): 6 MiB


It appears that a dedicated card is MUCH better than a dual-graphics system in terms of memory transfer bandwidth!!

It appears that it first transfers to the Intel and then forwards to the Radeon; and the bandwidth is limited to the Intel card's bandwidth.

Groucho2004
3rd June 2016, 12:06
It's still a Mystery(X) to me how you derive your memory bottleneck conclusion from these numbers. You're comparing apples and hamster droppings. The GTX750 is at least 20 times faster using OpenCL than the cards you tested. Tip: Google OpenCL benchmark comparisons.

asarian
3rd June 2016, 12:29
It appears that it first transfers to the Intel and then forwards to the Radeon; and the bandwidth is limited to the Intel card's bandwidth.

Or OpenCL calls simply aren't parallel enough to process responses from multiple GPU's at the same time.

Not exactly sure how KNLMeansCL implemented calls to multiple GPU's (or that you could even process the results asynchroneously in a meaningful fashion), but I suspect the results wind up more serialized than we'd hoped for. :)

I'd be curious to hear what the author has to say about this.

MysteryX
3rd June 2016, 15:35
I know for a fact that with AviSynthShader, the performance almost doubles when returning 8-bit data instead of 16-bit data after all the processing is done.

As for benchmarks
http://www.videocardbenchmark.net/gpu_list.php
Intel HD 4000: 451
Radeon 7670M: 817
GeoForce GTX 950: 3240

OK your card is about 4x stronger. Still, the Radeon 7670M is much stronger than the Intel HD 4000, but apparently I get no benefit here.

Groucho2004
3rd June 2016, 15:47
I know for a fact that with AviSynthShader, the performance almost doubles when returning 8-bit data instead of 16-bit data after all the processing is done.
I don't know how this is relevant. Do you use OpenCL in your plugin?

As for benchmarks
http://www.videocardbenchmark.net/gpu_list.php
Intel HD 4000: 451
Radeon 7670M: 817
GeoForce GTX 950: 3240

Again, completely irrelevant. That benchmark does not measure OpenCL performance. Try AIDA64 GPGPU, Luxmark, etc.

MysteryX
3rd June 2016, 17:34
I'd be curious to see other people's performance for the same script.

Khanattila
3rd June 2016, 21:09
Hmm, would that mean that to fully utilize both GPUs you'd do
a = SelectEven()
b = SelectOdd()
Interleave(a.KNLMeansCL(blahblah,device_id=0),b.KNLMeansCL(blahblah,device_id=1))
? ;)
:rolleyes:

Really I do not know.

Khanattila
3rd June 2016, 21:10
I know for a fact that with AviSynthShader, the performance almost doubles when returning 8-bit data instead of 16-bit data after all the processing is done.

As for benchmarks
http://www.videocardbenchmark.net/gpu_list.php
Intel HD 4000: 451
Radeon 7670M: 817
GeoForce GTX 950: 3240

OK your card is about 4x stronger. Still, the Radeon 7670M is much stronger than the Intel HD 4000, but apparently I get no benefit here.

Radeon 7670M... GDDR5 or DDR3?

Khanattila
3rd June 2016, 21:11
Yikes! Your tests show GPU is about 83 times faster! So, a job which would normally cost me ~24 hours, now will take 1,992 hours! (Aka, 83 days)

That means, for all purposes and intent, I won't be able to use KNLMeansCL any more on my VM. :( Sigh. And the whole idea was to offload the rendering a bit to my server.

Thanks for the reply, though.
Hey, Non-local means is really complex.

Khanattila
3rd June 2016, 23:11
Or OpenCL calls simply aren't parallel enough to process responses from multiple GPU's at the same time.

Not exactly sure how KNLMeansCL implemented calls to multiple GPU's (or that you could even process the results asynchroneously in a meaningful fashion), but I suspect the results wind up more serialized than we'd hoped for. :)

I'd be curious to hear what the author has to say about this.

I can do what you're saying, but it takes time. I wrote this plugin in my spare time. :)
The next step is to switch to v1.0.

Groucho2004
4th June 2016, 10:20
I'd be curious to see other people's performance for the same script.
How about a benchmark with this simple script:
colorbars(width = 1920, height = 1080, pixel_type = "yv12").killaudio().assumefps(25, 1)
KNLMeansCL(d = 2, a = 2)

I ran this with my GTX750 using this command line:
avsmeter testgpu.avs -timelimit=30 -gpu -log
Result:
[Runtime info]
Frames processed: 170 (0 - 169)
FPS (min | max | average): 5.243 | 5.655 | 5.606
Memory usage (phys | virt): 558 | 566 MiB
Thread count: 8
CPU usage (average): 25%
GPU usage (average): 98%
Video engine load (average): 0%
GPU memory usage: 122 MiB
Time (elapsed): 00:00:30.327

[Graphics card info]
Card name: NVIDIA GeForce GTX 750
GPU name: GM107
Memory size: 1024
OpenCL version: OpenCL 1.2 CUDA
Driver version: 6.14.13.5012 (ForceWare 350.12) / XP
Info collected with: GPU-Z 0.8.8

MysteryX
4th June 2016, 13:51
This time the performance difference isn't so extreme


[Runtime info]
Frames processed: 40 (0 - 39)
FPS (min | max | average): 1.275 | 1.383 | 1.304
Memory usage (phys | virt): 135 | 196 MiB
Thread count: 13
CPU usage (average): 11%
GPU usage (average): 94%
Time (elapsed): 00:00:30.667

[Graphics card info]
Card name: Intel(R) HD Graphics 4000
GPU name: GT2
Memory size: 0
OpenCL version: OpenCL 1.2
Driver version: 11.18.10.4276 Beta / Win10 64
Info collected with: GPU-Z 0.8.8


Updating the driver gave me a good performance boost! And, considerably lower memory usage.


[Runtime info]
Frames processed: 41 (0 - 40)
FPS (min | max | average): 1.308 | 1.398 | 1.360
Memory usage (phys | virt): 125 | 123 MiB
Thread count: 14
CPU usage (average): 11%
GPU usage (average): 97%
Time (elapsed): 00:00:30.154

[Graphics card info]
Card name: Intel(R) HD Graphics 4000
GPU name: GT2
Memory size: 0
OpenCL version: OpenCL 1.2
Driver version: 11.18.10.4358 Beta / Win10 64
Info collected with: GPU-Z 0.8.8

Bloax
4th June 2016, 16:32
Nvidia cards aren't exactly known for their stellar OpenCL performance, and AMD is getting a 200-buck Polaris card out pretty soon that should be much more power efficient than these last couple of generations, so you would probably be best off waiting for that.

[General info]
Log file created with: AVSMeter 2.2.8 (x86)
Script file: H:\testgpu.avs
Command line switches: -timelimit=30 -gpu -log
OS version: Windows 7 (x64) Service Pack 1 (Build 7601)

Avisynth version string: AviSynth 2.60RC3 (ICL10)
Avisynth file version: 2.6.0.6
Avisynth Interface Version: 6
Avisynth MT support: No
Avisynth.dll linker/compiler version: 6.0
Avisynth.dll location: C:\Windows\SysWOW64\AviSynth.dll
Avisynth.dll time stamp: 2015-04-29, 15:50:30
PluginDir+ (HKLM, x86): C:\Program Files (x86)\AviSynth+\plugins+
PluginDir2_5 (HKLM, x86): F:\C\Program Files (x86)\AviSynth 2.5\plugins

[Runtime info]
Frames processed: 172 (0 - 171)
FPS (min | max | average): 5.594 | 5.993 | 5.706
Memory usage (phys | virt): 621 | 620 MiB
Thread count: 16
CPU usage (average): 25%
GPU usage (average): 93%
Video engine load (average): 0%
GPU memory usage: 298 MiB
Time (elapsed): 00:00:30.146


[Script]
colorbars(width = 1920, height = 1080, pixel_type = "yv12").killaudio().assumefps(25, 1)
KNLMeansCL(d = 2, a = 2)

As you can see, a gtx960 isn't exactly that much better than a gtx750.

Groucho2004
4th June 2016, 16:48
Nvidia cards aren't exactly known for their stellar OpenCL performance, and AMD is getting a 200-buck Polaris card out pretty soon that should be much more power efficient than these last couple of generations, so you would probably be best off waiting for that.
I think KNLMeansCL presents a special case. The GTX750 scores very well with single precision FLOPS but sucks at double precision. I'm simply assuming that KNLMeans uses mainly (or exclusively) single precision operations. Hard to say how AMD cards would perform. I hope users with AMD cards will post their scores.

[Runtime info]
Frames processed: 172 (0 - 171)
FPS (min | max | average): 5.594 | 5.993 | 5.706
Memory usage (phys | virt): 621 | 620 MiB
Thread count: 16
CPU usage (average): 25%
GPU usage (average): 93%
Video engine load (average): 0%
GPU memory usage: 298 MiB
Time (elapsed): 00:00:30.146
As you can see, a gtx960 isn't exactly that much better than a gtx750.
Wow, I did not expect that. I thought the 960 would be a lot faster.

Avisynth version string: AviSynth 2.60RC3 (ICL10)
You should update your Avisynth version.

MysteryX
4th June 2016, 16:51
So you do use the full GPU capacity and the bottleneck isn't the memory transfers in this case.

It is odd that I get lower performance with the Radeon HD 7670M as SVP also uses OpenCL. I get MUCH better performance when it is running OpenCL on the Radeon than on the Intel!

Groucho2004
4th June 2016, 18:08
It is odd that I get lower performance with the Radeon HD 7670M as SVP also uses OpenCL. I get MUCH better performance when it is running OpenCL on the Radeon than on the Intel!
I'm completely lost.
What does KNLMeansCL have to do with SVP?
What does "when it is running OpenCL" mean?
What are you comparing?

MysteryX
5th June 2016, 05:14
Both KNLMeansCL and SVP (InterFrame) use the same OpenCL API for processing.

MysteryX
5th June 2016, 05:58
Interesting development. With the latest AMD driver update, the OpenCL device was missing for the Radeon. It appears both devices are now combined as one as even though SVP can't see the Radeon OpenCL device anymore, it kept its performance.

For some reason, however, running KNLMeans in "Power Saving (Intel)" mode instead of "High Performance (Radeon)" mode gives slightly better performance.

Groucho2004
5th June 2016, 09:51
Both KNLMeansCL and SVP (InterFrame) use the same OpenCL API for processing.
Which means nothing.
A chimpanzee can probably operate a typewriter but this doesn't mean that it can produce the same result as John Steinbeck.

asarian
5th June 2016, 10:12
For my ESXi server, I was thinking maybe this card?

https://azerty.nl/producten/product_detail/5644/732356/asus-geforce-gt730-sl-2gd3-brk.html

It's not a 750, but should still be considerably faster than OpenCL on CPU; and it's fully passive. :)

Groucho2004
5th June 2016, 10:33
For my ESXi server, I was thinking maybe this card?

https://azerty.nl/producten/product_detail/5644/732356/asus-geforce-gt730-sl-2gd3-brk.html

It's not a 750, but should still be considerably faster than OpenCL on CPU; and it's fully passive. :)
Probably a good choice. I found a Aida64 GPGPU benchmark of the GT730 (http://www.quickpconline.com/pc/reviews/zotac-geforce-gt-730-2gb-gddr5-review/) which measures raw OpenCL perfomance. The site is Thai language (I think) but you can just scroll down to the "AIDA64 GPGPU Benchmark" results.

For comparison, here are the results of my GTX750:
http://s33.postimg.org/5lrid18lb/GTX750.png

If it doesn't work in the virtual machine and/or the performance is not what you expect you can always return it.

asarian
5th June 2016, 10:59
Probably a good choice. I found a Aida64 GPGPU benchmark of the GT730 (http://www.quickpconline.com/pc/reviews/zotac-geforce-gt-730-2gb-gddr5-review/) which measures raw OpenCL perfomance. The site is Thai language (I think) but you can just scroll down to the "AIDA64 GPGPU Benchmark" results.

^^ Hey, thanks for the benchmark info and feedback. :)

If it doesn't work in the virtual machine and/or the performance is not what you expect you can always return it.

Nothing is ever truly on the ESXi HCL, lol, but you can always find the PCIe device id yourself, and config it to become pass-thru. So, I have high hopes that will simply work.

Here are my GTX 980 result of your test, btw:

[Runtime info]
Frames processed: 398 (0 - 397)
FPS (min | max | average): 7.228 | 16.74 | 13.21
Memory usage (phys | virt): 597 | 630 MiB
Thread count: 16
CPU usage (average): 11%
GPU usage (average): 78%
Video engine load (average): 4%
GPU memory usage: 692 MiB
Time (elapsed): 00:00:30.130

[Graphics card info]
Card name: NVIDIA GeForce GTX 980
GPU name: GM204
Memory size: 4096
OpenCL version: OpenCL 1.2 CUDA
Driver version: 10.18.13.6822 WHQL (ForceWare 368.22) / Win10 64
Info collected with: GPU-Z 0.8.8

Groucho2004
5th June 2016, 11:19
Here are my GTX 980 result of your test, btw:

FPS (min | max | average): 7.228 | 16.74 | 13.21
That's more like it.

Groucho2004
5th June 2016, 11:23
As you can see, a gtx960 isn't exactly that much better than a gtx750.
I should have mentioned that the results can only be compared if we all use the same version of KNLMeansCL, i.e. the latest (0.7.6). Maybe you used an old version? That would explain your bizarre result.

MysteryX
11th June 2016, 06:29
Something appears wrong with the OpenCL implementation.

It performs *faster* on my Intel HD 4000 than on my Radeon 7670M... in *most* cases.

Let's take this script


ColorBarsHD().KillAudio()
KNLMeansCL(D=1, A=1, h=2.1, cmode=true, device_type="GPU", device_id=0)


Intel HD 4000

FPS (min | max | average): 8.134 | 11.09 | 9.477
Memory usage (phys | virt): 104 | 92 MiB
Thread count: 12
CPU usage (average): 10%


Radeon 7670M

FPS (min | max | average): 7.119 | 10.08 | 8.329
Memory usage (phys | virt): 51 | 47 MiB
Thread count: 12
CPU usage (average): 4%


but if I take this script

ColorBarsHD().KillAudio()
KNLMeansCL(D=2, A=3, h=2.1, cmode=true, device_type="GPU", device_id=0)


Intel HD 4000

FPS (min | max | average): 1.142 | 1.216 | 1.176
Memory usage (phys | virt): 118 | 113 MiB
Thread count: 12
CPU usage (average): 12%

Radeon 7670M

FPS (min | max | average): 1.361 | 1.436 | 1.381
Memory usage (phys | virt): 51 | 46 MiB
Thread count: 12
CPU usage (average): 8%

With AviSynthShader, I was also having issues that it ran faster on the Intel than on the Radeon, and it was an implementation bug on my part. I had to replace the flag D3DPRESENT_INTERVAL_DEFAULT with D3DPRESENT_INTERVAL_IMMEDIATE !!

Then, in terms of memory transfers, the issue isn't with the speed of the memory itself. Graphic cards are designed to display to the screen. Thus, they have a large bandwidth to send data out into the card and to the display, and memory transfers within the GPU is very quick. Transferring data back from the GPU, however, isn't the purpose of the card and is rarely necessary, and thus the bandwidth back is much smaller. I've got a noticeable performance improvement with AviSynthShader by returning planar data which reduced the data transfers by 25%. This has nothing to do with DX9 or OpenCL, these are physical limitations.

asarian
11th June 2016, 17:07
Something appears wrong with the OpenCL implementation.

It performs *faster* on my Intel HD 4000 than on my Radeon 7670M... in *most* cases.

The Intel HD 4000 doesn't have dedicated memory (so kinda sucks for gaming). But, if anything, this shows memory doesn't really play into it here (as it's all mostly onboard computational stuffz).

Then, in terms of memory transfers, the issue isn't with the speed of the memory itself. Graphic cards are designed to display to the screen. Thus, they have a large bandwidth to send data out into the card and to the display, and memory transfers within the GPU is very quick. Transferring data back from the GPU, however, isn't the purpose of the card and is rarely necessary, and thus the bandwidth back is much smaller. I've got a noticeable performance improvement with AviSynthShader by returning planar data which reduced the data transfers by 25%. This has nothing to do with DX9 or OpenCL, these are physical limitations.

I still have a hard time grasping how memory transfers come into play here at all (except to send some OpenCL results back). What alleged huge CPU<->GPU memory transfers would be involved with OpenCL?!

MysteryX
11th June 2016, 18:52
Not sure what you read back from the GPU. In my case, I have to return the full frames data back, either with 8-bit or 16-bit precision. Perhaps you're just returning small calculations details.

Either way, how do you explain the lower performance with the Radeon based on the way you use OpenCL?

Khanattila
14th June 2016, 16:16
Non-local means de-noising algorithm requires lots of memory accesses, as well as a large number of calculations.
Different architectures give different results varying the parameters.

tormento
23rd June 2016, 12:56
Non-local means de-noising algorithm requires lots of memory accesses, as well as a large number of calculations.
Different architectures give different results varying the parameters.

Quoted only to get notification :)

Please take a look here (http://forum.doom9.org/showthread.php?p=1771397#post1771397)

WolframRhodium
27th June 2016, 01:51
Can anybody explain how the parameter "rclip" works?

Through my test, it seems that the weighting calculation is done not only on reference clip, but also on the source clip, if "rclip" is specified as a clip which is different to the source clip.

Besides, if the "rclip" is specified the same as the source clip, the result is also different to not specifity any clip in "rclip". Why there exists difference?

I tried to find more details in the source code, but failed, because of my poor ability in programming.