So, for posterity: I dug into the ICA code I was using (which I inherited) and it turns out this was almost comically memory inneficent. Optimizing this code a bit led to a several fold performance increase and more relavently it also increased the maximum number of cores leading to performance increases from the 9 above to the 12 to 14 range (i.e. further worker beyond this number did not increase performance) - likewise performing the test where the size of the input arrays are halved also increased this number also to around 12 or 14. More conclusively, using 'single' as opposed to 'double' precision values roughly halved the computational time overall and led to a maximum useful worker limit of about 18-19. I am being close to as efficent with the memory usage as is apparently possible with this particular problem in Matlab, so I'm not 100% sure but I think the issue may very well be what Edric suggested in the comments: the memory bandwith of the chips themselves. The fact that previously both the Intel and AMD chip 'maxed out' at around 9 workers may therefore have been more or less a coincidence: the AMD chip has a slightly larger memory bandwith but is also proportionally faster therefore they reached their computational bottleneck at around the same worker number. What I still find a bit puzzling though is: if I am reaching the limit of the memory bandwith of the CPU how is my computer still so responsive? Like opening a web-broswer and playing a video happens instantaneously and seem to only negligably affect the computational time of the Matlab functions.. If I am literally at the limit of the CPU's memory IO, how is this possible?
PS: The thing I found most surprising about this whole thing is that I couldn't seem to find resources/analysis directly relevant to this behavior online (or maybe I didn't know how to search for it?). That is nearly a first for me in my years of using Matlab... These higher count chips are pretty common now, I'm surely not the only one runnining large-ish parellel computing jobs on them, no!? So if you stumble across this thread and know of someone who has some practical advice on this, or even analyzed this issue properly (or have done so yourself) - drop me a line! I'd love to learn more about it!