NeuroDesk / neurocontainers

The containers can be used in combination with our transparent singularity or neurocommand tool, that wrap the executables inside a container to make them easily available for pipelines
https://www.neurodesk.org
MIT License
19 stars 49 forks source link

Using MATLAB Compiler to create standalone packages #55

Closed DavidjWhite33 closed 2 years ago

DavidjWhite33 commented 2 years ago

Hi @stebo85, wondering if you already documented a workflow for compiling MATLAB packages not already compiled (eg. when building CONN)? If so, could you please share?

Ie. did you use the MATLAB compiler for your CONN archive, or is this a compiled version accessed by the developers (https://objectstorage.us-ashburn-1.oraclecloud.com/n/nrrir2sdpmdp/b/neurodesk/o/conn20b_mcr2020b.tar.gz)

Also, should we organise the central/open place for storage of these archives?

@civier

stebo85 commented 2 years ago

Dear @DavidjWhite33,

Great to hear you started looking into this :)

I haven't documented the workflow for compiling MATLAB packages. For conn I used the compiler script that was included in the package, and I build the conn20b_mcr2020b.tar.gz myself and then uploaded it to object storage.

I think we should use compiled MATLAB packages if they are available by the developers of the toolbox and they work (like SPM). If they are not available, we have to try and compile them ourselves. Once compiled we should upload them to our container object storage - I can send you a pre-authenticated curl command that can do this - let me know if you want this and I send it to you.

Which toolbox are you compiling right now?

Cheers Steffen

civier commented 2 years ago

Hi Steffen,

Yes. Dave and I was looking into this today. Can you send the curl command also to me, so I can test it myself? I'm looking into compiling OSL: https://ohba-analysis.github.io/osl-docs/#!

BTW, is there any way to compile MATLAB packages on GitHub directly? Is there a technical limitation or is it a MATLAB licencing issue?

Best, Oren

-- Oren Civier Neuroimaging Informatics Fellow Swinburne Neuroimaging | National Imaging Facility https://anif.org.au/team/oren-civier/ https://www.swinburne.edu.au/neuroimaging

Swinburne University of Technology Hawthorn Campus, Advanced Technologies Centre, Room 914 +61 3 9214 4628 | +61 4 3101 6603 @.*** (Email/Teams video call) https://twitter.com/orencivier

On Tue, 21 Sep 2021, 20:34 Steffen Bollmann, @.***> wrote:

Dear @DavidjWhite33 https://github.com/DavidjWhite33,

Great to hear you started looking into this :)

I haven't documented the workflow for compiling MATLAB packages. For conn I used the compiler script that was included in the package, and I build the conn20b_mcr2020b.tar.gz myself and then uploaded it to object storage.

I think we should use compiled MATLAB packages if they are available by the developers of the toolbox and they work (like SPM). If they are not available, we have to try and compile them ourselves. Once compiled we should upload them to our container object storage - I can send you a pre-authenticated curl command that can do this - let me know if you want this and I send it to you.

Which toolbox are you compiling right now?

Cheers Steffen

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/NeuroDesk/neurodesktop/issues/46#issuecomment-923851797, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB7FUI23YILLWV62UAZFFFLUDBNSNANCNFSM5ENVESJA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

stebo85 commented 2 years ago

Hi @civier and @DavidjWhite33 ,

I will send out the curl command in a bit with an explanation how to use it.

OSL looks like a great addition!

I am not aware of a way of compiling Matlab packages on Github. The license would be the biggest problem - because it's quite easy to run matlab in a docker container otherwise.

AWS and Azure seem to support Matlab, so you could look into this: https://au.mathworks.com/solutions/cloud.html#public-cloud

Kind regards Steffen

stebo85 commented 2 years ago

@civier and @DavidjWhite33 - I trasnferred the issue to the neurocontainers repo

DavidjWhite33 commented 2 years ago

I think we should use compiled MATLAB packages if they are available by the developers of the toolbox and they work (like SPM). If they are not available, we have to try and compile them ourselves. Once compiled we should upload them to our container object storage - I can send you a pre-authenticated curl command that can do this - let me know if you want this and I send it to you.

Which toolbox are you compiling right now?

Cheers Steffen

@stebo85 Agreed that using compiled versions released by developers makes sense wherever possible. I am looking at a couple of toolboxes at the moment - but one important one is EEGLAB. This is an interesting case because they have a standalone compiled version to run with MCR, but have stopped releasing this for linux as of their first 2020 release. In addition, there is perhaps an argument for the added flexibility of compiling ourselves to incorporate additional add-on tools that aren't compiled with the main standalone version. As a final wrinkle, EEGLAB developers have stated they will now support an Octave release for HPC etc - as this sounds like a less stable solution at this point, this may be something to just keep an eye on.

stebo85 commented 2 years ago

Fully agree! Octave is an interesting option and SPM runs very well in Octave as well. This is something we should explore if we can find the time for this.

I also just figured out a sneaky way of compiling matlab code on github automatically :D we could use the official matlab container (https://hub.docker.com/r/mathworks/matlab) and inject our university license in there in case we have the cloud option licensed (https://hub.docker.com/r/mathworks/matlab)

I would probably set this up in a separate new repository - @civier or @DavidjWhite33 would you like to look into this?

Kind regards Steffen

DavidjWhite33 commented 2 years ago

That is a very clever idea - we haven't got very far with the official matlab container yet, but will look into it. May need to add the compiler to the base container.

civier commented 2 years ago

Thanks for the valuable information, @stebo85 https://github.com/stebo85 I'm trying to read through here: https://au.mathworks.com/help/licensingoncloud/ug/configure-license-for-mathworks-containers.html But will have to play with it a bit.

BTW, did you manage to run the Matlab IDE (not the container) with your UQ site license on NECTAR? Until now, I've just used an individual license (that each staff member is provided with by Swinburne) and it worked fine.

Best, Oren

On Wed, Sep 22, 2021 at 11:28 AM David White @.***> wrote:

That is a very clever idea - we haven't got very far with the official matlab container yet, but will look into it. May need to add the compiler to the base container.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/NeuroDesk/neurocontainers/issues/55#issuecomment-924508418, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB7FUIZMRCSFEYCYETX32SDUDEWMJANCNFSM5EPWJL6Q . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

stebo85 commented 2 years ago

Ok, great :) looking forward to see your progress on this.

I haven't used Matlab for a few years, so no I haven't tried running it on nectar :)

stebo85 commented 2 years ago

closing for now, as compiling of matlab toolboxes works right now