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