
Igor on Apple Silicon

Hi,
long time lurker here. I have taken the plunge and replaced my oldish MacBook Pro with a shiny new MacBook Pro featuring Apple's new M1 CPU. I have not seem any reports about Igor on Apple Silicon here so I'd like to share my experience.
The good news first: Igor Pro (8.04, the only version I have tested) works more or less as it used to on Intel machines. In my (admittedly cursory) testing I have not encountered any glitches or crashes.
XOPs also work, but there are a few hoops to jump through. Generally, Big Sur will prevent unsigned code from running. The established workaround (click 'Open Anyway' in System->Security) didn't work for me. This might might be due tho the Rosetta2 binary translation mechanism or simply a bug in Big Sur. What worked was to remove the quarantine attribute that instructs Gatekeeper to prevent the XOP from loading manually using
sudo xattr -d com.apple.quarantine <PATH_TO_XOP>
in Terminal.
The transition to ARM promises great performance gains while maintaining battery life and I have not been disappointed - everything is extremely snappy and almost instantaneous.
I have run the Igor benchmark (not very scientifically - other software was open and running but the main point is the comparison with my existing machine).
**** test on Macintosh OS X10.16.0 using 8.04 and 21 passes; MacBook Pro 2020 M1 (16GB) Create new graph time: 201.65ms, relative speed= 1.48 big data update time: 28.36ms, relative speed= 5.05 curve fit time: 284.79µs, relative speed= 6.62 user curve fit time: 3.03ms, relative speed= 11.70 double complex fft time: 225.55µs, relative speed= 6.53 single complex fft time: 121.90µs, relative speed= 9.75 double real fft time: 100.23µs, relative speed= 5.63 single real fft time: 74.08µs, relative speed= 6.64 5 pass smooth time: 150.26µs, relative speed= 3.61 Sort 8192 points time: 5.38ms, relative speed= 7.11 WaveStats time: 75.23µs, relative speed= 3.55 simple eqn time: 222.28µs, relative speed= 6.28 exp eqn time: 318.74µs, relative speed= 6.31 sqrt eqn time: 248.70µs, relative speed= 7.11 sin eqn time: 205.08µs, relative speed= 5.67 User fit fctn time: 116.33µs, relative speed= 11.11 MatrixOp eqn time: 13.03µs, relative speed= 1.83 **** done **** total test time= 6.33231
The baseline is the MacPro G5 that is the default in the benchmark. For comparison, my older MacBook Pro
**** test on Macintosh OS X10.15.7 using 8.04 and 21 passes; MacBook Pro 2016 3.3 GHz i7 Dual Core (16GB) Create new graph time: 252.00ms, relative speed= 1.19 big data update time: 42.60ms, relative speed= 3.36 curve fit time: 471.10µs, relative speed= 4.00 user curve fit time: 3.71ms, relative speed= 9.57 double complex fft time: 440.71µs, relative speed= 3.34 single complex fft time: 397.12µs, relative speed= 2.99 double real fft time: 244.42µs, relative speed= 2.31 single real fft time: 224.89µs, relative speed= 2.19 5 pass smooth time: 183.68µs, relative speed= 2.95 Sort 8192 points time: 7.76ms, relative speed= 4.93 WaveStats time: 86.08µs, relative speed= 3.10 simple eqn time: 189.86µs, relative speed= 7.35 exp eqn time: 255.16µs, relative speed= 7.88 sqrt eqn time: 217.56µs, relative speed= 8.13 sin eqn time: 188.53µs, relative speed= 6.17 User fit fctn time: 127.23µs, relative speed= 10.16 MatrixOp eqn time: 33.84µs, relative speed= 0.71 **** done **** total test time= 8.36717
While the performance has not really improved much, the binary-translated version of Igor runs faster than it does on my old machine, which is what I personally care most about. Things likely could be a lot faster using a native version of Igor though it seems that this is not something we can expect in the immediate future.
Cheers
Morten
Thanks for sharing!
December 20, 2020 at 01:41 pm - Permalink
I have posted a blog post about Igor on ARM.
January 5, 2021 at 12:55 pm - Permalink