Live data from Hacker News

85.3 GFlops: Optimizing FP32 Matrix Multiplication on a Single AMD Zen 3 Core

github.com

11–20 of 24 posts

Re: 85.3 GFlops: Optimizing FP32 Matrix Multiplication on a Single AMD Zen 3 Core

#11

For comparison, the best performing GPUs today can do FP32 at > 100 TFLOP/s

Certainly not in a single core (however the given GPU wishes to define it)? This comparison would seem more apt to the largest multi-core CPU results.

Re: 85.3 GFlops: Optimizing FP32 Matrix Multiplication on a Single AMD Zen 3 Core

#12

For comparison, the best performing GPUs today can do FP32 at > 100 TFLOP/s

Zen3 isn't the best performing CPU today, though of course it'll never approach GPU level (which is pretty much ASIC level for matrix muls with special units). CPUs are getting dedicated "AI accelerators" too so it'd be interesting to compare per watt. The real limit is almost certainly memory bandwidth, not flops. It would also be very interesting to see someone like Fabien Giesen / ryg do a maxed out AVX512 version…

Matrix multiplication is one of the few operations that isn't regularly limited by memory bandwidth. BLAS implementations come with several heavily optimized, architecture-specific versions of sgemm.

Re: 85.3 GFlops: Optimizing FP32 Matrix Multiplication on a Single AMD Zen 3 Core

#13
post #4

What's the language? My Firefox detected it as English, I suppose it is because of lang=en in HTML

> My Firefox detected it as English

Try selecting some text in the README, and right-clicking then "Translate to ..." and the autodetect might do a bit better to identify the language.

Re: 85.3 GFlops: Optimizing FP32 Matrix Multiplication on a Single AMD Zen 3 Core

#15

What is interesting here is that this is an optimization study, whose goal was to determine the optimum implementation variant for matrix multiplication on a Zen 3 CPU. It is likely that a similar optimization strategy would work for a modern Zen 5, though some of the parameters for the optimum variant would probably have double values, because Zen 5 has twice more registers, each double in size, and it can process a…

[flagged]

Re: 85.3 GFlops: Optimizing FP32 Matrix Multiplication on a Single AMD Zen 3 Core

#17
post #7
post #4

What's the language? My Firefox detected it as English, I suppose it is because of lang=en in HTML

Brazilian Portuguese. Funnily enough, it took me a while to determine it was definitely Brazilian Portuguese, given I'm a native Portuguese speaker, because the whole thing is written in a stiff academic-ish style that hides some the differences between European and Brazilian Portuguese.

I grew up in Spain close to the border with Portugal, so even though I don't speak the language (something which I really regret) I am familiar with it. What are the major differences between European and Brazilian Portuguese? I only know that Brazilians use the gerund like us Spanish speakers, whereas European Portuguese uses "estar a" + infinitive.

Re: 85.3 GFlops: Optimizing FP32 Matrix Multiplication on a Single AMD Zen 3 Core

#18
post #12

Earlier quoted context omitted.

Zen3 isn't the best performing CPU today, though of course it'll never approach GPU level (which is pretty much ASIC level for matrix muls with special units). CPUs are getting dedicated "AI accelerators" too so it'd be interesting to compare per watt. The real limit is almost certainly memory bandwidth, not flops. It would also be very interesting to see someone like Fabien Giesen / ryg do a maxed out AVX512 version…

Matrix multiplication is one of the few operations that isn't regularly limited by memory bandwidth. BLAS implementations come with several heavily optimized, architecture-specific versions of sgemm.

Well, it does rely on decomposing the problem to optimize cache efficiency.

I don't read Portuguese, but the tables of results seem to imply they are tuning block sizes that leverage the L3 cache. They also talk about prefetch, which tends to matter more as you are approaching a streaming pattern.

So, a single core result may not scale linearly for multicore, given that there will be some cache contention, right? It's a very different tuning problem to optimize each of N cores to use its 1/N fraction of cache while sharing the available bandwidth for cache misses.

Re: 85.3 GFlops: Optimizing FP32 Matrix Multiplication on a Single AMD Zen 3 Core

#19
post #17
post #7

Earlier quoted context omitted.

Brazilian Portuguese. Funnily enough, it took me a while to determine it was definitely Brazilian Portuguese, given I'm a native Portuguese speaker, because the whole thing is written in a stiff academic-ish style that hides some the differences between European and Brazilian Portuguese.

I grew up in Spain close to the border with Portugal, so even though I don't speak the language (something which I really regret) I am familiar with it. What are the major differences between European and Brazilian Portuguese? I only know that Brazilians use the gerund like us Spanish speakers, whereas European Portuguese uses "estar a" + infinitive.

Spelling used to be a big one. E.g. in the opening sentence of the article, the word "otimização" would've been an obvious sign it was Brazilian, because the usual European Portuguese spelling was "optimização" — we had a bunch of silent consonants like that all over the place, but most of those got removed once Portugal started adopting the 1990 orthographic agreement[0]. Speaking of spelling differences, now that I'm re-reading, I could've noticed it was Brazilian from "ingênua" in the first section (would've been "ingénua" in European Portuguese).

A common pattern in the readme is the use of "em um" ("in/on a" in English), which is idiomatic in Brazilian, but not in European Portuguese, where the contraction "num" would be standard. It's one of the cases that could be attributed to overly stiff academic writing, though.

0. https://en.wikipedia.org/wiki/Portuguese-Language_Orthograph...

Re: 85.3 GFlops: Optimizing FP32 Matrix Multiplication on a Single AMD Zen 3 Core

#20
post #19
post #17

Earlier quoted context omitted.

I grew up in Spain close to the border with Portugal, so even though I don't speak the language (something which I really regret) I am familiar with it. What are the major differences between European and Brazilian Portuguese? I only know that Brazilians use the gerund like us Spanish speakers, whereas European Portuguese uses "estar a" + infinitive.

Spelling used to be a big one. E.g. in the opening sentence of the article, the word "otimização" would've been an obvious sign it was Brazilian, because the usual European Portuguese spelling was "optimização" — we had a bunch of silent consonants like that all over the place, but most of those got removed once Portugal started adopting the 1990 orthographic agreement[0]. Speaking of spelling differences, now that I…

Obrigado for the explanation and the interesting link :)
Post reply on HN