waifu2x はやくした

なんか社内チャットで

https://github.com/WL-Amigo/waifu2x-converter-cpp

をはやくしろというメッセージを受信したのでやった。

https://github.com/tanakamura/waifu2x-converter-cpp

http://int.main.jp/files/waifu2x-converter_x64.exe

コードの大半は、@WL_Amigo さんのを流用していて、コマンドラインの入出力方法は一緒なので、使う場合はexeを置き換えてもらうだけでよいです。@WL_Amigo さんの最新では修正されてるでかい入力でメモリ使い果たす問題の修正はマージできてないので、でかい入力には使えないです。

FMA 使っているので、Haswell 以降のCPUが必須です。なんか32bit版はcl.hpp がエラー出てめんどいから見てない。

ni7-4700MQの8スレッドで、noise + x2 で

入力サイズ 960x540 256x256
もと 167sec 11.3sec
15.6sec 3.2sec
倍率 10.1x 3.5x

ぐらいまでいった。


もとのは、スレッド化してある + OpenCV(つまりSSE化済み)のなので、そこからFMA にしたから、4倍ぐらいは妥当で、そっから2倍ぐらい頑張ったという感じかな…

OpenCL 版は途中までやったけどまだ遅いからもうちょっと待って…

あとけっこう頑張ったので解説もそのうち書きたい。

(なお、この文章は一昨日書いてたのだけどアップロードする直前で @logicmachine がよりはやい版(https://github.com/logicmachine/waifu2x-opt)をだしてきたので今もうちょっと頑張った)