2023-09-01から1ヶ月間の記事一覧

LLVMのk乗和の最適化手法について

clangは-O1以上の最適化オプションをつけると、以下のコード(単純に考えるとΘ(n)命令必要そう)からループを取り除き、Θ(1)命令のコードに最適化します。 uint64_t sum( uint64_t n ) { uint64_t ret = 0; for( uint64_t i = 0; i < n; ++i ) { ret += i; }…

Yosysを使ってみる(その1)

Yosysというオープンソースの論理合成ツール(レジスタ転送レベルからゲートレベルに変換する一種のコンパイラ)があるので使ってみました。 github.com インストール 公式のREADMEとだいたい同じです。Makefileを書き換えてインストール場所を変更すれば、…

AVX-512の機能を使ったlogf(x)の実装(その2)

前回(AVX-512の機能を使ったlogf(x)の実装(その1) - よーる)の記事で、AVX-512でベクトル実行することを前提としたlogfの高速実装を作りました。 速度を重視しつつもできる限り精度に気を付けた結果、ほとんどの入力に対して誤差を1.5ULP未満とできまし…