JuliaSIMD / JuliaSIMD/LoopVectorization.jl
Ryzen dot product performance
- 主要言語
- 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