SIMDがStandard Libraryに [Swiftプログラミング]
こないだSwiftの勉強で光線追跡エンジンを書き直してる話を書いた。そこでは勉強なのでベクトル行列演算もベタに自分で書いてたけど、Objective-Cで書いたやつではAccelerate frameworkを呼んでいる。よく見るとSwiftのStandard LibraryにSIMDが入っている。知らなかった。
SIMDはもともとCPUのベクトルユニット使うためのライブラリで、昔は確かAccelerate frameworkの一部だったと思う(一番最初は、懐かしいAltiVecを使い倒すために導入されたと覚えている)。整数や浮動小数点数を4つなり8つなりまとめて、ベクトルユニットが可能な演算を定義してあった。
今見ると、Accelerateからは独立してるようである。Swift Standard Libraryに入れるためにそうなったんだろうか。Metalのshaderにも構造体が流用されているようなので、その関係なんだろうか。Swift Standard LibraryのSIMDドキュメントはかなり簡素でこれだけ見てもなかなかよくわからない。たぶんAccelerateにあったやつのラッパになってるんだろうと思う。僕は昔ならいざ知らず今後SIMDを単独で積極的に使うことはあまりないとは思うんだけど、Swiftの勉強になりそうなので詳しく見てみる....
SIMDはもともとCPUのベクトルユニット使うためのライブラリで、昔は確かAccelerate frameworkの一部だったと思う(一番最初は、懐かしいAltiVecを使い倒すために導入されたと覚えている)。整数や浮動小数点数を4つなり8つなりまとめて、ベクトルユニットが可能な演算を定義してあった。
今見ると、Accelerateからは独立してるようである。Swift Standard Libraryに入れるためにそうなったんだろうか。Metalのshaderにも構造体が流用されているようなので、その関係なんだろうか。Swift Standard LibraryのSIMDドキュメントはかなり簡素でこれだけ見てもなかなかよくわからない。たぶんAccelerateにあったやつのラッパになってるんだろうと思う。僕は昔ならいざ知らず今後SIMDを単独で積極的に使うことはあまりないとは思うんだけど、Swiftの勉強になりそうなので詳しく見てみる....