-
Notifications
You must be signed in to change notification settings - Fork 202
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
Features needed for full support of hierarchical modules #862
Comments
The "meta"-easyconfig file below can be used as a test case. However, if you try to use it to build the whole dependency chain automatically, it will (most likely) fail as the generated modules need to be postprocessed (see above).
|
Also, it proved to be very tedious to keep the dep resolution working correctly (with fyi. furthermore not prereq to close this issue, yet nice to have along with it, is #863 |
Excellent job on figuring this out and documenting the effort, thanks! We'll try and look into fixing the issues you ran into soon, I'll keep you posted on progress. |
@geimer, @fgeorgatos: #110 has some comments from @rtmclay (the Lmod developer) on module naming. I'm not sure how to avoid this to obtain 'clean' user-oriented module names like
But, then the |
The implemented module naming scheme was just a demonstrator and definitely needs to be improved, agreed. The fundamental issue here is that the current notion of a toolchain includes "everything". In the hierarchical scheme, however, one would need to strip off the compiler and MPI as they are handled by the hierarchy already. That is, a three level scheme like the following could work:
Now, if the "olf" package also exists for other compiler/MPI combinations, switching the compiler or MPI would just work fine. In fact, such a setup was discussed by @fgeorgatos and myself while investigating this. However, there are still some open issues for which we don't have good answers yet:
This kind of magic could potentially be implemented, but AFAICS would need some (more or less unmaintainable) logic inside the modulefiles requiring knowledge about the supported math pseudo-packages and their inter-dependencies. I doubt that anyone really wants this... |
Hi, first, things first, here is an extract from an internal note about hierarchical modules namespace,
Namely, we had a lengthy discussion with Markus evaluating the different approaches and the conclusion -at least from my side!- was that no site has it automatically better and it is more a matter of operational organization and user support's style what is really best:
Both approaches mentioned above are compatible with
Somehow, there is an assumption by most big HPC sites that the compiler & MPI stacks are the only major concern and that's it. Of course, there are limits and caveats with this approach. Indeed, schemes currently used by most HPC sites, do not strive for total uniqueness and, even IMHO, nobody wants to have or maintain the 3rd layer of
This brings us to the "matrix" concept that @rtmclay has been considering for a while; @boegel, @geimer: With time (and when people will start routinely handling 10^5 builds) it will become obvious to the many, which approaches work optimally, when and how… F. |
ie. I am proposing to go for the 2 implementations mentioned above who may be the most popular:
|
@fgeorgatos: short response to this: we will (need to) figure out a way to support both approaches, and not tie down EB users to one or another... I think they key part here is the custom module naming schemes. I feel we just need a way of communicating to EasyBuild whether modules are organized in a |
During the 5th hackathon at FZJ, we almost managed to get hierarchical modules working. The procedure is basically a three-step process as follows:
It would be nice to have the MPI module name and version as well as the module class available for this step (see #687).
This is the example for the compiler easyconfig file. The MPI easyconfig file actually needs an additional '../..', as the build directory it is specific to the compiler and its version.
The '../' stuff is currently needed to go from the software installation directory to the top-level prefix. This definitely needs work for the case where the 'software' and 'modules' directories are not stored under the same prefix.
This step should be automated, and the paths cleaned up. In fact, the path depends on the custom module naming scheme defined above.
This removes the modulefile directory prefixes from all 'module load' or 'is-loaded' commands in the modulefiles. This is needed to make loading of dependency modules work.
NOTE: The C/TCL versions of modules on the web are somewhat broken to make 'module switch' and 'module purge' work (I have a patched version of TCL modules available that works, which I'm happy to share). Lmod should be fine, though.
The text was updated successfully, but these errors were encountered: