JuliaSIMD / JuliaSIMD/LoopVectorization.jl
Ryzen dot product performance
- Langage dominant
- Julia
- Étoiles
- 789
- Forks
- 73
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
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!
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par reproduire les benchmarks mydot, mydotavx, myselfdot et myselfdotavx signalés sur le Ryzen 2700X indiqué, en utilisant Julia 1.4.0-rc2.0 et LoopVectorization.jl v0.6.21. Comparez des entrées de 255 et 256 éléments aux chiffres de performance de la README ; le travail est considéré comme terminé lorsque le comportement du Ryzen est expliqué ou qu’un problème de performance exploitable est identifié.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- julia
- Domaine
- performance
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100