neurodocker icon indicating copy to clipboard operation
neurodocker copied to clipboard

How is MCR version chosen based on SPM12

Open JohannesWiesner opened this issue 3 years ago • 4 comments

I installed SPM12 (v7771) using --spm12 version=r7771. In the README it says "Note: Matlab Compiler Runtime is installed when SPM12 is installed." but which MCR version is installed given a specified SPM version? Apparently --spm12 version=r7771 comes with matlabmcr-2010a (which seems to be the default)? Does switching over to a more recent version of MCR using --matlabmcr give me any advantages?

JohannesWiesner avatar Apr 08 '21 16:04 JohannesWiesner

good question. spm12 is compiled (not sure if that is the right term) for different versions of the matlab compiler runtime. the MCR version is part of the spm12 url. spm12 versions are also compiled for other MCR versions, but we decided to stick with MCR 2010a because all of the recent spm12 versions seem to support it. that makes installation simpler.

i'm not sure if a more recent MCR provides advantages...

kaczmarj avatar Apr 08 '21 18:04 kaczmarj

Ah I see, thanks for the link! So, if I got that right --spm12 and --matlabmcr are independent commands? Regardless of the SPM12 version that I chose I would always get the one with MCR2010a? Or could I say for example give me --spm12 version=r7771 with --matlabmcr version=2013a which overwrites the default 2010a? In other words, are all combinations of SPM and MCR versions valid?

In case the latter is true this could possibly be added? "Note: If not otherwise specified, Matlab Compiler Runtime (2010a) is installed when SPM12 is installed".

Would be interesting to know if there are any advantages from using a more recent version, I mean 11 years are something, right? :D

JohannesWiesner avatar Apr 08 '21 19:04 JohannesWiesner

yes, --spm12 and --matlabmcr are independent commands. they do not "know" about each other, so using --matlabmcr will not overwrite the mcr that --spm12 uses. also, a different spm12 download would have to be used for a different mcr, because spm12 is compiled for specific mcr versions.

not all combinations combinations of spm12 and mcr are valid... i made a new issue #394 to consider adding the valid spm12-mcr version pairs.

kaczmarj avatar Apr 08 '21 19:04 kaczmarj

The versions of the Compiler and the Runtime have to match for a given compiled application. Compiled SPM12 started with R2010a and that version was kept such that an update of SPM didn't require an update of the Runtime. With this version it is also possible to create a single compiled application for all operating systems, which is handy. That said, I agree that R2010a is very old now and future versions of standalone SPM will use a more recent version.

There are unofficial compiled SPM12 here: r7771 with R2019b and dev with R2020a.

gllmflndn avatar Apr 09 '21 09:04 gllmflndn

I think we can close it now and just keep #394 feel free to reopen

djarecka avatar Mar 29 '23 17:03 djarecka