依存関係
expはmovprfxを使ったら速くなったけどlogは速くならなかった. ちょっと残念.
依存関係
expはmovprfxを使ったら速くなったけどlogは速くならなかった. ちょっと残念.
計算機特論
何をどうしゃべるか考え中. 他の資料の人を読んでみたり.
log for SVEその2
意外にもgatherを使った方が速かった. 小さいSVEのテストはFX700よりもIntelマシンで試す方が速くて効率がよいことに気がついた.
テーブルを使ったlog
アルゴリズムを理解したのでC++で実装してみた. SVEに落としてみよう. 単なるテーラー展開とどちらが速いかな.
she-wasmの初期化
遅くなったというissueは調べるのに時間がかかったが結局コンパイルオプションのせいだった. wasmではテーブルサイズは小さくしないと駄目だった.
log for SVE
最適化レベルを上げるとおかしくなるのはレジスタの退避をミスっていたせいだった.
bls for s390x
testが失敗する原因の調査.
乱数生成で落ちるのでmacでもあったよく分からない現象かと放置しようと思ったのだけどちゃんと見てみた. 落ちるときのerrnoがEMFILEだった. "/dev/urandom"ファイル多重openは明らかにおかしい. 試しにコンパイルオプションの-fno-threadsafe-staticsを取り除いたら動いた. こいつのせいだったのか.
fcpy
fcpyは即値に0を指定できなかった. xbyak_aarch64がエラーを出さずにしれっと1にしてしまうのではまった. これは治すべきだろうな.
サイボウズ・ラボユースの10周年の記事が公開された. いろいろ調整が大変だった. やっとでたという感じ. みなさんどうもありがとうございました.
早稲田大学の情報理工学科2年生向けに講演
発表資料「私とOSSの25年」 話題はなんでもいいと言われた. 2回生の時を思い出すと念願のCコンパイラ(High-Cコンパイラ)を買っていたので, そのあたりからの話をまとめた.
終わってから先生方と雑談. 久しぶりの外部の人とのおしゃべりで楽しかった. 後で「数学大事だよ」と言ってもらえるとよかったかもという感想をいただいた. それならそう強調できたのだけど, まあ今回は仕方ない.
NaNやInf
log(x)のxが負や0のときに対応. 即値が32bit入らないの, いろいろ面倒だな. 汎用化しておくか.
log for SVE
ひとまず動くようになった. 退避すべきレジスタの部分がずれていて外側でおかしくなることがあった. ここは切り出して使いやすい形にしたいな.
関数castを取り除く
JIT生成したコードの関数ポインタをキャストしてたらclangのsanitizerが警告を出すので取り除く. 動いてるのだからいいとは思うが指摘してくる人がいると対応ぜざるをえない.
abs
uint32_t abs(int32_t x) { return x < 0 ? -x : x; }
だとclangのsanitizerがx=0x80000000のとき警告を出す. 面倒だけども
inline uint32_t abs(int32_t x) { if (x >= 0) return uint32_t(x); if (x == -2147483647 - 1) return 2147483648u; return uint32_t(-x); }
とした. ちなみにclangは最初と同じ簡潔なコードを生成する. gccやVCは余計な分岐が入った. 無駄な作業だなあ.
s390x対応完了
なんとか全てのテストが動くようになった. LinuxONEというのが正式名称らしい.
s390x対応
想像以上にlittle endian依存な部分(serializationやstring変換系)があちこちにあって対応に時間を食ってる. リファクタリングしつつendian依存を無くしていく.
腰痛
腰をひねったか目茶苦茶痛い. 立ったまま作業してるので足の疲れが腰から上半身にも伝播してるようだ.
『言ってはいけない宇宙論 物理学7大タブー』(小谷太郎)
大体知ってることだったがまとめられていて読みやすい. エントロピーの説明はうまいと思った.
気がついたら5月.