はじめに
- この記事はひとりNEONアドベントカレンダー2020 最終日の記事です。
- なんとか完走できました。ひとえに応援してくれた皆様のおかげでもあります。
- 昨日は数値変換の命令を紹介した
- なお、今日の内容は完全にポエムです。
NEONここがすごいよ
- 個人的に押したいのは
ld3
命令1つだけです。 - SSEやAVXやMSAでも実装されてない
gather
命令ですが、これがあるだけでRGB画像への障壁が全然違います1 -
st3
も大好きです。 - 一方で、残りの23日分はいわばおまけです。
- おまけとは言いつつも、全体の構成はもうちょっと考えるべきだったかも、と反省しています。
- なんで、24日目が
cvt
命令やねん、もっと前だろ、とセルフツッコミ
- なんで、24日目が
Arm v8.2、v8.4、v8.6
- Arm は命令セットのv8を出したあとも、小数点以下を上げながら、Arm v8.1からArm v8.6まで発表しています。2
- Arm v8.2では、
FP16
のままの演算命令が追加されました。 - まだ触ったことないのですが、
dotprod
命令がArm v8.4で追加されたようです。 - 巷で話題の
bfloat
型も、Arm v8.6からサポートされるとアナウンスされたので、触れる日が来るのを楽しみにしています。
SVE
- そして本アドベントカレンダー通して一切触れませんでしたが、SVE(Scalable Vector Extension)を普通に触れる日が来るのを楽しみにしています
- 私が把握している範囲だと、富岳に使われてるA64FXに実装されており、それ以外に私みたいな平民が触るためにはqemuなどのシミュレータを使うしかないみたいです
- また、全然把握していなかったのですが、SVE2もアナウンスされています
- まだどんなものなのか全然確認していませんが、手元に来て使える日を楽しみにしています。
書籍に付いて
- 実はこのアドベントカレンダーは元々は@dandelion1124 先生に煽られて345NEONのリファレンス本なるものを作ろうとしていたのです。
- 元々の予定では技術書典8(本来なら2020年2月28日から開催のはず)で頒布する予定だったのですが、見事締め切りを守れず、今日に至ります。
- このままだとズルズルと出ない本になりそうだったので、一念発起、ひとりアドベントカレンダーで自分を追い込んで、書籍の下書きに相当するものを書いてみました。
- できれば、近い内に本にまとめる、、、かも?
ひとりアドベントカレンダー
- めっちゃ孤独だったし、完走できるかプレッシャーが強かったのですが、なんとか完走できてよかったです。6
- ひとえに応援してくれた皆様のおかげでもあります。(大事なことなので2回書いた)
おわりに
- NVIDIAの手島が、NEON大好きだよっ!ってポエムを25日間書きました。会社は関係ないよ!
- ここで筆を置こうと思います。
-
OpenCVでの実装例を見る限り、VSXにはSSEより自由度の高いシャッフルがあるため、
ld3
とほぼ等価なことを合計9命令(ロード$\times$3回、シャッフル$\times$6回)で実行可能に見えます。が、例により、未検証です。 ↩ -
アドベントカレンダー中ではArm v8.2、v8.4、v8.6にしか言及しませんでしたが、Arm v8.1、v8.3そしてv8.5もちゃんとあります。 ↩
-
https://twitter.com/dandelion1124/status/1171034911257448448 ↩
-
https://twitter.com/tomoaki_teshima/status/1136966923038519298 ↩
-
https://twitter.com/tomoaki_teshima/status/1139546116330967040 ↩
-
11月30日に自転車で転倒して肋骨にヒビが入り、医者に行く時間も無くて、仕事も佳境で、途中で本気でこれは駄目だと何回か思った ↩