Hi, I'm asking for help and also see if anyone else came up with the same issue.
My app has some compute kernel functions (pre-compiled into .metallib) run on iOS GPU, the performance is good on iPhone8 before upgrading to Xcode11. But after upgrading to Xcode11, the same compute kernel is 40% slower!
I suspect it was due to some unpublished changes in the metal compiler from Xcode11. The performence went back to good again if I re-compile the .metallib with Xcode10.3 and just put into the Xcode 11 compiled app.
It looks like the GPU register allocation strategy has been changed in the new Xcode11? I'm not sure
I compared the LLVM IR output between Xcode10 and Xcode11, seems only the order and arrangement of some for-loop blocks are different. But why does this have so much negative impact on performance?
Could Apple explain why, or what has happened to the Metal compiler in Xcode 11? This behavior is really strange and mysterious.
Regards.