2018年2月15日木曜日

測距


 6mくらいの距離で計ってみました。38msecあたりに強いピークがあり、これが壁からの反射波だと思います。途中のピークでも、おおよそその位置にモノがあるので、ちゃんと計測できているようです。

 距離が伸びでも、相関値に大きな影響は無いようです。この減り方を伸ばすと、10mくらいならちゃんとピークが出そうです。それ以上の距離はちょっと厳しい気がします。もうちょっと増幅率稼いでおけばよかったなぁ。

 計測幅は80msec、相関の計算には440msec程度です。
 最終的に、SIMDはスカラ演算と比べて2倍の処理速度になりました(forのオーバーヘッド含まず/命令数で計算)。32bitコアで16bit2組のベクトル演算ですから、ちょうど2倍になります。
 SIMDはコンパイラ最適化が少し弱くなるような気がします(インラインアセンブリと同じ書き方ですから、コンパイラ最適化が行われない?)。SIMDを使う場合は、可能な限りSIMD周りを一つの関数にまとめ、それ以外の処理は書かない、と言った工夫が必要なようです。これは関数を呼び出すことにより、レジスタをスタックに退避して、コンパイラが使用可能なレジスタを探すのを助ける、といった動きになりそうです。


 とりあえずAスコープ風の表示でいいなら、今の段階でも十分に使えますが、距離計として使うならピークを検出する処理が必要になります。次はこれを作る事になりそうです。

0 件のコメント:

コメントを投稿