


I believe there are many applications that would be affected by this and have not yet been discovered due to this similar issue.įurthermore, this translation limitation also affects OpenVINO as it cross-linked Tensorflow. So far, I cannot figure out the bugs behind some of these. After Apple M1 is released, you will start to see these popping up from Tensorflow forums… This actually may be a huge issue to many ‘optimized’ applications that use vector instructions or using dynamic linking libraries.

hello_avx The implication to all x86–64 developers… hello_avx zsh: illegal hardware instruction. This is bad… really bad indeed from the user experiences perspective. Here it is the burning pain immediately for all x86–64 developers as you won’t be warned but hit by this massive bullet at runtime.

You will be welcomed by the famous ‘ illegal hardware instruction’ error and terminated your application. However, when you try to execute this code. gcc -Wall -mavx -o hello_avx hello_avx.cĪnd it works. #include #include int main() Īnd then you compile it with Rosetta 2 enabled. To demonstrate this, here I pulled an example AVX sample code from this tutorial. Yes, absolutely no warning at all until you hit the bug and terminated your application! A hard crashed. However, the code is still able to compile successfully without any warnings. As I have highlighted previously, Rosetta 2 won’t be able to handle the AVX extension. If you are a developer, then here is the bad news for you if you ever optimized your application using AVX or AVX2. ~ % sysctl -a | grep : FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTSE64 MON DSCPL VMX EST TM2 SSSE3 CX16 TPR PDCM SSE4.1 SSE4.2 AES SEGLIM64Īs you can see, the AVX extension is missing, and maybe more? But the real question is does it really matter? Illegal Hardware Instruction + Cross-Linking Bugs? To know what’s supported, I ran this command line in Terminal under Rosetta 2. A screenshot of the official documentation about Rosetta 2 ( )
