EESSI / compatibility-layer

Compatibility layer of the EESSI project
https://eessi.github.io/docs/compatibility_layer
GNU General Public License v2.0
11 stars 21 forks source link

Installing user ebuilds on the compatibility layer? #156

Closed APN-Pucky closed 2 years ago

APN-Pucky commented 2 years ago

I recently stumbled on the EESSI architecture and I am wondering if it is possible to install custom ebuilds through the compatibility layer or is it better to install/setup the software via easybuild?

If I want to make my own code available for HPC, I'd prefer the gentoo ebuilds over easybuild since it seems more widespread. Though easybuild probably exists on more clusters.

I am writing this as a issue since I could not find a discussion tab on github.

boegel commented 2 years ago

I'll let others (@bedroge, @amadio) pitch in here as well, but in general the answer is "yes" I think. We have our own set of custom ebuilds in https://github.com/EESSI/gentoo-overlay/ for example.

The main difference between the compatibility layer (Gentoo Prefix + packages installed with ebuilds) and software layer (software installations done with EasyBuild) is that in the installations in the software layer are optimized for specific generations of CPUs (Intel Haswell, Intel Skylake, AMD Rome/Milan, AWS Graviton 2/3), while in the compat layer we only have one subtree per CPU family (currently x86_64, aarch64, ppc64le), which implies that the tools and libraries available there are in no way optimized for specific CPUs (so performance is lower than it could be).

Maybe it's easier to discuss this a bit more interactive way, for example via the EESSI Slack channel. If that sounds useful, please use the form available at https://www.eessi-hpc.org/join, and we'll register you to the EESSI mailing list (very low volume currently) and EESSI Slack.

bedroge commented 2 years ago

Do you mean you want your own ebuilds to be added to the EESSI compatibility layer, or do you intend to build your own EESSI-like setup?

In the first case, this can be tricky: as @boegel already pointed out, we install the scientific software for each type of CPU in the software layer. Furthermore, we try to avoid (at least as much as possible) having the same applications in both the compatibility and software layer, as this would otherwise confuse users of the stack. So, if you would like to have, say, TensorFlow installed in the current EESSI compatibility layer, I don't think that's a good idea. If we (EESSI) would want to do something like that, I think we should build an additional repository/layer where we do this, i.e. one without the EasyBuild-based software layer. This shouldn't even be that difficult.

If you meant you want to build something yourself, then this shouldn't be too difficult either. You can try this by installing your own Gentoo Prefix on your HPC cluster, add your own ebuild overlay, and start installing packages with emerge. If you have multiple CPU types in your cluster, you can take a similar approach as we do in EESSI by having one such stack per CPU type.

Finally, note that for an EESSI end-user it doesn't really matter at all. They just get an optimized version of the scientific application they want to use, and they probably don't care if that's installed with emerge, EasyBuild, or something else.

APN-Pucky commented 2 years ago

Thank you. I'll join the Slack channel.