JuliaSIMD / JuliaSIMD/LoopVectorization.jl

Ryzen dot product performance

オープン
#78 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Julia
スター
789
フォーク
73
PR マージ指標
30日以内にマージされた PR はありません

説明

First of all, brilliant work on this package. Extremely impressive.

Since you mention in the readme that you were curious about 1 `fma` Ryzen chips, here's data from a Ryzen 2700X running Julia 1.4.0-rc2.0 on Windows 10 x64 and the latest release (v0.6.21) of the package:

```
# make sure we get enough samples
julia> BenchmarkTools.DEFAULT_PARAMETERS.samples = 1e12

julia> a = rand(256); b = rand(256);

julia> @btime mydot($a,$b)
33.098 ns (0 allocations: 0 bytes)
55.14639163783218

julia> @btime mydotavx($a,$b)
33.802 ns (0 allocations: 0 bytes)
55.14639163783219

julia> @btime myselfdot($a)
22.066 ns (0 allocations: 0 bytes)
79.1990129346761

julia> @btime myselfdotavx($a)
22.868 ns (0 allocations: 0 bytes)
79.1990129346761

julia> a = rand(255); b = rand(255);

julia> @btime mydot($a,$b)
43.749 ns (0 allocations: 0 bytes)
65.04807877890542

julia> @btime mydotavx($a,$b)
39.274 ns (0 allocations: 0 bytes)
65.04807877890542

julia> @btime myselfdot($a)
38.608 ns (0 allocations: 0 bytes)
80.52310652021393

julia> @btime myselfdotavx($a)
32.863 ns (0 allocations: 0 bytes)
80.52310652021396
```

So, the single load versions are always significantly faster, although the total throughput is always quite low compared to the numbers in your readme, which I assume came from a quad channel Skylake-X system or a comparable Xeon.

Let me know if you'd like any further info, whether the LLVM IR / native assembly, details of the hardware involved or for me to run any further benchmarks!

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

まず、報告されている mydot、mydotavx、myselfdot、myselfdotavx のベンチマークを、指定された Ryzen 2700X 上で Julia 1.4.0-rc2.0 と LoopVectorization.jl v0.6.21 を使って再現します。255 要素と 256 要素の入力を README の性能値と比較します。Ryzen の挙動が説明されるか、実行可能なパフォーマンス問題が特定されれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
julia
領域
performance
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。