Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

create a Container lesson #92

Open
tkphd opened this issue Dec 2, 2021 · 3 comments
Open

create a Container lesson #92

tkphd opened this issue Dec 2, 2021 · 3 comments

Comments

@tkphd
Copy link
Member

tkphd commented Dec 2, 2021

From the SC21 BOF:

Where should we focus efforts on future lessons?

  • Containers (74%)
  • MPI Framework (59%)
  • Python language (59%)
  • Dask framework (19%)
  • Julia language (15%)
  • Chapel language (0%)

Clearly, we need to evaluate existing container lessons and consider adopting one, or start work on our own HPC-centric lesson. One already exists in the Incubator! Reproducible computational environments using containers: Introduction to Singularity

@tkphd tkphd added this to the Incorporate SC21 Feedback milestone Dec 2, 2021
@reid-a
Copy link
Member

reid-a commented Jan 6, 2022

The linked-to Singularity container lesson is very good, and I think reasonably well-paced, and includes a unit near the end on building MPI-aware containers, which is adjacent to what we want.

Also, their MPI example is the OSU latency benchmark, from the OSU MVApich benchmark collecttion, which might be of interest to us. Not all sites offer mvapich, of course, but the containers get around that in the obvious container-y way by installing it from the Ubuntu packages.

One possible complication, which will arise for any lesson that proposes to include examples on how to build a Singularity container, is the privilege problem. You have to be root to build a singularity container. This lesson gets around this by doing the build locally in a Docker container running in privileged mode -- it's likely that Docker will not be available (or not available in this mode) on an HPC resource, so users may need to build the containers on other resources where they have more privilege and transfer the resulting containers to the HPC resource to run them. This is not addressed in this lesson. File transfer is somethign we already address, but local-laptop privilege and/or Docker infrastructure might be complicated to set up and explain.

@aturner-epcc
Copy link
Member

@reid-a I have been involved in teaching the Singularity material from Incubator a number of times now. We have typically taught it as part of a two day workshop with https://github.com/carpentries-incubator/docker-introduction as the first day. This means that people are familiar with Docker and have a working local install they can use for building Singularity images on the second day. This approach has typically worked well. see, for example:

https://www.archer2.ac.uk/training/courses/210728-containers/

The other option which avoids attendees having to have a local root access route to build singularity images is to use the Singularity remote builder service: https://cloud.sylabs.io/builder Attendees will then need to sign up for a sylabs.io account to access the service but I have found that uploading the Singularity recipe file to the web interface and building there works well. You could also call out to the remote builder from the CLI on the HPC system if you want (though users will then need to generate an access token).

@bkmgit
Copy link

bkmgit commented Apr 3, 2022

It may be of interest to use a machine learning example, for example from https://mlcommons.org/en/mlcube/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants