openCVでのNEON最適化
openCVのNEON対応に関して質問です。
(オープンソースの開発の仕方についての質問になるかもしれませんが。)
最近openCVのNEON対応に興味を持ち始め、
gitリポジトリをcloneしてソースの中身を追っています。
しかし、私の実力不足により具体的にどのような方法で
NEONによる最適化を実現しているのか追いきれていません。
まず始めにcloneしてきたディレクトリ以下をARM_NEONやuint8x16_t等の
キーワードで検索すると、極々一部の関数(normHamming)等にしか
明示的にNEON化されている箇所が見当たりません。
しかし一方で、http://code.opencv.org/projects/opencv/wikiから
「neon optimization」等のキーワードで検索をかけると、
下記のようにNEON対応された関数がいくつもあるように読み取れます。
http://code.opencv.org/projects/opencv/repository/revisions/42e0214de51394d9d2a2aa293cbda40145a720a9
そこでdiffを眺めるとGET_OPTIMIZED(hoge)というような
マクロ経由で最適化対応をしているようです。
しかし、今度はGET_OPTIMIZEDでソースコードに検索をかけると、precomp.cppの中に
以下のような記述が見つかりました。
#ifdef HAVE_TEGRA_OPTIMIZATION
#include "opencv2/core/core_tegra.hpp"
#else
#define GET_OPTIMIZED(func) (func)
#endif
一見マクロ側は何もしていないように見えてしまいますが、
これから、どのようにNEON最適化が行われるのでしょうか?
現時点で全く想像が付かないため、何かしらの推測が出来る方が
いましたらご教示頂ければ幸いです。
以上、よろしくお願い致します。
お礼
やっぱり関西では難しいでしょうか??