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).
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
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