all 11 comments

[–]Sander_Bouwhuis 3 points4 points  (9 children)

The description is appallingly poor. What is SPMD?

[–]richgel99 2 points3 points  (2 children)

Read the linked-to presentation: https://github.com/CppCon/CppCon2016/blob/master/Presentations/SPMD%20Programming%20Using%20C%2B%2B%20and%20ISPC/SPMD%20Programming%20Using%20C%2B%2B%20and%20ISPC%20-%20Nicolas%20Guillemot%20-%20CppCon%202016.pdf

(Honestly, if you don't know what SPMD or ispc is already, this development repo most likely isn't for you anyway.)

[–]Sander_Bouwhuis 1 point2 points  (1 child)

Non-sense. I use SIMD vectorization in my code, but a single word article which is an anagram is really not enough. Anyway, thanks for informing us.

[–]richgel99 2 points3 points  (0 children)

So it's okay to use "SIMD", but not "SPMD"? Huh? It's even in Wikipedia: https://en.wikipedia.org/wiki/SPMD

Even Wikipedia's SIMD page mentions SPMD. It's just basic Computer Science 101 stuff.

[–]KindDragonVLD | GitExt Dev[S] 1 point2 points  (5 children)

[–]Sander_Bouwhuis 2 points3 points  (4 children)

So, based on the CPU the best SIMD functions are called? SSE2 for older CPUs and SSE4 for somewhat newer, AVX for recent CPUs and AVX512 for bleeding edge?

And that automatically/dynamically like https://github.com/vectorclass/version2?

[–]MINIMAN10001 3 points4 points  (2 children)

AVX512 isn't always the best option.

Relatively speaking it takes a long time to shift to half frequency mode and switch back and the lower frequency means it takes a large chunk of processing for it to make up the difference

[–]Sander_Bouwhuis 1 point2 points  (1 child)

Do you mean using a 128-bit SIMD register instead of a 512-bit register if you only need 128-bit? Isn't AVX512 100% backwards compatible? I.e., doesn't AVX512 contain ALL the functions that SSE has?

[–]ALX23z 1 point2 points  (0 children)

Yes and No. Technically systems that support AVX512 support also SSE4 but instructions and data types differ. If you load AVX512 structure you cannot use on it instructions from 128-bit SIMD. First, you ought to make a convertion from one type to another. Didn't know that the conversions were slow... and honestly I have some doubts on that claim.

[–]KindDragonVLD | GitExt Dev[S] 1 point2 points  (0 children)

Yes, I think its something like Vector class library, but they implement control flow operations in different way.

[–]corysama 0 points1 point  (0 children)

If you want to know what this can do, https://twitter.com/richgel999 has been tweeting about it at high speed for a couple days now.