It depends, really. Apple Silicon shines on general-purpose software or in general software that is poorly written, where the CPU's large caches and the ability to execute many introductions simultaneously catapults it into a league of its own. For example, some of my single-threaded R scripts run 3-4x (!!!) faster on M1 compared to my 2019 i9 Intel machine. But on well-optimised numerical code that takes advantage of modern x86 capabilities (such as AVX2 and AVX512), M1 is unlikely to be faster (albeit it will be more energy-efficient). The big advantage of M1 is a much more flexible architecture that can adapt to workloads better than the modern x86 CPUs.
This has been my experience too.
Even compiling C# .NET 6 on JetBrains Rider EAP on M1 Max, it was performing faster than our typical Ryzen 5950x workstations. For me and my workflow, that’s game changing. That’s a laptop part with 8 performance cores, running at a significantly lower clock speed and higher IPC, beating out a desktop workstation part with 16 performance cores in a fraction of the TDP. And I can carry it with me on a plane, move it easily to the kitchen while I drink my morning coffee!
On a separate note, I have been exploring more of the Accelerate framework and retooling parts of an existing code base to utilize accelerate as I port what was originally a Windows developer Visual Studio app with SSE optimizations over to XCode and M1. So far performance improvements on both i9 Intel MBP and also M1 have been significant when I started to tap into Acceleate - but I’m seeing even greater performance bumps on the M1 relatively so I suspect it’s a combination of additional accelerators and co-processors there getting utilized. The “
downside” is that I’ve really ended up now with two separate and succinct projects to maintain - one for Windows and another for Mac OS!
May I ask , what numerical workload code are you using specifically on x86 that uses AVX2 and AVX512? It must be very specialized? Have you investigated ported to see if you could achieve a similar level of performance on M1/pro/Mac equivalent via Accelerate, Metal or other proprietary library from Apple? I know from your other comments around here that you’re somewhat of a code junkie, so no doubt you’ve explored lots of options and have a really good reasons.
I’m just curious if your particular usecase and workload just lends itself better towards x86 and whether this is a hardware limitation from your perspective, a software issue - i.e. you’re using an open source BLAS library or something that is not well optimized yet for AS or a combination of both
Just interested to hear your take
Hope you are staying well and keeping safe.
Happy Holidays