Training an LLM in Swift, Part 1: Taking matrix mult from Gflop/s to Tflop/s
86 points
by zdw
23 hours ago
| 3 comments
| cocoawithlove.com
| HN
dagmx
1 hour ago
[-]
This is a pretty phenomenal article.

Even for those who don’t care about LLM use, this is just a great article on optimizing Swift performance, which is sadly something that doesn’t have a lot of written material for.

I’m curious if the AMX instructions are truly secret. In theory you could use an M4 or above and get them via SME I think but I’m just guessing as I’ve never tried intrinsic from Swift myself.

reply
mathisfun123
44 minutes ago
[-]
> get them via SME

I have no idea what this means - AMX was replaced by SME on M4. It's a new unit not just an "abstract intrinsic" (which would make zero sense).

reply
dagmx
2 minutes ago
[-]
I’m not sure what part is confusing you or how to word it another way to make more sense to you.

What I’m saying is that instead of using the secret AMX instructions, just use SME , assuming they have the hardware available to them.

AMX isn’t truly gone afaik , at least according to the folks who have been looking at it. It’s just deprecated and it seems like the architecture treats them somewhat like aliases, preventing concurrent use within a process.

reply
oflannabhra
21 minutes ago
[-]
Matt Gallagher and CocoaWithLove are major highlights from the early days of my journey in learning iOS development. Awesome to see he is still publishing such high quality information!
reply
nromiun
41 minutes ago
[-]
> Is 1.1 Tflop/s good? Theoretically, the GPU on my M3 Max is capable of around 15 Tflop/s. But the real ceiling for this kind of task is going to be 3-5 Tflop/s

This is so true. And also why people should not take basic GPU benchmarks so seriously. Getting peak performance out of a GPU is much more complex than it is with a CPU.

And it is one of the reasons why Nvidia still has a software moat compared to other GPU companies. CUDA has so many small kernels tuned for getting peak performance for your dataset.

reply
billti
15 minutes ago
[-]
I keep this link in my favorites and refer to it every now and again. Still one of the best write-ups I've seen on just have vast the difference is between a naive and well tuned kernel

https://siboehm.com/articles/22/CUDA-MMM

reply