JuliaSIMD / JuliaSIMD/LoopVectorization.jl

Ryzen dot product performance

Abierto
#78 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Julia
Estrellas
789
Forks
73
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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!

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza reproduciendo los benchmarks mydot, mydotavx, myselfdot y myselfdotavx reportados en el Ryzen 2700X indicado, usando Julia 1.4.0-rc2.0 y LoopVectorization.jl v0.6.21. Compara entradas de 255 y 256 elementos con las cifras de rendimiento de la README; se considera terminado cuando se explica el comportamiento del Ryzen o se identifica un problema de rendimiento accionable.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
julia
Área
performance
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.