別のブログで公開してたものです。
一部をこっちのブログに移行しようと手動で(^^;)移行したものです。

OpenCLでノイズ除去(メディアン法)を作ってみたんだが
CPUより遅い結果に(^_^;)

とりあえず、こんな結果に

時間(秒)
OpenCL 12.693
C言語(OpenMP使用) 10.145
C# 11.682

約2350x3520のJPEG画像10枚分を読み込んで処理して保存するのにかかった時間。
ハードウェアはCPUがCore2 Quad Q9400 2.66GHz、GPUがGeforce GTS 250でちと古が・・・

ノイズ除去の処理をしているところを詳しく測ってみると

OpenCL C言語(OpenMP使用) C#
001.jpg 0.3854 0.4928 0.827
002.jpg 0.302 0.338 0.7846
003.jpg 3.5322 0.49 0.7492
004.jpg 0.3528 0.4908 0.6914
005.jpg 0.3762 0.5196 0.684
006.jpg 0.3808 0.521 0.6946
007.jpg 0.3528 0.5258 0.681
008.jpg 0.3734 0.5378 0.6848
009.jpg 0.3624 0.537 0.6928
010.jpg 1.6578 0.5728 0.681

003.jpgと010.jpgが極端に遅く、それ以外はC言語に勝っていることがわかる。
念のため003.jpg単独で何度か測ってみたが、だいたい3.5秒という結果になった。
つまり、データ依存してるってことだ。

メディアン法でデータの内容で時間が変わりそうなのが最後にソートしているところになる。
ソートしなければどうなるか測ってみた(メディアン法でもなんでもなくなるんだがw)

0.25
0.237
1.134
0.229
0.229
0.233
0.229
0.23
0.227
0.473

003.jpg,010.jpgが極端に速くなったが、
それでも他と比べると遅い。

ふむ、これだとよくわからないという結論に・・・