マンガで分かる流体力学読み終わった

マンガでわかる流体力学 (「マンガでわかる」シリーズ)

マンガでわかる流体力学 (「マンガでわかる」シリーズ)

一週間以上前になるが読み終わった。
結論から言うと、頭の悪い人はマンガで書かれても分からないものは分からない。
思ったより数式が沢山でたな。
数式は理解できなかったが流体力学がどんな所に使われているかとか雰囲気をつかむぐらいはできたかもしれない。

自分は最後は数式は流し読みでマンガとして読んだ気がする。

最近使ったSSEのintrinsicsのメモ

思ったよりも使った命令の種類少ないな。

128bitのload(アドレスは16byteにアラインされている必要あり)
__m128i _mm_load_si128(__m128i * p)

128bitのstore(アドレスは16byteにアラインされている必要あり)
void_mm_store_si128(__m128i *p, __m128i a)

m1の上位8個の8bitとm2の上位8個の8bitを交互に並べる
(m2を0にすればcharからshortへの拡張が行える)
__m128i _mm_unpackhi_epi8(__m128i m1,__m128i m2)

m1の下位8個の8bitとm2の下位8個の8bitを交互に並べる
(m2を0にすればcharからshortへの拡張が行える)
__m128i _mm_unpacklo_epi8(__m128i m1,__m128i m2)

m1+m2(32bit)
__m128i _mm_add_epi32(__m128i m1, __m128i m2)

m1-m2(16bit)
__m128i _mm_sub_epi16(__m128i m1, __m128i m2)

m1の8個の16bitとm2の8個の16bitをそれぞれかけて、8個の積を求めたら隣接する2つの値を足し合わせて、
4つの32bit値を求める。
__m128i _mm_madd_epi16(__m128i m1,__m128i m2)

128bitで右シフト。下位には0が入る。
__m128i _mm_srli_si128(__m128i m, int imm)

128bitでのor
__m128i _mm_or_si128(__m128i m1, __m128i m2)

全ビット0を返す
__m128i _mm_setzero_si128()

社内プログラムコンテスト

社内でちょっとしたプログラムの最適化コンテストがあった。
優勝するとお年玉がもらえるらしく10人以上は参加したはず。
全員の中間結果の発表を聞いて、その数値よりは速くできたので優勝できるかもとか思っていたが・・
結果はトップの人にはダブルスコアの差を付けられて負けた。
やっぱり5時間ぐらいで組んだプログラムじゃ駄目か。

自分はまだまだだなと再認識する良い機会になったので参加して良かった。