Live data from Hacker News

Understanding SIMD: Infinite complexity of trivial problems

modular.com

1–10 of 127 posts

Re: Understanding SIMD: Infinite complexity of trivial problems

#4

This is the first time I hear ‘hyperscalar’. Is this generally accepted ? ( I’ve been using SIMD since the MMX days so am a bit surprised )

I don't think so.

Superscalar is a real term (multiple operations in one clock tick due to parallel pipelines within a core). But hyperscalar is cringe to me. There are tons of words describing SIMD already, it seems unclear why someone would make up a new word to describe an already existing concept.

Especially when a similar word (superscalar) already is defined and likely gets confused for this new word.

Re: Understanding SIMD: Infinite complexity of trivial problems

#6
Intel needs to see what has happened to their AVX instructions and why NVidia has taken over.

If you just wrote your SIMD in CUDA 15 years ago, NVidia compilers would have given you maximum performance across all NVidia GPUs rather than being forced to write and rewrite in SSE vs AVX vs AVX512.

GPU SIMD is still SIMD. Just... better at it. I think AMD and Intel GPUs can keep up btw. But software advantage and long term benefits of rewriting into CUDA are heavily apparent.

Intel ISPC is a great project btw if you need high level code that targets SSE, AVX, AVX512 and even ARM NEON all with one codebase + auto compiling across all the architectures.

-------

Intels AVX512 is pretty good at a hardware level. But software methodology to interact with SIMD using GPU-like languages should be a priority.

Intrinsics are good for maximum performance but they are too hard for mainstream programmers.

Re: Understanding SIMD: Infinite complexity of trivial problems

#7

This is the first time I hear ‘hyperscalar’. Is this generally accepted ? ( I’ve been using SIMD since the MMX days so am a bit surprised )

I thought it was referring to this?

https://en.m.wikipedia.org/wiki/Hyperscale_computing

IE our simd implementation allows you to scale across different architectures/ CPU revisions without having to rewrite assembly for each CPU processor?

Edit: Rereading, that does not make much sense...

Re: Understanding SIMD: Infinite complexity of trivial problems

#8

This is the first time I hear ‘hyperscalar’. Is this generally accepted ? ( I’ve been using SIMD since the MMX days so am a bit surprised )

I don't think so. Superscalar is a real term (multiple operations in one clock tick due to parallel pipelines within a core). But hyperscalar is cringe to me. There are tons of words describing SIMD already, it seems unclear why someone would make up a new word to describe an already existing concept. Especially when a similar word (superscalar) already is defined and likely gets confused for this new word.

That may have been my mistake. I use super & hyper interchangeably and don't always notice :)

PS: Should be an easy patch, will update!

Re: Understanding SIMD: Infinite complexity of trivial problems

#9

Earlier quoted context omitted.

I don't think so. Superscalar is a real term (multiple operations in one clock tick due to parallel pipelines within a core). But hyperscalar is cringe to me. There are tons of words describing SIMD already, it seems unclear why someone would make up a new word to describe an already existing concept. Especially when a similar word (superscalar) already is defined and likely gets confused for this new word.

That may have been my mistake. I use super & hyper interchangeably and don't always notice :) PS: Should be an easy patch, will update!

Maybe not.

Superscalar is when say... Think of the following assembly code.

   Add r1, r2
   Sub r3, r4
And the add and subtract both happen on the same clock tick. The important thing is that a modern CPU core (and even GPU core) have multiple parallel ALU pipelines inside of them.

Because r1, r2, r3 and r4 are fully independent, a modern CPU can detect the potential parallelism here and act in parallel. After CPUs mastered this trick, the next out of order processors were invented (which not only allowed for super scalar operations, but allowed the subtract to execute first if for some reason the CPU core were waiting on r1 or r2).

There are a ton of ways that modern CPUs and GPUs extract parallelism from seemingly nothingness. And because all the techniques are independent, we can have superscalar out-of-order SIMD (like what happens in AVX512 in practice). SIMD is... SIMD. It's one instruction applied to lots of data in parallel. It's totally different.

You really need to use the correct word for the specific kind of parallelism that you are trying to highlight. I expect that the only word that makes sense in this article is SIMD.

Re: Understanding SIMD: Infinite complexity of trivial problems

#10

Intel needs to see what has happened to their AVX instructions and why NVidia has taken over. If you just wrote your SIMD in CUDA 15 years ago, NVidia compilers would have given you maximum performance across all NVidia GPUs rather than being forced to write and rewrite in SSE vs AVX vs AVX512. GPU SIMD is still SIMD. Just... better at it. I think AMD and Intel GPUs can keep up btw. But software advantage and long te…

> If you just wrote your SIMD in CUDA 15 years ago, NVidia compilers would have given you maximum performance across all NVidia GPUs

That's not true. For maximum performance you need to tweak the code to a particular GPU model/architecture.

Intel has SSE/AVX/AVX2/AVX512, but CUDA has like 10 iterations of this (increasing capabilities). Code written 15 years ago would not use modern capabilities, like more flexible memory access, atomics.

Post reply on HN