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