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

hpc-carpentry vision #13

Open
psteinb opened this issue Jul 20, 2020 · 8 comments
Open

hpc-carpentry vision #13

psteinb opened this issue Jul 20, 2020 · 8 comments
Labels
question Further information is requested

Comments

@psteinb
Copy link
Member

psteinb commented Jul 20, 2020

in many debates around hpc-carpentry, people start to ask for more advanced material on MPI library Z or parallelisation paradigm/library Y or accelerator X. I ackowledge that this "featuritis" is inert to the HPC community (no judgement implied by this).

I propose to formalize our vision more concretely. This will help newcomers directly grasp where hpc-carpentry wants to go and where it will not go, e.g. that we focus on teaching concepts rather than technical details.

Moreover, I suggest to explicitly emphasize that hpc-carpentry limits itself to an onboarding material. This would make it more inline with the other carpentry activities.

Thoughts and feedback is highly welcome!

@psteinb psteinb added the question Further information is requested label Jul 20, 2020
@ocaisa
Copy link
Member

ocaisa commented Jul 20, 2020

I can see where you are coming from, particularly since it gives a clear immediate goal: define what is implied/required by onboarding and create the lessons to support that.

However, I can also see how this can be somewhat demotivating since it will mean HPC Carpentry will never cover MPI or OpenMP or CUDA or Julia or SyCL or... I would be more inclined to support this if I knew we were willing to create an HPC Carpentries Lab to collect (and in some way support) lessons that go beyond this set (and we already know of a few that do).

Another reason I put it like that is that if we ever apply for funding to support HPC Carpentry, saying that all we will do is to teach people how to log in and submit a job (I know this is cynical interpretation) is unlikely to sit well with reviewers whose expectations are that we reach for the stars.

@psteinb
Copy link
Member Author

psteinb commented Jul 20, 2020 via email

@tkphd
Copy link
Member

tkphd commented Jul 20, 2020

Yes, clearly defining the scope of this Carpentry – where it stands, and where it's going – is important.
I'm most familiar with Software Carpentry (git, shell, python). It's hard to put my finger on the line they draw between novice and intermediate concepts; they definitely don't touch anything advanced. I tend to agree with @ocaisa that we need something more than "log in and run this simple task." Teaching the basics of an OpenMP and an MPI program would be great, in my opinion -- I think these are "experienced novice" territory.

I think teaching how to write CUDA or Kokkos code would be a great, but these feel akin to branching (for git) or Python/C API, probably beyond the scope of "introductory" material. If we can find suitable existing tutorials, pointing to those would be great. Otherwise, we'll have to plan to write & maintain such intermediate material as our Carpentry grows, and have some hard conversations about what lessons get archived along the way.

@psteinb
Copy link
Member Author

psteinb commented Jul 21, 2020 via email

@HaoZeke
Copy link
Member

HaoZeke commented Aug 6, 2020

A quick look through the material (except for the Introduction course) seems like the focus is on parallel programming. Shouldn't we instead focus on:

  • Data provenance --> AiiDA and Snakemake
  • How to install new software (without root) --> starting from brew to manual installs to Lmod
  • How to ensure homogenous environments across the cluster --> pkg-config paths and more
  • How to effectively interact with the data stored (given the GUI handicap) --> scp, TRAMP, ssh and more
  • Profiling on the HPC (not with time)
  • Parsing logfiles
  • Hardware utilization and optimizations

@psteinb
Copy link
Member Author

psteinb commented Aug 7, 2020

Hey @HaoZeke thanks for chiming in. Those are wonderful ideas. Thanks for sharing.

But keep in mind a couple of things and potentially re-evaluate that list:

  • mind our learner profiles, points like How to ensure homogenous environments across the cluster are in my view very advanced for this crown
  • we want to target the majority of learners that fall in our learner profile, so Hardware utilization and optimizations, Parsing logfiles (and I admit I am not too sure what you mean by this), How to install new software ... all of these 3 points fall into a very advanced curriculum given the learner profile.

Let's start by shaping a good training material for the majority of novice HPC users, establish a working and fair community around that, then we should approach the advanced topics that many in HPC jump to right from the start.

@reid-a
Copy link
Member

reid-a commented Sep 2, 2021

This has obvious relationships to Issue #54 about audience selection. Now that we have regular coordination meetings, this issue is maybe less important, but the content identified should not be lost.

@reid-a
Copy link
Member

reid-a commented Sep 2, 2021

See also Issue #63 for maybe capturing some of the links.

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

No branches or pull requests

5 participants