なんか社内チャットで
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)をだしてきたので今もうちょっと頑張った)