[過去ログ] Qiita 2 - キータぞ、来たぞ、キータだぞー (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
812
(4): 2023/03/25(土)05:45 ID:g6eb42ch(1) AAS
元編 外部リンク:qiita.com
続編 外部リンク:qiita.com
高々10Mの足し算で1秒掛かってるのが異常に遅いなと思って
試しに手動アンロールしたら3桁早くなった

主題の分岐予測を気にかけてる人は自動ベクトル化も興味あるだろうし
元編でコメント連投してた藤田望氏は5chで叩かれてもQiita頑張って欲しい

shuffled
省11
813: 812 2023/03/25(土)06:46 ID:kHu8aUGB(1/2) AAS
失礼、measure関数で1000回ループしてたので、高々10G回の足し算になってた
でもO3最適化が何かをやっているようだ

g++ -O2 -mavx2
shuffled
simple: duration= 4.3088s sum=957487744000
simple_unroll4: duration= 1.5359s sum=957487744000
foreach: duration= 4.3084s sum=957487744000
省21
814: 812 2023/03/25(土)06:53 ID:kHu8aUGB(2/2) AAS
measure関数に __attribute__ ((noinline)) を付けたら正しく動きました
失礼しました
815: 812 2023/03/25(土)17:13 ID:hUI94gGa(1/2) AAS
uint16_tにしたら続編のAVX512と似通ったレベルが出た(続編のsumがmacとwindowsで違うのは何故?)
g++ -O3 (avx2を明示しない方が速かった)
shuffled
simple: duration= 1.0470s sum=957487744000
simple_unroll4: duration= 0.7678s sum=957487744000 ★
foreach: duration= 1.0765s sum=957487744000
opt-simple: duration= 1.3134s sum=957487744000
省20
816
(1): 812 2023/03/25(土)17:24 ID:hUI94gGa(2/2) AAS
合わせて手動アンロールも少し修正
int64_t __attribute__ ((noinline)) simple_unroll4(std::vector<uint> const &data)
{
int64_t sum = 0;
size_t const size = data.size();
size_t i = 0;
size_t const overflow_safe_chunk_size = (1ULL<< (8*sizeof(uint)))/(1ULL<<8); // 0xff = (1<<8)-1
省19
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.044s