Submind YouTube summaries
Thumbnail for EasyBuild + EESSI UK workshop (April 2023), part 5 of 5

EasyBuild + EESSI UK workshop (April 2023), part 5 of 5

Watch on YouTube

Video summary

The Easy Project, evolving from the EasyBuild community, aims to establish a shared repository of optimized scientific software that eliminates redundant installation efforts and ensures a uniform user experience across diverse computing environments. Unlike traditional tools that merely share build recipes, this initiative distributes pre-built binaries via CVMFS, a CERN-developed file system that streams applications on-demand similar to Netflix, guaranteeing consistent access whether users are on a laptop, an HPC cluster, or in the cloud. To achieve broad compatibility across various Linux distributions, CPU architectures like Intel, AMD, and ARM, and different GPU types, the project utilizes a sophisticated three-layer architecture comprising a global CVMFS file system layer, a glibc-based mini-Linux compatibility layer that shields applications from host OS dependencies, and a software layer containing strictly linked scientific applications. An automated detection tool called `archpec` identifies specific CPU generations and instruction sets to automatically load the optimal binary, ensuring that while generic binaries work universally, specialized versions utilizing specific vector instructions can significantly enhance simulation speeds as demonstrated with GROMACS. The operational model has transitioned from a niche utility to a robust community-driven ecosystem supported by initiatives like EESSI UK and the Multi-XScale EU project, featuring an automated workflow where researchers can submit pull requests for new software versions such as OpenFOAM. Once human reviewers approve these submissions for security, bots automatically build binaries across various architectures in isolated containers on platforms like Azure and AWS; successful builds are then tested, packaged into tarballs, uploaded to S3, and ingested into the central Easy Repository where they stream instantly to clients without requiring manual updates or administrative privileges. This streamlined process significantly reduces download sizes compared to full container images by pulling dependencies only when needed, while future iterations plan to integrate automated security scanning of source code and binaries alongside performance testing using tools like ReFrame to further ensure reliability and safety within the expanding software catalog. To optimize infrastructure and accessibility, the project strategy focuses on maintaining a core team that manages approximately a dozen global public mirrors rather than excessive redundant copies, with CVMFS deduplication ensuring these mirrors require minimal storage space even for thousands of packages. Organizations can host private mirrors within their networks that sync automatically with the public pool, facilitating cloud bursting and portable workflows essential for fields like bioinformatics while allowing seamless transitions between local environments and high-performance clusters. The system supports auto-detection of CPU architectures including ARM and future RISC-V processors as well as various GPU families, effectively overcoming the limitations of standard containers that often rely on a single binary fitting all scenarios. Currently in a proof-of-concept phase with mirrors located in Groningen, Oslo, Azure, and AWS, the initiative is seeking European funding to stabilize the system for production use by year-end, expand its software library beyond the initial hundred modules to include thousands of open-source packages, and eventually support additional platforms like macOS and RISC-V.
Read the full video transcript
good so yeah questions on easy build we handled that so the the last part of the workshop is um an introduction to the easy project um and that has sort of evolved from the easy build community not directly but there's lots of people involved with easy build also involved in the easy project this is really my favorite cartoon so this shows we have some very good ideas here on what we could do in the easy project but we have a day job and we need to keep the researchers happy with what we currently have so we're like we're almost too busy using Square Wheels even though we we know that there are proper Wheels ahead of us but okay so this is let's see not progressing as fast as we would like it to but we are actively working on it and we are making progress so what is easy easy is short for the European environment for scientific software installations we pronounce it as easy that's not an accident there's a clear link with easy builds and and things are this is supposed to make things easy right so that's why we gained that a bit the the European parts we often get questions on so if I'm not in Europe does that mean I cannot join also here in the UK that's a relevant question um we could change that first e to another word that starts with an E so we're and we actually consider that at some point um it's really just to game it and to have a a project name that sounds like easy um it was also a done deliberately to some extent to get some European funding for this which eventually worked out so there are some reasons why we have the European in there but there's definitely no limitation in terms of countries who can join or people who can use it it's an it's an an open source project just like easy with this um what we want to do here is we want to build work together to build a shared repository of scientific software that's optimized like easable does optimize for specific hosts and it's a repository of installations itself and that's an important detail we're not doing software packages like RPMs we're not doing recipes like easy config files that you don't have then have to install themselves we're sharing the installations themselves and that's an important detail and we will show this when we go through the demos and the actual structure of how this is organized what that means um the main goal we have for this is avoiding duplicate work so even if people work together on easy builds you still run into weird issues that you only see on your system you have to figure those out um so even if somebody already wrote an easy company file that worked for them you'll still have to go through that installation which may take time and it may fail because of specifics of your operating system or your setup and that's what we want to get rid of we want to start working together on the software stack itself rather than tools to get that in place um we also see this as a uniform way to providing software to users so right now even if the software is installed with easy build across multiple systems things are going to look a bit different maybe the model naming scheme is a bit different the location where the modules are installed are different some systems are set up where the modules are available to use and to load directly so and some other systems you have to do all you'll use first and maybe they're using a hierarchical model naming scheme and you're not so things get confusing and things are a little bit different and different enough that the researchers get confused if we have a shared repository which you can use in multiple locations it looks the same everywhere so that's already a big hurdle that's removed for the researchers the goal of this project and that's a very ambitious goal we fully realize that is that the installations we provide should work on any Linux operating system regardless of whether Ubuntu or red hat or whatever other variants or whatever version it is we shouldn't really care um about that um it also works in in WSL so the windows subsystem for Linux you can play with those installations there as well which is really just another Linux environment it's like a VM you're in um and we're also considering supporting Mac OS so that's different enough that's going to be another big effort right now we're not working on this but the door is open to also start doing this and make that possible so the goal is really to give you a set of software installations that work on your laptop on your personal computer at work to an HPC cluster and even in the cloud AWS Azure Oracle Google whatever you want to use it should work there as well um so that's mostly in terms of operating system but also it should work on different types of CPUs all generations of Intel new generations of Intel the AMD also arm CPUs um Power we're currently still playing a bit with power 9 but we'll stop doing that because that's sort of a dead end but in the future risk 5 is coming up as well as another CPU family let's say and we want to add support for that as well so lots of operating system lots of different types of CPUs and that we're not looking yet at interconnect Infinity bands or in the cloud EFA and AWS for example um different generations of Nvidia gpus but also AMD gpus Intel gpus ideally we want to support all of those as well and that's very ambitious but because we're working together and we're sharing the software installations themselves we believe that actually becomes feasible um and we'll see how far we get with that in the next couple of years so the focus of the project is very much on performance where we want um to use this for scientific software that's used on HPC systems so performance is a very important aspect here we'll have to automate as much as we can to make this feasible so if we'll have um people manually building software for these all these types of system architectures that's not going to work so that needs to be fully automated we want to also make sure that not just the installation work but that works but that the software actually runs and runs well so that it functionally works that it performs well so we're going to be testing all of these things and we'll have to collaborate together to make this possible so there's a website there's documentation on GitHub and I'll show you the the pilot set of the proof of concept setup we have for this and explain how this works this is just to zoom in on performance I probably don't need to explain this in detail here but this gives you an idea of what the impact may be if you're not being careful about the binary that you're running on a very capable system so this graph shows you the performance that you get for grow Max um one of the the brace Benchmark inputs for gromex um all the benchmarks or all these tests are run on the same system and Intel Cascade Lake system and all we're really doing here is using a different binary for the exact same version of gromac so we didn't touch the code at all we're just basically building this with different compiler options and seeing how how it performs differently if you build it with only ssd2 instructions so it runs anywhere on any modern x86 Hardware we call it the generic binary you get a performance of about let's say one simulated nanoseconds per day so that's a measure of how fast the simulation is the larger that value the better the performance is if you start using AVX instructions as well linear boundary that goes up and to the very end we also use AVX 512 instructions which are supported by Intel casket click then you get way better performance so performance actually goes up but let's say like 70 percent by only using proper Vector instructions for for the binary so the impact can be quite big and grow Max is probably a pretty extreme example of that maybe we're more talking 10 20 but that's still significant right that could still make a big difference so that's a very important point so what do we have as major goals in the easy project well first of all we want to avoid duplicate work not only for the people who are installing this software the HTTP support teams but also for the researchers so we don't want to relearn the software stack when they jump from one system to another ideally they can use the same um the same software installations everywhere tools like easy build and spec already do some of that but they're not really sufficient because okay we're automating the installation procedure and if it works for you that's good but you're still doing the installation and if it doesn't work you'll still have to figure out why that doesn't work for you and try and fix that so there's still lots of duplicate work here so we want to go Way Beyond just sharing the build recipes we want to go to towards sharing the software installations the actual binaries themselves um we want to build a uniform software stack that runs let's say anywhere so regardless if you're running in the cloud or running on your laptop or running on an HPC cluster you're basically using the same installations it looks the same it feels the same you know how it works and you don't need to lose time um to see how how all of that works um so mobility of compute is sometime sometimes that you often hear about when when talking about containers and conda so you're just taking your software with you we're doing sort of that as well it's more like the software follows you um automatically um and we do it in a way that we're aware of this this performance issue which in containers it's usually just it people ignore this silently just run one binary everywhere and assume that will be okay well it's often not and so you shouldn't be cutting that corner and we have a better way of dealing with that um if we manage to do this this will help with HPC training we can spin up virtual slurm cluster in the cloud train the scientists on this make sure they're lamps software for example is there they can play with it and then if the then if they can get home if they also have access to easy they get the exact same installations on the laptop they move to their Institute cluster they can also have the same binaries there and they basically know how things work so making the jump from being trained to actually using it after the training becomes a lot a lot smaller uh we think this can also help developers of scientific software so um let's say open foam as an example the open form developers probably know their own code base very well but they need a bunch of dependencies and they don't want to go through the pain of having to install those dependencies or having to figure out how to build different versions of GCC or C language so they can experiment with all these compilers ideally these things are just available somewhere for them to experiment with and also in in CI environments like GitHub actions for example they can get easy access to a wide variety of compilers there it's probably going to help them to also test their code with those compilers so there's lots of things that become possible if you could get this to work all right so how is this project organized it's really a layered structure three main layers a file system layer compatibility layer and a software layer the file system layer is what's responsible for Distributing the software installations we provide and for this we rely on an existing project that was created at CERN which is called CERN vmfs certain VM file system um this was built exactly to distribute large amounts of software across the world in a very easy way and I'll explain what this does it's a bit difficult to grasp but it's actually doing because it's so different from other types of Distributing software like building packages or or downloading container images but that is a very powerful concept and we're very thankful that the the certain developers the people at sir who developed this um have been sharing this as an open source project the middle layer the compatibility layer is what we need to shield shield ourselves from the host operating system so what we're basically doing there is building our own mini Linux environment so we don't have to rely anymore on what the host operating system provides the main part in there is glip C so we have our own glipse in there and then whenever we're running on Ubuntu or or Fedora or Centos Linux we don't really care because we're not we're not going to use the Gypsy in there or any of the other libraries to the extent that we can avoid that there are technical reasons that we sometimes can't infiniband drivers GPU drivers those will still need to come from the host because there's too much they're too tight to the kernel um so that we cannot avoid but we'll have ways of detecting what's there and if needed installing missing stuff and we're playing with that actively already so that's still feasible um on top of our compact layer we'll be stolen the actual scientific applications open phone tensorflow all these things they will link to the libraries and the compatibility layer and that way they can run anywhere because we're only relying on the host for the kernel essentially and whatever code lot rifles we cannot avoid and that works and that works well so this software layer is being installed with easy build today there's actually nothing specific in here that requires easy build we could use spec or other installation tools in this top layer as well as long as we can make sure that the whatever is being built in here links directly to the compatibility layer and not to the host so we cannot pick up anything from the host otherwise it won't work as expected next to easy build we're using lmod so we're generating mod environment modules along for these installations so you can pick them up we're using an external Library here called archpec which does detection of what type of CPU you have so not only is it x86 or arm but also is it Intel Intel or AMD and which generation of Intel or AMD is it is it one that perform that supports avx2 or Apex 12 instructions or not so this time the library basically tells us what type of CPU we have and based on that we can pick installations that are optimized for that type of CPU and the whole software layer is structured in such a way that this becomes very clear that this is happening I'll show how this works so that's the three main layers we're also actively playing with reframe for testing so reframe as a software testing regression testing tool created at cscs in Switzerland um like I said we want to do a very good job at not only providing those installations but make sure they work so we're going to be testing those installations in Ubuntu in sentos on arm on Intel on AMD and make sure that that all works I will do functional uh tests to make sure it runs but also performance tests to make sure it performs well so that we're on the right end of that grow Max Benchmark put um we're looking at today we're looking at Intel AMD arm and Power 9. power down is that then we'll stop wasting time on that but we will very soon start looking at risk five as well so there's there's big European projects that are actively looking into building um accelerators that use the risk five instruction set but also very capable CPUs that user describes so I mean let's say five years from now these will be very relevant um and we want to be ready for that so when when the capable CPUs are there we'll basically have the software to run on them which is usually the other way around happens CPUs are there and then people start figuring out how to build for it we can actually prepare for that already and hit the ground running as soon as let's say the first risk five supercomputer is there okay so that's a lot of information um let's see how should I continue I'll first explain a bit more what the file system layer does so that's how we distribute the software that we provide in the easy project um this is basically what what CERN vmfs does so this is not something we created but it's to give you some idea what's what certain vmfs provides so certain vmfs allows you to build a file system something like NFS that you can mount somewhere and it's always going to be read only for the clients so the people who use the file system cannot make any changes at all in the fastest they can only consume what is there um and it's mostly targeted towards software installation some people use it to distribute data files big data sets as well that also works what happens is you're creating and what's called a cvmfs repository so a file system in a central location a central server which is called a stratum zero and you make sure there are enough mirrors of that threat and zero that have a full copy of the software stack available and they think automatically with the stratum zero so whenever software is being added to the repository this can only be done here centrally and it just syncs up to everything around the world you typically have multiple of these mirror servers to make it redundant if this guy dies if everything is fine because these I'll have a copy and as long as there's one mirror server somewhere you can still continue and consume those software installations and use them in here you could have and we eventually will have thousands of installations um these have a full copy of that and when you as a friendly user here start using that software for example on an HPC cluster or on your local laptop or in the cloud um you'll basically be mounting from one of these mirror servers you're talking to this guy and if you fire up tensorflow you're here from a cvmfs point of view you're a client computer a few fire of tensorflow it's going to check cpmfs is going to check on your local cache do I have that tensorflow binary already I don't okay so I'll ask here in this caching layer this proxy cache um or squid cache extensorflow here already if not it's going to ask the mirror server please give me the tensorflow binary it's going to come back here it's going to be copied into your cache you have the binary and you can run it that binary is probably going to need libraries so the same story happens for the libraries so it's what's basically happening um very simplified is that you're streaming your software installations it's like Netflix when you say oh tonight let's watch this movie you click the movie and it starts quickly downloading the first part of that movie so you can get started it's the same thing here when you start running tensorflow it says oh I don't have that binary I have to download it it downloads it to your cache you can run that binary and there's a small startup delay of course because it has to do that um well the next time it's going to be very quick because I have a local a local copy of that in there um so that's one thing you have this streaming um streaming idea and it's fully transparent to the end user so if they start typing module Avail what is there what module Avail means I need to know what's in the in the directory it will copy the metadata for that directory which is very quick um that look you're loading the tensorflow module or an instant module file it's going to download that so all of this happens behind the scenes and it feels like everything is local maybe with a small delay the first time you hit something but other than that you can't really tell that it's it's all streaming in in the background so cvmfs hides this all from you and thanks to these multiple caching levels you have cash here you have the cash here which could be in the network of your HPC cluster you could even have your own full mirror server next to your APC cluster to make sure to reduce that latency for downloading um stuff everything is here even if this guy dies it will just automatically migrate to the other one to download stuff from there so as long as there's one somewhere around the world everything will nicely keep working if this guy dies no problem for a couple of hours we cannot add new software but everything else has a full copy so it's all good so this it's all like this peer-to-peer Network for streaming um your software the big Advantage is wherever you are in here in the cloud on your laptop as long as you mount this easy repository the serving MFS repository you're getting the same software installations everywhere so that's how we distribute stuff but that's not enough because if you build a binary for me on Ubuntu and I'm on Centos it's hopeless writers there's no way that's going to work so that's why we need the Second Step the second layer this is the compatibility layer um we construct this with Gen 2 prefix so Gen 2 is a Linux distribution where you typically build everything from source Gen 2 has a sub project called prefix because you can install your own Linux distribution in a prefix in an installation directory that you choose yourself when you're using cvmfs everything has to go into slash cvmfs so we need to be able to build binaries that work in that prefix that's why we use Gen 2 prefix for this uh again the biggest one here is gdpc there's other libraries as well to figure out usernames and things like this um but it's pretty pretty minimal so only the stuff that we really need is there um so we'll construct the compatibility layer once for every CPU family we support once for arm one's for x86 for now once for power as well and eventually one for risk five 64-bit as well so you basically have four mini Linux installations that are included in your cvmfs Repository so that way we Shield ourselves from the operating system and we can build a binary in here that works on Ubuntu or Centos or Souza or WSL whatever any Linux distribution so it looks like this in terms of the structure all CPM faster repositories are in slash cvmfs pilot easyhpc.org is the name of our easy Repository in there we have a couple of versions because over time we'll actually do versioning across the compatibility layer as well every now and then we will rebuild this Linux environment to get a new glipse version maybe once a year or once every two years whatever makes sense and in there we have a directory for Linux because eventually we plan to support Mac OS as well and we have a subdirectory for the CPU family that you're using I can show this interactively as well to get a better View on what this does and then on top of this we have the software layer so this is very easy build and lmod kicks in which we've been playing with for let's say the last day so in here we will build our big scientific applications and all those dependencies that it needs and they will link to the compatibility layer glipse and whatever other libraries not to the libraries provided by the host of us and that way they will work as long as that compatibility layer is available we're currently using easable for those installations we could be using other tools as well so anything that we can control to only use stuff from the compact layer Works spec I think today cannot do this but it could be enhanced to also make sure it doesn't go outside of this little box that it's supposed to stick into and then Arch pack is used for detecting what type of CPU you have a small part of that is which one of these three families are you using but also way more specific than that it's going to check if it's Intel and if it's an Intel Haswell or Intel Skylake like this so that means this software layer is not one set of installations software installations it's actually one set for Intel as well one set for Intel Skylake one set for AMD Rome one set for armed graviton 2 which is an arm CPU and AWS and so on so we basically have every installation multiple times for as many CPU types as we we need to care about okay I'll get back to this later let me show you how what this looks like on a system where we have easy available and it is right there in our prepared environment so if you do cvmfs you can start looking into this yourself you will find the easy Repository right now it's a bit more messy than we would like it to so there's an old version here uh that dates from the time before we had a versions directory So eventually this part is going to disappear in versions We have currently two versions this is assembling to the other one this is our latest version which is getting quite old we're actively working on a new one and we will probably ingest that next week so we've built one in April 2304 which is going to be our next version we have a latest Sim link as well which now points to uh the 22 21.12 so let's just use this latest Link in here like this in here you have the compatibility layer and the software layer so the two layers that are included in our file system layer which is cvmfs if you have an init subdirectory as well we have some scripts to set up your environment let's take a look at the combat layer first like I said a subdirectory for Linux because eventually we hope to also support Mac OS and here we have three CPU types our power and x86 and if we look into one of them this is where you'll see something that looks like a Linux file system hierarchy binaries libraries in here delete C is somewhere I always forget where here it is so that's our our glipse that we will be linking to uh in the software that's the compound layer our software layer has a very similar structure what type of os are we using Linux or Mac OS what type of CPU do we have RM powered or x86 but then here it gets a bit more fine-grained and x86 we have AMD Intel and generic generic means any activity 6 CPU I don't really care but then the Intel and the AMD directories we get a bit more specific So currently we have Hassle and Skylake for Intel and so basically avx2 and AVX size 12. and in AMD we have sent two and send three so Rome and Milo and then in here you'll find the modules and the software directories that easy build produces when installing software so you can see we have this whole structure in the repository so that this that's absolute Madness you would never let a research or manage this by hand right they would never figure it out that's where the init script comes in so we have an init directory which has a couple of scripts the most important one is our init script here and this does some magic this will use the arch spec python library to detect what type of CPU you have and use that to set up your environment so if we Source the script this script is going to change stuff in our current Channel environments we need to Source it not run it and this is very silent why is it very silent because it's probably already done let me do it on this confuses me it's supposed to give me some outputs I guess it's because if you log in it already does that by default so let me do it on our system to show you what kind of output you should be getting you can see it drops us in an easy environment but it's not really producing the output I'm expecting there's a way to make it silent so maybe that's enabled by default in the prepared environment let's do it on our system where I know it's not going to be silent so on our systems in Ghent we already have the easy repository mounted but we're not telling anyone yet so the researchers don't really know if they would be looking for it they can find it but we're not promoting this yet because we know it's not really let's say stable and reliable so but this is doing what the script is doing is it's doing CPU detection using archpec so and it produces some output says our spec says we're on an x86 CPU AMD Zen 2 so it's an AMD row which matches our login nodes that makes sense using that information it says okay so this is the subdirectory I'm going to use in the software label and it's telling you here in cvmfs Pilot easy the current version of that in the software layer I'm going to use the Linux um subdirectory I'm going to use this particular subdirectory for the modules so it's focusing in on the software that was built for AMD Rome and it does it automatically it adds this path to your module path um it finds the helmet configuration file for that makes those changes in the environment and then you're ready to go now what does that mean if I now do a module of veil of let's say open foam I should be seeing the open foam installation that's included in the easy repository now this feels a bit sluggish right because at first system FS says okay oh you need to you need to know what's in that module's all directory I'll have to download that metadata and and cache it locally otherwise I don't know what's there so that's why the first time it takes a while the second time it should be a lot quicker yeah it should be maybe not always um one thing I didn't do is we're still picking up stuff from that we have installed in in this case in my account on the system even if you empty your module palette before you will still see the things that here in the easy repository so right now we have three versions of open foam installed in there and those should work should work fine so that's the the setup that you do to get started to get your access to those modules and now let me let me do an all news of the stuff we have in my account so I'm only really interested in the easy things like this we have open foam we have grow Max I can load one of these and again this will make cpmfs pull in some stuff in the background so all these latency aspects these are annoying but you can limit those a lot by having a proper caching setup at your site right now it's not properly set up so that way it's a bit slow initially but it does work that gives us a bunch of modules and let's see if we're now looking which python we are using so the python command has changed because there was a python dependency loaded for God knows what here something um the python binary you're using is one that's coming from slash cpmfs the easy repository and the one that's specific to amds and two that is optimal for our current CPU so that all just works automatically so from a researcher point of view let's assume easy is available it's there all they need to do is somehow initialize their environment right now we have the source script and we can have better ways of doing that so they do this then they can start loading modules and start doing their software and they should work regardless of whether they're on an HPC cluster in the cloud on their laptop should just all work fine it also detects what you have if you're on a system let's say an Intel Cascade league so we only have optimized installations for Haswell and Skylake currently so if you check in here so in the Intel directory we have Haswell and Skylake if you're on a Cascade League system that means we're in trouble right because there's no exact match Arch spec is smart enough to say okay if you just take the Scarlet binaries you'll be doing pretty good so it knows what is compatible with what and it will take the the best possible match for your CPU even if there's no exact match so that should also work fine okay any questions on this yeah let's use the mic so when the users running this on a cluster they could do the sourcing in their batch job and pull everything that's right that's the better way yeah so if you do this up front and then you submit your job at slur which passes down the environment if your login nodes are different from the cluster you're submitting to you're in trouble yeah so it's better to do this from the job script itself yeah yeah yeah so you've followed a layered approach does that mean that you could remove the file system for example in future replace another one and there is that kind of thought process that yeah things will uh okay yeah so the file system layer we're deliberately not calling it cpmfs because that's just one way of Distributing like what you what you could do and we're planning to do this at least for archiving is you could say this whole directory so everything that includes this particular version of easy I'll throw it in a container image then I can take that container image jump in that container and Source from there so this is going to be a pretty big container image right because it's going to have AMD Intel arm power everything so maybe you want to zoom in a bit on something very specific or even specific installations from there you could throw those all in a container image and then you don't need cvmfs at all anymore so there's options there yeah if you don't like cpmfs you could sync everything to an NFS file system and just Mount that it will still work fine and I also saw that there was a branch that bypassed all the layers that went straight up is that because is that because of the yeah in the diagram the reframe part yeah the host OS you go all the way up bypassing all the layer Yeah by passing the compatibility and the four systems yeah yeah that's because for some things we still need stuff from The Host like slurm we're not going to give you slurm in here anywhere that doesn't make sense the GPU drivers need to come from the host because they're too much tied to the kernel your antiniban drivers need to come from the host they're too tight to your hardware and the girl so some things need to like leak in but it leaks in in a controlled way and we take we take that into account in here so when we configure our open API library for example we're doing this with libraries like ucx which which basically also detects what you have and just use what you what's provided by the OS and that works one thing I didn't mention I should have mentioned that is one question we often get like well wait this is a good idea but this is going to work in practice well yes because compute Canada has been doing this for five six years exactly this system this layered approach they used to use something different than Gen 2 but they have now also switched to Gen 2 because it's a better option they used to use NYX for the compat layer but this idea of this layered approach and using cpmfs that's basically what they do in Canada they have one software stack that's used on all the Canadian systems and they have a team managing that Central software stack that uses they have a mix of infinity band and omnipot interconnects they have a mix of Intel and AMD they're not playing with army ads but that's a detail in this setup that's really just another CPU you don't really care too much so it works absolutely fine yeah excellent thank you yeah another question there York a stupid question but there's some understanding if my operating system is quite out of date then but a user wants a latest greatest piece of software this helps me get around that yeah as long as you can get cdmfs running on it yeah that's enough that's really enough yeah and we we will be a bit careful here what we build because there is some things that check what kind of Kernel version you have kernel headers you have and take that into account that's something we'll need to keep an eye on as well so for example if if we're building something we can actively test for that we can we can test these installations in a center six VM that has a very old kernel just to make sure things still work yeah you can run our tests in there as well and that's something we plan to do yeah so we want to we want to um make what we support here as broad as we possibly can Mac OS is the annoying one because you cannot run a Linux binary on Mac OS that doesn't work so that creates a fork in that directory structure and for now we're not paying attention to that but gentle prefix works on Mac OS so we could we could build a special gentle prefix for Mac OS and now we're going doing good again we'll probably need to do it for every major Mac OS version which we don't have to do for Linux but yeah okay if we have to go through that pane we can and if all of this is automated that's not too big of an issue okay I see it seeping in slowly what what this could enable right so that's good um so let me continue uh we have a paper an easy paper an Open Access paper which explains in detail what we want to do with all of these layers mean how they work together how this thing is designed uh what kind of use cases this could enable and so on so this this paper was was written um it was published February 22. and by then we already had our pilot repository for for a while we've been playing with this so we knew technically quite well what we were getting into it's definitely not finished work um but the IDS are there one experiment we did with the 2021.12 version of easy which is the one I was showing we have a grow Max in there and someone ran as a regular users another sesame just in a regular user account was playing with grow Max coming from easy and comparing it with the grow Max they have installed in ulik which is optimized for their system and their interconnect and he was doing assimilation up to 16 000 core so pretty big I was seeing this kind of performance so the the dotted line is is ideal scaling the black dots are what he was getting with easy with the auto detected Zen 2 so this was an AMD ROM system um and the red is the performance he was getting with the optimized system installation so higher is better you see some of these black dots hovering above the red ones that basically means here we're getting better performance than the system one but that could be in the noise so I'm not going to say our installation is better that could be they're quite close to each other but at least we're in the same ballpark right so and that's already pretty impressive because this installation knows nothing about the system nothing about the interconnect it's just doing the the detection of the CPU open API does the detection of the interconnect and it scales and works fine and that's that's the main message here The Blue Notes that you see are the generic binaries that we also have in easy so you can force easy to use other binaries by just setting an environment variable so you can basically disable the detection and say run these binaries because I want to test this or see if it works so if you force it to use the generic binaries you're getting lower performance of course but it still scales so there is a gap here in terms of performance but it still works fine and this was a very important result that's why we put it in the paper this basically shows that the idea can work and you can scale quite good and again I'm not going to overstate this but this difference in performance here could be because we're using a newer glibc so I think this was still Center seven which means an old gdpc we were using a very New Delhi in our compound layer and that could give us a performance boost as well now again it's close enough that it could be in the noise but at least it's uh it's a same ballpark definitely all right so what's what's the current status of this whole idea um in the tutorial page this morning I wrote up a small history of the project it's um it basically started after having a meeting endowed with some Dutch universities that invited me there to talk about easy build because they had some crazy idea to work together on something big and they wanted to get some funding for this and they were figuring out what to do um and we had a bit of a brainstorm at the end of that meeting and the conclusion was basically let's try and do what the Canadians do but on a bigger scale like make it a community project make the European thing even maybe we can even get some European funding for this and and let's let's see if this works that was March 2020 it was a bit of a ruse also to have lots of beers together and have the Dutch people visiting Belgium and the other way around then the world changed a bit so we couldn't really travel much but we did use that time to work out the the proof of concept this pilot repository and we've been working on this um since then we set up a GitHub organization on easy called easy we've been doing monthly meetings monthly online meetings every month since basically April the 2020 to see okay what is the next step we should take how can we tackle the automation uh who's going to work on testing so basically getting ourselves organized writing the paper happened in in that Community as well and we applied for funding on the European level as well um so we ended up with a proof of concept setup where the central server is running in Groningen in the Netherlands and we have four stratum One servers um one gruningen one in Oslo in Norway one in Azure which is I think running on the east coast in one of the data centers a modern AWS which is running if I'm not mistaken in Ireland so they have four of these mirror servers that means we have a relatively robust Network as well and we just wanted to see okay what happens like one of these mirror servers dies is just fully transparently notice we also wanted to have a good set of software in there already for now it's only CPU because supporting GPU is a little bit more tricky and we had to figure it out but we have some big things in there like open foam like tensorflow like Romex you can load those modules and it should just work in terms of targets already good set of of CPU supported Intel AMD a couple of armed ones and we're still mucking about with power 9 but nobody's really interested in that and it's that's a pain to get that to work so we're going to stop doing this the interesting news here is also um we have pretty good contacts with with both Microsoft and Azure and they were basically throwing Cloud credits at us like whatever you need tell us if you want to build binaries and test stuff in different operating systems we'll basically do that for free and that helps us a lot we can because we can get very easy access and very quick access to a big variety of CPUs which is what we need to build all those boundaries um so that's been very very helpful so it's like if you look at what we're all combining here lots of Open Source packages so all these things basically existed already we're making we're puzzling them together and the Canadians showed us how to do that we're leveraging leveraging the clouds which gives us very easy access to all these different CPU architectures there's also changes in in openmpi and there's this companion libraries like ucx and lip fabric that do auto detection of what kind of fabric you have that's definitely an enabler for us as well so it's like everything is basically there to make this possible and make it work well and we're building that puzzle and making it happen uh that's basically what's going on um okay we'll do the Hands-On and demo at the end um once you have a good idea of what's going on now one thing we're now actively working on and thinking about is we want to make this a community project we won't to basically bring the community together and work together to get installations in there now how do you do that we don't want you to come up with the binary and say Here's a binary throw it in there right that doesn't from a trust and security point of view that's a bad idea and we also want to make sure that these things are actually working we can test them and so on so what we're doing is we're setting up a way that you can essentially send us a pull request and it's a bit easy build focused but it applies to other tools as well that somehow expresses okay I will I would like to have open phone version 10 added to easy so if you use this easy config file you should be able to build that binary for all these CPUs that you support could so they make a pull request and what we want to do I'll skip ahead here a little bit because there's a lot of technical stuff here that's not that interesting um yeah this is basically what we're going for is we want you to be able to open a pull request to our software layer that says Please add open form 10 with this tool chain or if you were saying okay that makes sense um our bot will start building that on all the different CPUs we have some in Azure some and AWS maybe some on-premise we'll use in a container for this so to isolate it from the host OS as much as we can once we have some tests we'll run some tests on those builds as well if that all works good we'll put those installations in tarball so it's all nicely in its own installation directory so we can make Dar balls to easily ship them to other places um those star balls get uploaded to an S3 bucket so like a place where we can collect stuff they get copied over to the central server before we add them to the easy repository we have another step and this is more to keep control of what's actually going in and this part is automated with the Chrome job as soon as a new turbo appears on the stratum zero a pull request is opened to our staging repository that basically says Ah this is a turbo these are the files in there does that make sense to add a human test okay makes sense so they they hit OK in that pull request if we want to we can have another bot here that really runs those tests and when we're running the test we could run them in the build container so the same build environment but also in a totally different container with a different operating system and it should still work so it has to pass all those tests as a dollar looks okay they'll be added to the easy Repository and again easy repository as just a cvmfs repository it's streaming that means if open form 10 gets ingested here it will automatically appear on all the clients that mount easy they don't need to do an update at all it's just streaming in like Netflix adds a new movie you don't need to update Netflix right it just appears that's exactly what happens with all these installations as well so we're now working on on building this whole Pipeline and automating this all and making sure this works we've been quite we've been quite successful at that already we have a bot that you can tell go ahead and build all these things and it reports back whether that worked or not uh but we're improving on this the testing step is now very light to almost non-existent but that's the next iteration so build and deploy is our biggest goal and the test part we can we can enhance later so that's really the explicit goal to make this and a community project that's more text which is basically explaining what I just did so that that Bots that I talked about is a GitHub app which means when you open a pull request um an event gets sent to some python code that can decide what to do and the event could be if the reviewer hits OK on that pull request that's an event and the bot would say ah that means I can start build start the build on all these things automatically so we're basically taking out the human as much as we can we do want to still people have approved things so we're not getting anything malicious in there but that's the idea so it's automatically building that there's some slides on this as well that explain it step by step so someone opens the pull request and our our goal there is to make this an easy stack file so this new experimental feature in easy build that just says it now actually looks a bit different but basically says I want open foam built with this tool chain and these two versions the reviewer said okay that looks good um and then easy book knows how to do the installation there's an approved review the bot says okay I'll submit some slurm jobs to build all these things on different types of CPUs that gives me turbos for all that software um the builds the bot says the builds worked now what do I do and the reviewer says okay let's go ahead and test this and make sure it works in another container right maybe we're building incentives and testing a Ubuntu that should work because of the compact layer if it doesn't we overlooked something um I do could have a reframe test for that as well then the bot says tests look okay to me now what do I do and the human says okay let's go let's get it in there it looks good so this this cycle is um is what we're now building and then when the bot gets okay it just can do all these uploads and ingestion um so you basically add it to the easy repository and then you're done then everybody can start running that software Goods like I mentioned um one of the goals of this initial collaboration was this is a very good idea but nobody has time right Square reels and round wheels and all that stuff so getting funding for this was very important it took us a while it's a lot of effort to start writing this idea from scratch um do you realize that getting funding for a service like thing is not easy it's not research um so what we did is we found some researchers that actually have ambitious ideas as well that we can help so they want to develop some software to do multi-scale modeling like batteries and helicopters and all these complex things where they need lots of software it's a headache to get all of that in place and and be able to migrate between systems are very easy so we are helping them they're like one of their one of our demo one of our use cases um so we're combining forces with with Scientists from the seacam Consortium together with people that are already active and easy we're joining forces there we have a scientific uh use case and we are going to help them in in achieving that use case so that's what the multi-x scale project is about we propose that to as a euro acpc center of excellence it got accepted and January first of this year the project actually started so we now have let's say more dedicated manpower to make easy uh possible so we're going Way Beyond the spiral repository the development of this bot has really sped up a lot in the last couple of months we've made very good progress there so we're slowly working our way to make easy more reliable and and go beyond a product Repository we have a website as well where we're starting to make noise about the things we do we had a kickoff meeting and so on so demo um one demo I will do is I already did the one on our HBC you get infrastructure what I will also do and let's see if this works because I didn't test this at all this morning but it should work um oh I love this what I'll do is I'll I'll create an empty Ubuntu VM in AWS and show you how quick it is or how quickly I can get access to easy on a totally empty system so a blank operating system so I'll fire up VM somewhere in here launch a new instance it's been a while since I've done that okay easy demo let's make it Ubuntu 2204 that makes sense let's make it a bit more interesting and go for arm um we should at least have some c6g I think let's go for eight ish CPUs 16 gigabytes of memory that should be enough for a demo I have a key in here and finding where that key is is going to be interesting but I'll figure it out and the rest is pretty standard I'll make sure it has enough disk so 30 gigs of disk and the rest should all be fine so I'll fire that up that should only take a couple of minutes and then we can check if we can actually get easy working um so that's basically the top one that I'm just setting up um there's nothing there cpms will not be there that's on the standard package so we'll have to install this first but we have a tiny script for that and then we can at least show on a single VM how quickly we can get access to this of course this requires admin privileges you need to be able to install cpmfs and configure it and mount that file system um if easy is already there you don't need to do that like I did on our cluster I was just a regular user there so I can just Source the internet script and hit and start running that scientific software there is another option I'll get back to these when the VM has spun up there is another option and that one you can actually try yourself on the prepared environment or if you have a system somewhere where you have either Singularity or obtainer you can try this yourself so this only shows you part of the instructions but if you click the link to our documentation this will show you the steps that you have to do so you have to pre-create some Library some directories you have to bind Mount some paths in there because these locations this needs to be writable for cvmfs that's where it's put it's putting the cache um also this place needs to be writable our making sure we have an empty home directory and then you can basically do a singularity shell to Shell into our container so the container we're providing you here our easy client container basically only has cvmfs in there it has no software like open foam or gromax um so that's just a way to get around not having admin access to install cpmfs our mounting the repository using the fuse Mount option of Singularity or obtain so that works absolutely fine if you copy paste these things these commands on any system already have Singularity or obtainer it should work and it should give you a shell like this where you can then check that cdmfs the easy cfmfs repository is mounted you can Source the script and try something okay let's see how our VM is doing and if I can get access to it it looks like it's running so well it's still initializing but it should be close I'll need to figure out where that key is I think I have it in here somewhere and I've kicked off a VM in U West so that must mean it's Easy E West must be this one I'll need this identities only and then our front part is always what is the username and you start I think it's Ubuntu yeah okay so we're getting access to our MTVM Ubuntu 2204 there's no model command here absolutely hopeless there's no easy builds uh yeah so we have an empty operating system so what now what I will do is clone the easy demo repository that we have on GitHub if you can just get clone this so all we need is git that should be easy to install in here we have some test scripts for grow Max open foam and so on there's also a script directory which has some installation scripts and this one is for Ubuntu scripts of course so this is all you need to do to install cvmfs and the config the easy configuration for cvmfs so this whole part is cvmfs this part is our tiny configuration package which just installs and configuration file for cvmfs that tells it about the easy repository very soon this will no longer be needed because the cpmfs people are asking us to include easy in their default configuration because they see the value in this as well so this part will disappear and this creates a tiny configuration file for cpmfs where here it says I'm not using anything special in terms of proxy cache or I'm basically directly connecting to the mirror server which is not ideal for latency but it's good enough and this says you're allowed to use 10 gigabytes of cache don't go beyond that so it's like a what's it called as soon as it's long enough ago that you you've pulled something in the cache you you know or need it will be kicked out so it recycles it has a name I forgot what it was so I have student rights in this VM I can just run the script it will pull in cvmfs which will pull in some dependencies as well so that's going to take a minute or two uh but once that's done um we can get access to the easy repository and start playing with the software that is there so you can imagine even a researchers could do this right if it's only running a single script so if they're spinning up a VM you could have a pre-configured VM that has this already installed so that's what the AWS and the Azure people that we are working with are considering you could give um pretty big TM images that are tagged with easy and that way all you need to have is cvmfs in there and everything is basically pulled in as you start using it so that makes it very attractive it's going to be a small VM that gives people access to lots of stuff so that's it now let's see this looks empty so that looks wrong but cpmfs does Auto mounts so if you actually know what is there and even less on that it will mount it now it's actually mounting the easy repository and from here it's exactly the same as before latest in its Bash uh this is some arm CPU I'm not sure what and it's a relatively recent month so it does a little gets a little bit confused but it's basically an arm graviton 2 at least that's what it detects and then it does the same thing as before does the multiple views on that which means we suddenly have open foam grow Max tensorflow all available open foam tensorflow grow Max the law looks good so that means we can start uh so now I'm in the tensorflow directly there's a run script here which basically does a module load and runs the python script so very very basic and this again when you run it it's like come on let's go right but it's even FS is pulling in all that stuff on the background not only the module file but we're firing a python so it has to download that python binary all the dependencies for that the python packages but you can see it takes a couple of seconds and it starts running tensorflow I think it's very difficult to make it easier to get tensorflow running than than this for now this is CPU only there's no GPU support yet but we're working on that and that will also be possible yeah that's very important of course and this you can try yourself you can you can in the prepared environment you should be able to just clone the easy demo repository and run one of these example Scripts and it will uh as long as you have set up your environment to use Easy with the source command it should be working fine if you have obtained around your local cluster you can you can do the same thing As Long as You Follow um the instructions here so this is let's say the technical details on how to set up your environment and do the singularity shell if you look into our documentation and the easy container part in here we actually have a wrapper script as well which does all that magic for you and drops you into a container that has easy available so as a scientist as long as they have the script they can just run the script and they can do single node stuff very easily any questions on that yes thank you yeah so you showed us the pipeline where you deploy automatically the the new software and and one of these steps which is you said that it's not mentioned here but it's basically testing and I'm assuming yeah that's the reframe tick mark it's there it's not we're not actively doing that yet but we will yeah so I guess that's functional testing you're referring to but uh we could also do performance testing in there yeah but what about kind of security aspects because you know if you're taking software from another kind of unknown built by that could also be done there yeah so this this um approval step here that can be human it just says okay right or you can have security scanners in here as well that first scan the source code that you're pulling in and gonna use for the installation yeah and there's lots of tools that do this already they're usually quite cheap if you're only scanning source code it's okay you could even after the build rerun the scanners again on the binaries for the check for watermarks and or fingerprints yeah that's definitely possible yeah I should we become more and more serious about this we're we're going to do that of course and this is a one-time cost right so this you only have to build those boundaries once thoroughly check them then it's okay but we will also also do actually even after stuff is already in the repository we'll do weekly retests to make sure everything keeps working because at some point in we bring back this guy um in the compatibility layer here there's a gleep c that we build ourselves tlpc also has security issues that pop up every now and then so we will have to update our TBC in here I will have to make sure that doesn't break anything in there because Philips is supposed to be dropping replacement drop and update in practice it's not always the case right so that's something we're very careful so what we can do is in the in the sandbox environment do the delete C update and then rerun our test suite and see if something is broken and that's that's exactly what we're going to do okay I have a couple more slides on what this could enable if it's um actually working and has a bit more software so there is stuff to play with there but let's say it's in the about 100 modules eventually when we have this automation in place we'll start installing everything that easy build has because why not right as long as it's open source we could include all of that in there and then you have a collection of let's say about three thousand software packages waiting for you to be used it's like a catalog and you can just start using them if you think you need them so that's the demo did I forget something here not really so please give it a try the easiest way to try it is with um with Singularity over obtainer you don't need anything else if you have obtained installed you can pull in our client container as long as your environment is set up correctly and you can do single node tests with what is in there and easy quite easily so this enables a couple of things that haven't really been possible before so that interesting things start to happen so when you give people a uniform software stack that works everywhere um there's like new opportunities that arise and we're discussing them also in our Open Access paper so uniform access means wide variety of systems you can run anywhere you can play around on your laptop if you're confident enough that your script works or your input files are real prepared you can jump to the bigger system with a lot less effort your operating system becomes mostly irrelevant we can leverage high-speed interconnects like we showed with the grow Max Benchmark and so on and we can actually prepare ourselves and that's part of the multi-xql project we can prepare ourselves from for the time that there will be risk 5 CPUs super computers in the future so that's something Euro the EU is betting on quite heavily they want to become um self-sustaining essentially so build their own processors and become independent from China and there are risk five is is one way that they will be able to do this so there's lots of research going on currently and a small part of the multi-x scale project is to see how difficult it is to start building binaries for these CPUs already we can do this in um with emulation so we can have an emulated VM where you're building stuff for risk 5 which is going to be quite slow on your building but once you have the binary it should run you can actually start building the software before the CPUs will be there because this is very standardized instruction set and very predictable you know all the nasty details that you need to know we can we can make this happen um there's lots of software like open API like python already works fine on risk 5. so it's it's starting to get there that it's become more realistic to to do this already even though there's no very capable CPUs yet um like I showed with auto detection of the CPUs and building for different generations of CPUs you can do this without compromising on performance so very different from what you do with the container image where you build one binary that works everywhere and even that is going to slowly start changing one binary that works everywhere works as long as you stick to Intel and AMD if you go to arm it's game over you have to rebuild your your container your container image and the same thing with risk 5 so you will at least have three contains images that you need to juggle around so that's that's sort of a dead end at least to me but in this collaborative software stack you can build for different generations of CPUs different families of gpus and you can either Auto detect or you can tell it which part of the stack it should be using so that's a very to me that's a very large contrast with generic binaries that you typically see in containers um it facilitates Cloud bursting as well so if people have a job and the queue is too long on your on-premise cluster and you have some credits in the cloud just throw your job into the cloud and as long as your data is there your software will be there waiting for you bonding this also enables is using um easy NCI environments that that to me is very interesting so some scientists are definitely running tests for their code like every time they change something in the code they have some test cases that they run over and over again something that's very painful is that that means they have to compile their software I have to make sure all their dependencies are there you have to make sure that the compilers that they want to play with are there all of that could be coming from Easy because why not all you do is mount a file system load modules and Things become magically available they are streamed in as they are needed so all you really need to install a cvmfs as a package and I showed you how quick that is and everything else is streamed in as is needed file by file so not huge packages of gigabytes that you need to download and also in other environments so in in Jenkins or GitHub actions this is quite typical but it also enables you to run those same tests on your laptop in the same software environment as well now we've actually done this um we actually do this for our demos so for the tensorflow demo I was running we're running those tests in in GitHub actions as well in a a workflow um to basically make sure that our demo script still works and doesn't break and all we need to do here and this is very small we've come up with our own um GitHub app or this is uh no this is a central GitHub action for mounting cpmfs repositories in this environment so you just tell it okay I want to use this I want to mount the easy pilot repository the configuration for that can be found at this URL so this action knows that it should install this package and do the amount of that and then you're done you Source our Inlet script and you start running your tests you load modules in those tests and everything just streams in as needed so it's very very quick when you do that we're doing this in the easy demo environment I'm not sure if this link will still work because they clean up stuff in there every now and then but you can see we're running our test for tensorflow open phone grow Max and bioconductor and we do it twice I think we do it once with CPU detection and once forcing it to use the generic binaries just to make sure both of those aspects work um so that's to test our own demo script we can imagine a scientific software developer developing your own code could write tests that just load a bunch of modules for the dependencies or load different modules for different generations of GCC that you want to test with and then make sure that that code keeps working with all of that so forget about figuring out which RPMs to install it could all be coming in from Easy so that's at least very different to what's currently possible that's another that's another example where we have our own dedicated action for making easy available in in GitHub actions and there you only need to give it the version that you want to use everything else it knows that's a bit more minimal but it works just as well and here for example reloading grow Max and we're checking the version works fine yeah that and that's that uh infection like I already mentioned this also facilitates HPC training so if you're giving a training session on open foam maybe you want to also explain them how to install open foam that's going to like be day one of the tutorial I'm not sure you want to spend your time on that if you want to focus on the actual science that they do you could say for this training we're going to use the easy environment because open form is installed in there we even have two or three variants of open foam installed in there so you can pick one and when they get home they can try it on their laptop as long as they mount easy they can jump to their cluster send an email to the system and then say this easy thing can you please make it available because it makes my life a lot easier and they can hit the ground running with the stuff that they learned and uh in the tutorial also for the trainers it's very easy they can set up a slime cluster in the cloud they mount easy and as long as the software that they need for the tutorial is there the work is done when the training is done you just throw away the cluster and you set it up again for your next training session so that that helps a lot compared to making all people that are attending the training get an account on that system and going through the security or whatever whatever Administration is needed to get their account just set up your own cluster in Azure or AWS and there's lots of tools for that like cluster in the cloud or Magic Castle and there's parallel cluster for AWS there's AC hub for Azure so there's there's lots of tools that allow you to do this quite easily and integrating easy in there is very very trivial like I showed it's like five or ten lines of Bash as long as you can figure out how you can make the the tool do that you're you're good to go this I also briefly mentioned already um we think this could be a step towards software developers as well so if someone was asking are people opening it was the final I think are people opening pull requests um or easy blocks um not really because easy build even though many people are using it it's quite Niche it's just one way of installing the software but if we have easy and we go talk to the gromac Developers for example and say look you could maybe add this to your documentation this is an easy way to get access to grow Max binaries that run anywhere and that are properly tested that also makes it a platform for them that's maybe more interesting than helping out some random build tool that that only a handful of people are using um so it could alleviate them from many questions on installation if someone isn't sure as long as they can figure out how to get easy uh working they can get grow Max running and then they should be happy and that means it's maybe more attractive for developers to actively help out um validating the installations that we provide they could figure out or they could help us figure out which tests we need to run to make sure it's all functional if we're doing a performance check they could tell us one nanosecond a day on an Intel scar Lake that seems a bit low right so something must be wrong there well we have really no idea we can say we get a one and we'll try and make sure we keep that one but if the developers say you should be getting five nanoseconds a day yeah that helps us as well and we can we can figure out what we did wrong so that getting that kind of feedback I think becomes more interesting from the developer point of view because you'll probably be helping a bigger um a bigger set of people of researchers as long as they use Easy also for the developers themselves like in the CI case um maybe they can get their dependencies their compilers that they want to play with from easy and that upstairs uh their development a bit as well another thing is portable workflow so especially bioinformaticians do a lot of this they string different tools together in a pipeline um and all the tools do something small but they're genomic data or whatever they are using that's all very good but if you need a thousand tools to get your research done that becomes a bit painful to get all those installations in place if they are a part of easy a big pane of that goes out the door and they can be running their snake bank or next flow or whatever um on top of easy that's very different from the the container approach that some of these tools take when you're running next to all you're pulling in containers which includes a whole bunch of binaries that you're probably never going to run right well with tvmfs only the stuff that you're actually using is being pulled in so we're downloading way way less things than you would be downloading full container images yeah all right so that sort of wraps up all the the content I've prepared there's our Open Access paper there's our website we're still doing a mailing list for easy which is only used to announce our monthly meetings really there's very very little activity there but we do have a very active slack Channel where people jump in all the time um and ask us some questions we have documentation which could definitely be improved but it's not that bad we're on GitHub we have a Twitter account we have a YouTube channel just like we do for easy build where we're posting any any talks we do or we had a community meeting last uh year in September in Amsterdam where we also explain easy from scratch and a bit slower paced than I did today but also talking a bit more in depth about the use cases talking a bit about um the Bots that we're building and so on and we have monthly meetings which are really open to anyone to join yeah that's what I have in terms of content um yeah I guess so I think I'm I'm pretty much done in terms of content so we can still answer some questions of course but yeah if you can I think that makes sense to see if as soon as they can start the coffee break it's okay yeah so I think the model is that there's essential repository of all the easy software and then there's all these mirrors yeah so I mean potentially if you have many many users you're going to need lots of neighbors so who's managing the mirrors who's owning the mirrors who's paying for the mirrors you know software mirrors for the mirrors yeah okay that's a good question um so from a naive point of view it looks like the more mirrors the better that's actually not true so there's like the cvmfs people tell us go for a dozen mirrors or so spread around the world but don't do many more than that because every time cvmfs starts or or need software it's going to check like oh what's my best option here which is the close it's just geolocation of the mirror so based on the IP address it figures out which one is the closest one it should be talking to to minimize the the latency and the delay in downloading stuff the more options it has to choose to the more things it needs to bring to see if they're still alive and it's actually going to slow things down so we're looking at the order of like a dozen or so mirrors um and what we envision is that the the let's say the maintainers of the project um also maintain the mirrors at least the public mirrors because then if something goes wrong with the mirror if it's somehow not syncing anymore that would be bad because that means new software is not streaming in there if you're coming in through that so we're looking at a at like say a core team of how many maintainers we will need um that also keep an eye on those mirrors set up monitoring and make sure everything works as expected so we think like let's say 10 dozen mirrors a couple in the US several in Europe one in Australia one in Asia to be close to those people if they want to use it as well but the focus is going to be on Euro probably um and that that should be enough yeah so there will be a team managing that there's um as a part of the multi-xcal project there's the idea of setting up a rotation among five or six of the partners that are involved in the technical parts of the of the project so they will be keeping an eye on on the mirrors they also we're also set up a support portal for easy well people can ask questions or say I tried running this and it didn't work and then we can either figure out this is the problem with the system is the problem with easy do we need to talk to the software developers like pull in the right people and try to figure out what's going on and make it possible um one thing I didn't mention which is also interesting the ones I'm showing here are like the public mirrors so which are part of the easy Network let's say um if you install our easy configuration packets those are the mirrors that cfmfs will know about you can install your own mirror server as well you don't have to ask anyone it's all documented on how to do this you could put it next to your HPC cluster in the same network so you're reducing the latency and that will automatically sync with the public servers of the network so that's like your own mirror only for your use case and that will not be serving anyone else so as long as you do that and you maintain your own absolutely fine yeah so that's just one or maybe two more servers that you add to the list and the configuration and then cvmfs will also bring them but not all the other ones that people have at their own cluster so you can in your network you can and that helps as well because maybe your your cluster nodes don't have access to the to the web so they could be offline as long as your your mirror server is in the HPC Network and you can ping that that's actually okay that's all you need because your mirror server has a full copy of everything another thing a full copy sounds scary that sounds huge right maybe hundreds of terabytes yeah not at all so what compute Canada does is they have thousands of software packages installed and last time I checked they were still under a terabyte of disk space with cvmfs because cpmfs does deduplication it will never store the same binary twice so it has object storage in the back end it's like git where all these hashes and so it has only the every file once on the on the disk and it also does compression on disk and and when sending the data over the network so compute Canada can can serve all the software all the Scientifics of the researchers need across the whole of Canada with a terabyte of disk so yeah setting up a mirror server is not scary in terms of resources you need it could be a two or four core VM with one or two terabyte of SSD disk then you're good oh yeah coffee yeah okay well I don't need no no I guess no yeah I don't think we need to ask for more I'm happy to take more questions but other than that it's sort of a wrap right um so it's it's up to you if you can uh if you're ready for the weekend I'm totally fine with that I'm also happy to answer any any questions I'll show you something more specific more technical uh up to you so yeah if you can I would say take a look play around with it maybe on a VM maybe through the container and just see if it doesn't work for you we'd really like to hear from you because now now is the time that's also clear in our documentation so we're whenever we talk about using easy there's a big fat warning here right so this is not ready for production our pilot setup is you can play with it and there's been very little instances where it doesn't work but please don't make this the only software that you provide on your cluster today that we don't have strong guarantees there we're going to move to a different domain we're going to make it easy.io that becomes a bit more neutral not HTTP specific because we're going to rebuild our ccmfs network with dedicated Hardware that's securely set up with ubikey so only a couple of people can can access it and stuff like this so and when we're going through that exercise now once we do that and once we have the Automation in place with the bot to set up that whole contribution workflow then we'll start saying okay now we think you can start relying on this and assume this will work today not yet but I think by the end of this year we'll be a lot closer to that if not already there so that's an explicit goal and the first year of the multi-xql project is making easy ready for production which means it's stable it's properly set up and from that point almost start expanding with more and more software testing uh making noise about it attracting attention getting developers involved and so on okay if there's no more questions I'll I'll stop the recording yeah all right yeah thank you