
Research Computing Roundtable - Turnkey HPC: Software Stack
Webinar Synopsis:
Speakers:
-
Zane Hamilton, Vice President of Sales Engineering, CIQ
-
Glen Otero, VP of Scientific Computing, CIQ
-
Jonathon Anderson, HPC System Engineer Sr. CIQ
-
David Godlove, Solutions Architect, CIQ
-
John Hanks, HPC System Assistant, CZBiohub
-
Jeremy Siadal, HPC Systems Engineer, Intel & OpenHPC
- N/A
-
Alan Sill, Managing Director, High Performance Computing Center at TTU
-
Chris Stackpole, Turnkey Solutions Integrator, Advanced Clustering Technologies
- N/A
Note: This transcript was created using speech recognition software. While it has been reviewed by human transcribers, it may contain errors.
Full Webinar Transcript:
Zane Hamilton:
Good morning, good afternoon, and good evening wherever you are. We welcome you back to another round table with CIQ. Today we are going to be talking about software and the HPC environment. We have a great panel of people with us today. Go ahead and let them join. Excellent. We will probably have one more here in a minute. Maybe. Maybe not. I'm going to go ahead and start and have everybody introduce yourselves. I know I think everybody has been here before, but let's start with Jeremy. If you would introduce yourself again. Oh. Can't hear you, Jeremy.
Jeremy Siadal:
There we go. Can you hear me now?
Zane Hamilton:
There you are. Yeah, absolutely.
Jeremy Siadal:
Okay, great. Jeremy's Siadal with Intel Corporation. I also represent the OpenHPC project. I've been a HPC systems software engineer for going on 20, some odd, years now.
Zane Hamilton:
Excellent. Thank you. Chris?
Chris Stackpole:
I'm Chris Stackpole with Advanced Clustering Technologies. We are a turnkey solutions integrator for HPC systems.
Zane Hamilton:
Thank you, Chris. Dave?
Dave Godlove:
Hey everybody. I'm Dave Godlove. I am a solutions architect here at CIQ. I've got a background at the NIH working as a scientist and also as a support scientist.
Zane Hamilton:
That's excellent. Thank you. Alan, welcome back.
Alan Sill:
Thanks. Alan Sill, managing director at the High Performance Computing Center at Texas Tech University. One of a group of co-directors of the National Science Foundation's Cloud and Autonomic Computing Industry University Cooperative Research Center. My background is in particle physics. I just got too close to the computing flame.
Zane Hamilton:
Thank you. Jonathon?
Jonathon Anderson:
Yeah. My name is Jonathon Anderson. I am also a solutions architect here with CIQ. I have a background in HPC systems admin and Systems engineering. Mostly at central services organizations.
Zane Hamilton:
Thank you, Jonathon. John? Griznog?
John Hanks:
John Hanks. HPC system assistant man and the life sciences mainly. Mostly here to tell the kids to get off my lawn.
Zane Hamilton:
Appreciate it, John. Let's go ahead and dive in. I think there are a couple different ways you can look at software and the HPC environment. Ah, we will let Glen introduce himself. I think everybody has seen Glen before, but since he slides in late, we are going to make him sing a song or do something fun. I'm kidding. Glen?
Glen Otero:
I was going to introduce myself with a performance dance, but I probably don't want that. Glen Otero, recovering scientist in the life sciences, bioinformatics. Tied to the computing director at CIQ for genomics, AI and ML. I am a borderline boomer, so you can all get it. Just get off my lawn.
How is Software Changing? [2:56]
Zane Hamilton:
Appreciate it, Glen. All right. Back to what we started before Glen interrupted this and came late. There are a lot of different ways you can look at HPC software. From a systems environment, from a system admin perspective, and from a user perspective. I think it's interesting the way that things are progressing. I know Jonathon and I talked about this quite a bit. The way containerization might be helping, changing, or making it more complicated. That's kind of what I wanted to talk to you guys about today is how do you see that landscape? What does that look like? We have been doing the same thing for a long time, but things are definitely changing. You guys have different experiences than all of us. I'm curious to hear from each of you, like Jeremy. From a software perspective, what are you seeing today?
Jeremy Siadal:
Well, actually you brought up a really interesting point on containerization cause, one of the systems I'm supporting right now is built entirely around containerization. That is the expectation that the users will provide their own containers with their own jobs. They package up their own software, they bring it, and what they get is a set of nodes that are really absolute bare minimum installations. Then they are expected to run their containers on top of that and then the nodes are completely wiped. Of course they are running with Docker containers in order to keep the security intact. It's not only just wiped. You wipe the systems and reboot them.
Zane Hamilton:
That's very interesting. Thank you. Chris, what are you seeing today when it comes to software?
Chris Stackpole:
I have an interesting perception on it because a lot of our customers are looking at the lifecycle of their cluster and the research that they are doing impacts now. They don't have a whole lot of long-term stuff. It's built for the cluster. They are built right now and then they will run that for the life cycle. Then next cluster, build a new system. I've also done a lot with researchers that are writing papers that may be 10 years before the life cycle of the paper really starts to be challenged and reviewed. In that case I've been that admin where I've been asked to install applications and software 10-15 years old on a modern HPC system, in order for them to verify the results that they ran then because it's now being challenged. Can they get the same results from that paper? That is a very hard problem to tackle when you're being asked to pull in libraries that haven't been supported since row four or five. A lot of the containerization focus that I've done in the past has been with some of those long life cycle applications. With the hope that 10 years from now when those same researchers are being challenged on the papers they just wrote this month. It's going to be a whole lot easier for us to verify those results.
Legacy Libraries [6:09]
Zane Hamilton:
Sure. Before I move to Alan and John. I want to ask you, Chris. Whenever that type of thing is taking place today, is it really your responsibility to maintain and keep those legacy libraries around? Or are you pushing that back on the researcher and the end user? How does that go?
Chris Stackpole:
Well, the number of times I've thought, "man, past me was such a jerk. Why didn't he do this better?" Is pretty high. So a lot of it is a, how do I make my job easier in the future? I mean, that is definitely a motivator. Working with a lot of these researchers, we are seeing where the long tail of HPC is growing longer and thicker. So people who 10-15 years ago didn't even know how to spell HPC, are now being asked to run their jobs at HPC because that's the only place their data can be big enough to run. So they aren't computer scientists. They don't really have an interest in learning HPC. What they are good at though, is their job and their specialty.
They know their code, they know their research really well. It's from an admin point of view. How do I help them so that when they have this issue in 10 plus years where I have to revisit this code. Can it run? Can I help them? Or anybody who's trying to verify their code ensures that it's actually working. One of the issues that we had, a real example, was where they were being challenged on some of their papers because they were very ahead of their time when they wrote it years ago. I was trying to rebuild library sets from el5 and we were actually finding some variation differences depending on if we ran it in a 32-bit container VM or 64-bit VM. The libraries did not behave well because of the libraries at the time.
Trying to get the exact same version of the library to get exactly the same results was very challenging. So the hope is that I don't really care what it looks like in 10 years, but having it packed up inside an image type of a container. There is a high likelihood that I will be able to better match that library set for them. Because it took me weeks and weeks to recompile these old library sets that haven't been supported in so long and trying to get them to match exactly right. For the end user researcher, that's too big of an ask. So it's and we hear this all the time, especially the last two years, the reproducibility of papers and science. We actually reproduce these papers. It keeps coming up because somebody has all these crazy assumptions that are made and then nobody else can reproduce them. But yet that impacts the media, that impacts decisions. We've seen a lot of that where rushed research or impartial research made bad decisions that impacted a lot of people. We want to make sure that when we are doing reproducible science and have reproducible data, that it's as reproducible as actually possible. A container really helps in those environments for those researchers.
Containerization and Software [9:49]
Zane Hamilton:
That's great. Thank you for that, Chris. Alan, I know we have talked about containerization, some. We have talked about software, some. So give us your view.
Alan Sill:
Yeah, so it's sort of like, I'll make a food analogy. It's when I travel to Italy, I'm always shocked how quickly Italy totally reprograms you as to what you think food and drinks should be. Inside of a week you're discussing the fine points of Ligurnian vs Tuscan olive oil and think that coffee should come in those cups and stuff. When you start to use containers, you start to think why isn't everything in the container? Let's tick off very quickly some of the reasons that some have been mentioned. Reproducibility though, let's come back to that. You can even get a DOI for your image. You can store an image like a single file. It's storable as opposed to a long list of building instructions.
You can. It's portable. You can run on different machines with the same image. You can run images with different operating system versions than your operating system version as long as they share certain kernel characteristics. Keep in mind the fundamental design concept of a container is unsharing shared name spaces and memory, right? It's an unsharing technology. It lets you isolate yourself from some details as long as the kernel is compatible. We can come back to that and talk about MPI, for example. You can bring your own software. You can build it. You look at all these advantages, you think, "why isn't everything in containers?" Maybe CIQ has that in mind, but surprisingly, not all food is Italian and not all food is you know. Not all software is in containers. Despite some obvious advantages, there are some things holding people back and it's worth examining some of what those are. I won't make the full list, but I'll just hint that vendor specific software often doesn't support installation of containers and so forth. I'll stop there.
Zane Hamilton:
Absolutely. Thank you. John, I think you've probably got an interesting perspective on this as well. Managing some large and dispersed environments.
John Hanks:
Yeah, we. My current environment has been completely different from all environments in the past. In the past I've had modules set up and had 1600 plus packages in a module tree to support environments. But I've been running this cluster for about a year and we have had almost no software requests whatsoever. Pretty much everything people have done. They've brought their own. It's been a mix of containers and software installs. Mostly Anaconda environments. The extent to which all software is going into Anaconda and containers is, I've been flabbergasted by it. I never would have expected it from the beginning. Because my view of containers is, you tell me I swam across the English channel. Well, fantastic, you swam the English channel and then you say somebody else comes along and says, "I got on a boat and got in a lap pool and I swam laps while the boat drove across the English channel.
Well, good for you, but that seems like a lot of extra work. You could have just swam the seamless channel, right? That's been my historical view. But yeah, it's. From my perspective, being an admin on the software side is getting easier because more people seem to be self-supporting than they used to. On the occasions when I do have to get involved with installing a software though, software quality overall seems to be going down to me. There. Things are really complex. There's a great xkcd cartoon where he's basically got all of civilization and down at the bottom there's a little tiny piece. It says, "a PyPI package. It hasn't been maintained in 12 years or something." All this stuff that's getting jammed in containers today on the idea that things are going to be reproducible. I don't think people are admitting that time actually flows forward and things change. You're containerizing bugs, security holes, and all this other stuff. Is it really going to be valuable? I think to the extent that doing it today gets you a paycheck, great, but in the future I don't really see people dragging these things out in 10 years to try to reproduce something. In any case, they did. It's not scientific reproducibility. It's digital reproducibility and to me that's a pointless exercise. I don't really care about digital reproducibility.
Zane Hamilton:
Interesting. Thank you. Glen, I'll go to you next. You've seen some stuff.
Glen Otero:
Yeah, it's actually. Just thinking about it. It's been interesting because I've been of the mind that yeah, we need to use containers for all the reasons that people have just stated, right? The reproducibility aspect, the fossilization of a moment in time that you can go back and reproduce, but just been thinking about using. Seeing the container used by the bioinformaticians. It's actually the reverse. They're actually trying to live in the future. They're just always downloading the latest/greatest bioinformatics app or the latest/greatest release to rerun their pipeline. Make sure. Find one more variant, validate the research a little bit more that they are on the right track. Trying to pull stuff down that or run something that someone built on Fedora, but you're running on Rocky kind of thing.
So just using it as a time machine to go forward on a production cluster, but really without much thought of, "oh yeah, I should keep this container around and give it a DOI cause this could be there for reproducibility for other people." I don't think they really see past their own lab, their own work. Again, just try to pull down the latest and greatest app and get it to run where it normally wouldn't on their laptop or on the clusters they have access to. One of the reasons I think cloud also is caught out a lot there as well is just being able to run all this latest, greatest stuff. Again, don't think about security, don't think about what's going to be supported in a couple years. Ditto for all the Anaconda environments, right? You better keep that YAML file around, but good luck rebuilding that environment in just a year, right? I think it seems to be a little like a two-edged sword. I think it's more of a. Well, I think it's necessary. I don't think it's sufficient.
Zane Hamilton:
John, did you have something you wanted to add?
John Hanks:
Yeah, Glen actually reminded me. I left out my absolute favorite aspect of containers. To me, the absolute biggest positive container is that software developers will often refuse to write decent installation instructions, but if they containerize it by definition, they have written installation instructions. Which I can steal and go use the stuff outside of a container. From that perspective, I do like containers because it motivates people to write decent install instructions that will actually work.
Zane Hamilton:
That's true. Thank you. Dave, Mr. Container around here. I know you've been spending a lot of time working on containers lately and trying to containerize some stuff. I mean, we have been through this before and from a researcher perspective as well. What are your thoughts on all of this?
Dave Godlove:
Yeah, I mean. There are so many interesting thoughts that everybody just had to riff on. I mean. I'm taking notes here, like, "oh, I want to get back to this and I want to get back to that." I don't really know where to start, but I mean. I guess two main threads here from what I'm hearing are reproducibility, which we are talking about. Later here and then a little earlier we were talking more about helping users, empowering users and allowing users to install their own software. I guess maybe. I'll comment a little bit on that. I mean, coming from the NIH, we, the team there, have this really great attitude about the users, about the scientists. That is that these scientists are, but they are brilliant and they know so much about their domains. There is so much to know and so much work to do that they can't possibly be expected, on top of that to become computer scientists. In addition to everything else they've already done.
So it is our job to take these biologists and these folks who are into all these different sciences, and are very deep into them and know tons and tons of stuff that we will never know, and help them with stuff that they might not know and don't have to. So I wonder, are containers helping with that? They can help with that and they can hurt with that, right? We can. Containers might make scientists' jobs harder down the road because we might say, "okay, here's a cluster with a container run time, have at it," right? Some scientists might be fine with that and be fine with building all their own containers, but it's just offloading a lot of the sys admin work or maybe a lot of the applications of port work off to the scientists.
Is that okay to do? Is it not Okay? I guess it depends on the situation. Then another thing too is that when containers first hit HPC, we thought that that's what they were going to be. All scientists were going to end up building their own containers, using package managers, and such inside the containers to build all their own software and have everything. That's not how it's turned out at all. How it's turned out is that, other folks, third parties build containers and put them up on Docker hub. End users just download containers. They don't actually build them. Maybe in that respect, it actually is helping the end users quite a bit. Just a lot of interesting things to talk about and think about. Then on the reproducibility side of things. I mean, one thing to note is for scientific reproducibility, distribution, collaboration, and things of that nature. Often another lab doesn't want to take somebody's workflow/data and just press a button and see that the same figures pop out.
I mean, it might be reassuring to some extent, but they want to. What they want to do is they want to take their own data and maybe get the code base and they want to modify the code base a little bit and push it forward, right? They want to be able to look at this stuff and edit the code. Use their own data and do things like that. Do containers help with that? Because they might help with that from the perspective of being able to push the button, run the workflow, and get the result. But then after you're done, you're like, "okay, now I want to crack it open and look and see where the code is at and what's going on and how do I modify it?" If you're not a container expert or a file system expert or whatever, it can be a pain to get inside that container, start digging through it, and figure out where all the bits are and what makes it run. I don't know. Just random thoughts based on everything that we are just talking about. I got a million more, but I'm going to cut it short in the interest of letting the other people talk.
Zane Hamilton:
That's interesting, Dave. I hadn't thought about having to go back and actually change the code. Once you have to crack open a container. That is an interesting point. Thank you, Jonathon. I saved you for last.
Jonathon Anderson:
Well actually I see Chris raising his hand. I would like to hear.
Zane Hamilton:
Oh, sorry Chris.
Chris Stackpole:
No worries. Just on that point. There are actually. Something I've witnessed a lot with some of the researchers is that when they are trying to reproduce they do want that first round to be, can I reproduce it exactly as it was published? Because there's a huge difference between attacking a paper because the data or assumptions are wrong versus that the mythology was wrong. If I can prove that the mythology with the data matches correctly, then all of a sudden I can say, "okay, your ideas and concepts, these are what we need to actually focus on." If you had looked at this problem from this view instead, that makes a huge difference than just saying, "well I got different results and so therefore your whole paper is worthless." Which actually does happen quite a bit when people can't reproduce the results. Part of being able to get that initial click of a button, download it, and get the exact same results means that I'm now at least mimicking exactly what the paper author had and I can reproduce their results? Now I can go ahead and critique what it is about the paper that actually makes sense. How do I adjust this? How do I tweak this? Can I look at this problem from a different view and get a different result?
Zane Hamilton:
That's a good point, Chris. Thank you. Okay, Jonathon. We have talked about this quite a bit. We have talked about this quite a bit lately. I know you have some opinions on this and why it is good for containerization?
Jonathon Anderson:
Yeah, so I compare this moment in HPC and scientific software containerization to, and this isn't necessarily my original thought, but the thing that's most useful to me is to compare it to the advent of data center automation and infrastructure as a service. We saw with the large cloud providers, AWS, Google, Azure and all the others. Virtualization is an interesting technology, but the game changer there is that it takes something that historically only a subset of people could do. The sys admins in your organization who had the rights to the data center or who knew how to do it. It takes something that only a small group could do and turns it into something that anyone can do. Not that everyone does, but it simplifies the workflow of setting up a server to the point where now the sys admins are, if they are in a virtualized environment, doing things very similarly to any random person who might want to spin up an instance in an infrastructure as a service environment.
I see containers that same way in this conversation. I've been doing a lot of work figuring out the best way to containerize MPI applications, for example. My thought process on that is not and now the sys admins or the support people will never install another piece of software again, but that now anyone can. Someone mentioned earlier that it hasn't been that all of the scientists just build their own containers, but that third parties do. Because anyone can. That doesn't even just mean you're users. It means you can run containers from wherever and now you can draw value not just from the people running your cluster, not just from the people that work on your cluster, but from anyone who's building any container of a certain type. You can pull it down and run it.
One of the things I highlight in some of my MPI container demos is that there is nothing special to the environment. I'm running this container in this container. I can just pull it down like I pushed it up to Docker hub. Cause why not? I can pull it back down and run it, but as long as I had an Apptainer on a different cluster, I could run it there too. There's no dependency. I think the biggest win for me. I totally agree by the way with John's pointing out that a big value is the containerization of the install instructions and self-documenting how a container works. That breaks some of my brain because I'm a systems guy and I really want things to be declarative and very well specified. The fact that containers are really a kind of fancy shell script dumped in a file bothers me a little bit.
When I get over myself enough for that, I realize that's how most people share sys admin knowledge when they are not sys admin anyway. So it flattens that landscape and lets everyone talk that same language. Here's just the raw stuff that it needs to do and then you package that up and do it once and you can hand it around. I think that's really cool. I'm looking forward to more of that. Not that I think that all of the users on all of the clusters will always containerize all of their software, but since anyone can. It only has to be done once for anyone to be able to use it and get value out of it.
Alan Sill:
Before we go on to the next topic, Zane. I wanted to highlight a couple of things that we have mentioned. Are there rocks under a stream if you're kayaking, right? The MPI topic is better. It's in the sense of Monty Python. This you turn me into a newt getting better. It's still a problem. The MPI standard itself, the whole range of them is trying to converge towards interchangeable MPI, but we are not there yet everywhere. As I said before, anything that goes to the kernel to make its call, you have to ensure compatibility between the kernel and the containerized version. If you've had better luck moving Apptainer containers around, I want to hear more about that. Maybe you guys can post about that.
The this. Through this thread, there's been a sort of a line about reproducibility and I put into the private chat a comment that I'll just say here publicly that friends of mine who study reproducibility say that it's far inferior to transparency. As Jonathon said, "the great thing about a container is the recipe is right there in front of you and the transparency is there." For example, there's been a lot of security concerns about software bills of materials. Software SBOMs, right? Sort of a bad acronym, but software bill of materials supposed to ensure that if you have a security problem and software chain, you can figure out what's dependent on it. But usually that concentrates entirely on the built software and not on the operating system dependencies that were hidden there like glibc and so forth. That the software is equally dependent on but won't show up in an SBOM. A container in principle can do that, but you have to go back to that rubric. Are you getting transparency or are you getting researchers downloading black boxes? Because they say they have a piece of software in them. If you can do what Jonathon said, great. Cause you have both reproducibility and transparency, but if people are just treating this as a black box and you're carrying security problems along with you and so forth. You haven't won.
Simple Route to Containers Via SPACK [29:36]
Zane Hamilton:
Thank you for that, Alan. We do have a question. I think we are going to pop it up. I think Greg responded to it, but Martin asked "can a researcher get a simple route to containers via something like SPACK?" I know Jonathon, we have talked about this as well. I think it's interesting for you guys. I mean, Greg has answered yes. I think this leads into the next question ahead for you guys, but I'll let you answer this one first. Jonathon, since we have talked about this recently, I'll let you.
Jonathon Anderson:
Yeah. I've experimented with this a little bit. Absolutely you can start a base container and as part of your build, install SPACK in it and build software in it. I have definitely done that. One of the downsides to doing that is you lose a lot of the caching benefit of SPACK. Building software takes a long time sometimes, especially these scientific applications. Part of building containers is often rebuilding them over and over again. If you're throwing away your SPACK build cash, every time you're rebuilding a container. You're losing a lot of the benefit that you would get out of something like SPACK. I personally more recently have been using the OpenHPC project for this instead. Using the software that's already compiled there, rather than building software unless I absolutely need to.
I also, as an experiment, nothing production has come out of this yet, but I took advantage of Apptainer's support for sandbox containers where you can have a mutable directory instead of a zipped up single zip image and used that as a base for my SPACK builds. Then built sub-containers off of that. You can, but if the point was to simplify it in the beginning, you're often the weeds if you're doing something as bespoke as that. My general recommendation would just be to use what people have compiled already.
Alan Sill:
I would. Let me push back on that just a little because we are. We use SPACK a lot here. I don't know if people have noticed this, but the Exascale Computing Project has been publishing a single container built automatically through ci/cd processes regularly. I don't know if it's nightly or what frequency or if it's on demand, but of all their software. So basically all ex. They have this thing called E4S. The Extreme Scale-scientific Software Stack. Oh, I actually remembered it. So E4S. You can actually go there, you can hit the downloads button, and you can download a whole container. I've done this. The software, some of which is extremely complex and difficult to install yourself, will run out the box on your machine. Okay, what are the downsides? Well, it's a 50 gigabyte container.
Beyond that, there is a very strong qualification for any software project to get into the E4S stack. I would say three quarters of the software that our researchers depend on daily here isn't in that stack. This is software that's been qualified to run on Exoscale machines. Let me wind back just a little and say that's an interesting idea to build such a container simply for versioning and testing as you just hinted. Suppose we are going to change the SPACK version or we are going to go to a different operating system. It would be great to have a ci/cd process that built all of our apps in a container that we could use for testing. Whether or not we actually intend to download that one single container to all of our worker nodes for any given revision.
So I'll just summarize this by saying one of the big potential advantages of containers, especially if we can use the sandbox style ones, would be for the difficult job of version testing. If we have a certain set of built software that we support on our cluster, it would be nice to get a head start on the next operating system release, the next SPACK version, the next MPI, whatever. You can do this with single bits of software but SPACK. It's harder to do the whole thing.
Why is Deploying Cluster Software Complicated? [34:02]
Zane Hamilton:
Thank you Alan. I'll come back to a point you made in just a second, but we have a question I want to ask real quick. Then I'm going to get back to that Alan. After 30 years of HPC style or of Beowulf HPC style, why is deploying cluster software still complicated? Or is it really just the management over time and image drift that's complicated? Anybody want to jump on first?
John Hanks:
Oh, I'll offer my opinion on that. I don't necessarily think it is complicated. We. All of my software stacks over time have always been just, I built it and installed it. Including all the complex stuff back when I did real HPC back in the day. It wasn't complicated to do, but it required a lot of patience and knowledge that I learned by getting smacked in the face over and over again by things like Wharf and Fortran, one underscore, two underscores, three. Whatever you're going to do to get things to link. For somebody who climbs the learning curve, software is not necessarily hard to install other than to the extent developers do a really bad job of documenting it and giving you what you, the information you need. You have to reverse engineer a lot of it. For making that simpler with SPACK, EasyBuild, and stuff. I've avoided those because every time I've looked into them, I've wound up feeling like they were hampering me from installing software as fast as I could on my own.
The extra layer. If something will compile with configure, make, make, install, I don't need EasyBuild and SPACK. If something is so complicated that every release is changing the build options, then again, I don't need EasyBuild and SPACK. It's gotta be fixed there every time too, right? I don't need those. But as a general overview of this kind of thing, tools that attempt to take the complexity out of it, I think give people a false impression that they know what they are doing. If you give a doctor a scalpel that makes them a surgeon, but if you give some random person off the street a scalpel that makes them a butcher. Maybe not everybody should be installing software. I'll just throw that out there as a possible option for the way the world should work.
Zane Hamilton:
That's a great point, John. Thank you. Jeremy, you're nodding. I'll pick on you.
Jeremy Siadal:
Yeah, I was going to say, having installed cluster software for the last 20 some odd years, I don't think it's more difficult. In fact, I think it's a lot less difficult now and it's not just experience. It's that there has been a lot of work into simplifying a lot of the tasks. Where I still stumble continuously. It's the combination of fabric software, MPI, and the application all working together. I think that's just a lot of, I think John pointed out, it's software quality. Are the software developers following the standards set forth? Are they making those standards transparent or is their software fully tested before they are actually putting it out? Cause I certainly encounter that a lot. HPC is still very much an open source software project.
I represent a very large open source software project and a lot of the software. I certainly feel a lot of software goes out before, I think it's ready to go out. That's, I think a lot of the issues come in, but certainly having to work on like the Warewulf project. That's, with that in place, I think it's very easy to install software across multiple systems cause that's really what it is. Instead of installing software in one system, you just need to install software across a variety of systems. Then obviously getting it working is difficult if you're talking about multiple pieces distributed by different entities and software developers.
Zane Hamilton:
Sure. Makes sense. Thank you. Yeah, Chris. Absolutely.
Chris Stackpole:
I have mixed opinions on this. I think in a lot of regards it is a lot easier these days than when I first started. Because there are tools such as SPACK to help through some of the really complicated builds. There's also a lot better communities for even when the software itself is not as simple as just doing make, make, install. The communities there give them a lot better documentation. At the same time there's also a lot more challenges. Especially if you're not dealing with the latest and greatest. For example, recently trying to help a researcher out and confirming if his code was still functional. That he was dug up and the last time it was compiled was with 2016 compilers. You can't find those. SPACK lists them and SPACK fails because when Intel released 1API, they killed all the download links for the other versions.
You can go pester intel, which is what we had to have them do. Then you're in a support loop because none of the first level support guys have any clue where to find a download for 2016 compilers. You're just hosed. A lot of that complexity is still really frustrating. There's also an aspect of if you are doing some pre-compiled stuff, it's fairly easy. You want to spin up Kubernetes on a cluster for some work. Well, great. You look at the stuff and they say, "oh, grab K3s or Minikube" and you're like, "well no, I actually need something more than that." If you've tried building Kubernetes, it's a pain. There are so many pieces. Part of that is because it's a complex piece of software and I think a lot of HPC tends to get that way.
You do the make, make install and it's great if you're running it on a single node. When you want it to scale across multiple nodes working with invapage and ACUTA driver and all of a sudden the complexity of the build goes up way high. So when the community has figured out some of these build scripts and they integrate that into SPACK. It makes it a lot easier. I think that while the target audience may be somebody, just the guy off the street with a scalpel, anybody can do it. I have a feeling that a vast majority of the time it's just, they are giving it to a doctor to help with it. That there's still. It's just the admin who needs to understand how it's compiled, where it's compiled, and what options are best to pass to it. The SPACK has a lot of variables that you can pass to optimize and a lot of that stuff you need to know about your system in order to optimize it and build it correctly. It's just a helper to get through some of the really complex stuff and that's where the community really has stepped up. I think this is one of the things that makes compiling and dealing with software these days so much easier than it was before. There's a bigger community that is more eager to help.
Zane Hamilton:
That's great, Chris. Thank you. Jonathon, I'll let you have the last part on this and then I kind of want to go back to something Alan mentioned earlier.
Jonathon Anderson:
Yeah, I think one of the things that's driving improvement in this area is the broadening of the audience for HPC software. Some of that is coming from the supply side where the tooling is getting better and the software is getting better. The software is more applicable to people. But the other is just as applications that we wouldn't have historically considered HPC applications and use cases become HPC use cases. We're getting more eyes on it. Open software is antifragile in a sense that it improves the more people experience the pain that is in it. Scientific software has been in a bad niche for a while. Where a research scientist or a computer scientist got something working and it worked in his environment and they are like, "great, it works."
They publish it and now it's on the staff at all the different HPC centers to get it to work in their environment. The only people feeling that pain is that initial developer and then the people in the sites. Containerization among other things drives the need to be able to show how it worked, how you got it to work, and to make something else be able to get it to work reliably. When other people are using this software, they are having to do it too. The more people are using the software, the better the installation processes they are going to get. The easier the management of it is going to get. I think that's going to be the solution. It is more eyes and more hands on it than one tool that will fix it.
When Are Containers Too Much? [43:08]
Zane Hamilton:
Thank you, Jonathon. We lost Alan, but back to what he said earlier, he mentioned a large container and I think it was like 40 or 80 gigs. I've heard of some research scientists or some admins actually going and using something SPACK and they'll tell it to compile every different version of everything that they could possibly think of on every different compiler to try to cover everything. It doesn't matter what environment it goes into. I've actually heard of people having 250 gig containers that come out of this. Then you're stuck with, I have this massive container. At what point in time is it too much? That goes to John's point of you've made them butchers. Now they have this massive thing with everything in it. Do they need it? No, but they have it. What does that do? I mean, where does that line need to be drawn and how can we help with that?
John Hanks:
I can share something that I butcher frequently. Our module in our software stack, we build every package from CRAN and BioConductor that will build non-interactively. If you load up our R and you count the libraries on any given install, it'll be somewhere between 17 and 21-2200 packages that are in our R module. It's mostly because we want to make R. To the extent R can be made painless, completely painless for the people that use it. We don't want anyone to have to ask us to add a package to it or have to install a package themselves in their local directory. That all leads to problems. That makes our software stack absolutely enormous. Let's assume before we get into Anaconda, but a single R install for us sometimes will be 300 or 400 gigabytes.
Zane Hamilton:
Is that something that you think? I mean, when you look at a container that becomes difficult to move at some point, right? And when is that?
John Hanks:
That is not containerizable, I don't think. That never goes in a container. That has to be an NFS mount to a software stack with a module in front of it.
Alan Sill:
Yeah. We're sort of glossing several related issues that center around what happens with the software regardless of whether you put it in a container or not. Depending on how you're building and deploying. Let's just pick for example, SPACK as we have talked about it. One of the things that happens when you build software in SPACK is that you lose the old paradigm of load library environmental variables and stuff. Everything goes in an R path. Everything that has to get built and they are getting better at detecting things that have been built already. Basically everything that's the dependency of that software goes in the R path and therefore goes onto the file system for that software. It's pretty hard to distribute that software to worker nodes by whether they are staple or state listed. It's actually hard to pick up the SPACK libraria and copy it over.
What that means is it puts pressure on your cluster wide file system. The portion that you're using for distributing software. We actually have a separate setup for that. We're just implementing BeeGFS. We had a cluster before, but it wasn't strong enough. NFS is popularly used. That thing is getting slammed. Millions of open file handles. Cause every single thread of every single MPI application is opening dozens of file handles to stuff that's in your R path. We actually found that the cluster couldn't handle that at all. Even though regular NFS can. There are implications on how you build and distribute the software independent of whether it's containerized. One thing about a container is it's a single CF image when you move it. You're moving it into essentially local memory. Those dependencies go away. It can be a way of circumventing that dependence on the external, on the cluster wide file system. But at the cost of chewing up your memory or local if you have enough space to turn on swap files. Local swap files can. We don't. We have very tiny disks.
This is just one sample among many. Python has similar considerations. Independent of building libraries. How you deploy the software R, is another example that you can get, not only huge libraries, but huge numbers of file accesses for every single one of those Python execution points to the .pyc file that's in there. In that R across your cluster. It can be a huge bandwidth issue.
Zane Hamilton:
Thank you, Alan. Dave, I think you had some thoughts on this as well before I go back.
Dave Godlove:
Yeah. So going back to your original question, you're basically talking about how big a container should be before you draw a line in the sand and say, "okay, that's too big." Let's figure out how to make your container smaller. I think that what that gets to is best practices. I have a pet peeve when people start talking about best practices because best practices come with an assumption. It's like best practices for what? Best practices for your application, for my application for what? Containers are a very powerful tool. Whenever you build a really powerful tool and you give it to somebody, they might use it for something that you didn't have in mind. That is actually. It shows how powerful your tool is. That somebody can go adopt and adapt it to something totally different that you never thought of.
So in summons, I mean, one of the things that I've containerized in the past was we built a TensorFlow container. The TensorFlow container needed to be compiled two different ways, one with AVX instructions and one without so that depending on which node it landed on, it would run intelligently. It would either run with AVX or not run with AVX. Not just bomb out and not work. So we called that a fat container. Like a fat binary, right? That has multiple different ways of running. So I just. I hesitate towards putting limits on and telling people that they ought to build their containers this way, that way, or whatever. I mean, cause you don't know what they are trying to do. Maybe a best practice for your application, is not a best practice at all for somebody else's application. I don't know. That's just how I kind of feel about the whole really big fat container thing.
Zane Hamilton:
Sure. Thank you.
Difficulty Installing Software in Scientific Environments [50:06]
Dave Godlove:
I guess one more really quick thought too. We were talking a little bit about why it is still so hard to install software in scientific environments and this makes me think of the story. I brought my nephew one time to the airspace museum in Washington DC. We were looking at this really early satellite and you could tell that it was handmade. Like it was put together, it had like writing on it, and people would like stamped things on it. Stuff and everything. My nephew was looking at this and he's like, "this is supposed to be like high tech?" He's thinking about television programs like CSI and stuff where you're bringing up computer screens in the air and you're doing stuff. I'm like, "so I used to be a scientist" and I said to him, "look at this."
This is what science looks like. You don't manufacture science often on assembly line. It's not shiny and pretty. It's one person or a small group of people hand building stuff. Prototypes that look ugly, but they work. This is why it's so hard to install software in scientific environments because a lot of times your software is just a prototype. There's no packaging involved. There's no. These are people that don't necessarily write code as their primary job. They are in a lab trying to make their code, analyze some data, they get it to work, and then they publish it. It's your job to take it and figure out how to install it in your scientific environment. It's handmade. So that's my hot take on why it's still hard to install code in scientific environments.
Zane Hamilton:
That was great. Thank you. John, I think you had something you wanted to add.
John Hanks:
I did, but Dave just prompted something that I remembered. I'm definitely guilty of making fun of biologists who write software. Biologists are terrible at writing software and I've had to support a lot of really bad software. The one thing I will say in their defense is at some point they stop and they are done with that piece of software. An actual developer will never stop making it worse. Developers won't stop. You will never find a developer who will put on their performance goal for their year. I'm done, this is perfect. I don't need to do anything. I'm just going to sit here and draw a paycheck. Right? They will always keep developing. Somewhere between the grad student finishes their master's and never touches a software again. Developers develop forever until they make the package impossible to use or work with. somewhere in there, there's a sweet spot and I wish we could find that sweet spot.
Gentoo and Ebuild [52:48]
Zane Hamilton:
That's a good point. Thank you, John. I have several questions that are coming in. I know Todd, is it that we are going to pop up first? Oh, so Martin asked, "are any of the panel members? Have any of you guys ever used gentoo?" Like Ebuild?
John Hanks:
Used it in the past. Haven't in a while?
Jonathon Anderson:
Yeah, same here, though I did think of it in this particular context years ago when we were trying to build software and find a way to automate it. I wondered why someone didn't just take either Ebuild or ports from BSD and port it for use in scientific software applications. They are quite different in the particular multi-versioning and multi-builds of the same thing. Which is why EasyBuild and SPACK exist now.
Can Ansys be Containerized? [53:36]
Zane Hamilton:
Thank you. Had another one from Todd. There we go. Can commercial software like Ansys be containerized? Hot topic around here lately.
Chris Stackpole:
I would say talk to your legal team and talk to the vendor. I don't know about Ansys specifically. I know of them. I just don't know if they would allow containerization. There are third party commercial products that have specific rules for how you can do containerization. Some of them are very public like, "hey, here's what you have to do to fulfill this." Others, when I was working with MathWorks for MATLAB, were very concerned about having a MATLAB license that anybody could run. We had to work with our legal team and their legal team to basically say, "yes, you can, but you can't include a license number." That has to be something that the end user has to pass through. I don't know if that's gotten better.
It's been a couple years since I worked with them on that. But there are commercial vendors out there that are doing stuff. Then there are others that you've mentioned containerization and they just kind of gloss over. One of the reasons why I really like super computing is I can go see all the vendors I work with and I very often would go and harass them at their booths and be like, "why can't I containerize your software?" Because they are at SC, you tend to be dealing with people who know the field that you're coming from versus just a straight cold call to somebody who's like, "I don't know." At least there, they know what HPC is and they have a better idea of why. So that's a great place to meet up with some of those vendors. But yeah, it's. That's a tricky one because it's all legal at that point.
Closing Thoughts [55:27]
Zane Hamilton:
Yeah. Thank you, Chris. That's something we have talked about quite often is how do you do licensing with that from some of those vendors. That's exactly what we have been discussing. Chris, thank you. I don't know if you've had any more questions come in. We're getting close on time here. Glen, I feel like you've been quiet for a while. I'll give you a first shot at closing thoughts then?
Glen Otero:
I think Alan brought up a really good comment or thought or theme on reproducibility being much less important than transparency. Now that I think about it, I tend to agree because the other thoughts swirly run in my head with regard to reproducibility actually originate from other sources, right? So it's and I'll pick on biologists again too cause I am one. But it. It's a problem that started a long time ago, right? Not telling us how you prepared your data or cleaned your data and things like that, right? The program you're running almost didn't matter if you weren't telling me how you cleaned your data. What you threw out, the averages you took, the statistics you did.
Also on the publishing side, right? How? What's accepted for publication, what the bar is set at. Publication is going through this huge renovation, hopefully not just being open, but having to publish your data. Like Gigascience makes you do. The elite journals, what they accept with regard to reproducibility and things there. I think transparency is a little bit more important there. Because with regard to containers, because reproducibility actually has, I think, issues that originate for other places in science and not just giving us containers is not going to be a silver bullet there.
Zane Hamilton:
Thank you, Glenn. John, I'll go to you next. Closing thoughts?
John Hanks:
I would just throw out a suggestion. People, admins, especially people who are beginning HPC admins. Stay away from tools that try to do your job for you and learn how it works. Invest the effort in learning how things work. It will pay massive dividends down the road. And you. There are no shortcuts to knowing what you're doing.
Zane Hamilton:
That's good advice. Thank you, John. Jeremy?
Jeremy Siadal:
Well two thoughts. One, I thought it was pretty clear that if you are an author or a researcher publishing papers if you're using software to do any of your results are based on software, keep a copy of that software and put it on the shelf because it might be needed. Save your sys admins a lot of reproduction work. The other thing and I like to think that part of my job is trying to make life easier for sys admins and end users. There was this interesting comment that came up, said. Look, we are not by moving to a containerized model, we are not shuffling all the work off to the user. I think the difference is the users come to you now and say, "I need this piece of software. I need you to set the licensing server. I need you to configure it this way." I think the change is going to be, they are going to start coming to a new future and say, "can you help me build my container?" I don't and to me that's just a shift in work. It's, I think in the long run, going to be a lot easier.
Zane Hamilton:
I hope so. Thank you, Jeremy. Chris?
Chris Stackpole:
Yeah, I fully agree with a lot that has just been said. I think it is very important to know how the tool works so that you can fix it when it breaks because it inevitably will break. There will be an update or something that will break it and you'll be responsible for fixing it. I caution the use of tools that you don't really understand some of that work because of that situation. They are great tools, especially if you are the only admin for the HPC and so everything's falling on you. The better you can reproduce your work so that the. When a new version of the package comes out, you can easily rebuild it, and deploy it for your users. That's all really important. Understanding the process of how you get there really does help with updates and even when you need to reproduce something and rebuild an old version.
Zane Hamilton:
Great. Thank you Chris. Dave?
Dave Godlove:
Yeah, it's just a really interesting conversation. Just to riff really quick on something that Jeremy said. I mean, yeah. I totally think that containers are not only. So they could be used for evil to put all the onus on the users, but I don't think that anybody is really doing that. I do think that users ultimately might come to admins at some point in time and say, "can you help me build my container?" I also think that admins, support scientists, application scientists, and so on are also taking that step for the users. How many cases. A lot of times users come to you and say, "can you help me install this complicated thing? I don't know how to do it." Then as an admin you might say, "sure, I'm going to do it in a container, and by the way I'm going to do it in such a way that you might not even have to know that there's a container there to use it." Another great use case for containers is just to make the application engineer, the scientists, or the admin's life easier as they support the user.
Zane Hamilton:
Thank you. Jonathon?
Jonathon Anderson:
My main thing right now is just to encourage people. This is an area of innovation. There's cool new tools and new techniques that are being developed right now. If you are interested in that kind of thing. Looking for ways to get involved, maybe you're an open source guy and want to do more of that. Or you're, you have a pain point. There's activity here and there's a lot of eyes working on this problem. I think that there's a lot of opportunity for people to contribute.
Zane Hamilton:
Thank you, Jonathon. Alan, I'll give you the last word.
Alan Sill:
Well, really fantastic job. All you focused on some great points. It's not enough time to make all the observations that could be made, but I just want to advocate for a couple things. One is, as I mentioned earlier, to Greg's horror, the Exascale Computing Project's E4S single container. It's not intended to be deployed that way. It's just a package for the built stuff that you can use for testing. I think there would be value in us doing something like that aimed not at the Exoscale stack, but at a typical HPC stack. What is. What I've done to try to facilitate that is I've gotten a hold of all of the ci/cd steps that they use. some of them are internal, but we could reproduce that.
We could actually pick up Jonathon's point. We could get a community effort going to build a typical HPC stack that you could. If you just wanted to get started, download the container, try it out, and then go back to the recipe and build. Because we will include the recipes, build what you want. I think that there's value for the community to try to reproduce what E4S has done on the local scale. Then I just want to bemoan the loss of the Singularity Hub. In practice I see a lot of people's workflow cause we only support Singularity or Apptainer on our clusters is to go and pull the Docker container and into Singularity. We are relying on the Docker hub. Is that the right way to do things? I don't know. I think we should look at having a community resource for building and maintaining Singularity containers as well. I'll stop there.
Zane Hamilton:
Oh, that was a great point Alan and we have been talking about that quite a bit inside. I know Dave has been talking about that a lot. Really appreciate it. Thank you guys for joining. Our time is up. It's actually a little bit over. So thank you for joining this week. Looking forward to seeing you guys next week. Please go like, subscribe, and we will see you. See you soon.
Transcript
[Music] good morning good afternoon and good evening wherever you are we welcome you back to another round table with ciq today we're going to be talking about software in hpc environment and we have a great panel of people on with us today go ahead let them join excellent and we'll probably have one more here in a minute maybe maybe not so i'm gonna go ahead and start and have everybody introduce yourselves i know i think everybody's been here before but let's start with jeremy if you would introduce yourself again oh can't hear you jeremy there we go can you hear me now there you are
yeah absolutely okay great uh jeremy seidel with intel corporation uh i also represent the open hpc project and uh i've been a a hpc systems engineer software engineer for going on 20 some odd years now excellent thank you chris i'm uh chris deckel with advanced clustering technologies we are a uh turnkey solutions integrator for hpc systems thank you chris dave hey everybody i'm dave godlov i am a solutions architect here at ciq and i've got a background at the nih uh working as a scientist and also as a support scientist excellent thank you alan welcome back um thanks uh alan sill uh managing director at
the high performance computing center at texas tech university of one of a group of co-directors of the national science foundation's cloud and autonomic computing industry university cooperative research center and my background is in particle physics it just got too close to the computing flame thank you jonathan yeah my name is jonathan anderson i am also a solutions architect here with ciq and i have a background in uh hpc sysadmin and systems engineering mostly at central services organizations thank you jonathan john grisnock john hanks hpc system man in the life sciences mainly um mostly here to tell the kids to get off my lawn appreciate it
john so let's go ahead and dive in i think there's there's a couple different ways you can look at software and hpc environment we'll likely introduce himself i think everybody's seen glenn before but since he slides in late we're gonna make him sing a song or do something fun i'm kidding glenn i was gonna introduce myself with a uh with a performance dance but i probably don't want that um glenn otero uh recovering scientist um in the life sciences bioinformatics uh scientific computing director at ciq uh or genomics ai and ml and um i am a borderline boomer so you can all get it just
View full transcriptHide full transcript
get off my lawn [Music] appreciate it glenn all right so back to what we started before glenn interrupted this and came late uh a lot of different ways you can look at hpc software from a systems environment for a system admin perspective and from a user perspective and i think it's interesting the way that things are progressing and kind of i know jonathan i talked about this quite a bit the way containerization might be helping or changing or making more complicated and that's kind of what i wanted to talk to you guys about today is how do you see that landscape what does that look
like and we've been doing the same thing for a long time but things are definitely changing and you guys have different experiences than than all of us so i'm curious to hear from each of you like jeremy from a software perspective what are you seeing today well actually brought up a really interesting point on on containerization because one of the systems i'm supporting right now is built entirely around containerization and that is the expectation that the users will provide their own containers with their own jobs they package up their own software they bring it and what they end up what they get is a set
of nodes that are really absolute bare minimum installations and then they're expected they run their containers on top of that and then the nodes are completely wiped um and of course they're running with uh using docker containers in order to you know keep the security intact basically it's not only just wipes you wipe the systems and reboot them it's very interesting thank you chris what are you seeing today when it comes to software uh i have a uh an interesting kind of perception on it because um a lot of our customers um they are looking at just the life cycle of their cluster and the
research that they're doing impacts now they don't have a whole lot of um long-term stuff so it's build it for the cluster they're built right now and then they'll run that for the life cycle then next cluster build a new system but i've also done a lot with uh researchers that are writing papers that may be 10 years before the the life cycle of the paper really starts to be challenged and reviewed and in that case i've been that admin where i've been asked to install applications and software um 10 15 years old on a modern hpc system in order for them to verify the
results that they ran then because it's now being challenged and can they get the same results from that paper and that is a very hard problem to tackle um when you know you're being asked to pull in libraries that haven't been supported since rel four or five and so a lot of the containerization focus that i've done in the past has been with some of those long life cycle uh applications um with the hope that you know 10 years from now when those same researchers are being challenged on the papers they just wrote you know this month it's going to be a whole lot easier
for us to verify those results sorry before i move to allen and john i want to ask you chris so whenever that type of thing is taking place today is it really your responsibility to maintain and keep those legacy libraries around or are you pushing that back on the researcher and the end user like how does that go well um the number of times i've thought man past me was such a jerk why didn't he do this better it's pretty high um and so a lot of it is a how do i make my job easier in the future i mean that is definitely a
motivator but working with a lot of these researchers we're seeing where um you know the long tail of hpc is just growing longer and thicker and so people who you know 10 15 years ago they didn't even know how to spell hpc are now being asked to run their jobs in hpc because that's the only place where data is can be big enough to run and so um they aren't computer scientists um they don't really have an interest in learning hpc um what they are good at though is their job and their specialty and so they know their code they know their research really really
well and so it's from an admin point of view how do i help them um so that when they have this issue in 10 plus years where i have to revisit this code can it run can i help them or anybody who's trying to verify their code ensure that it's actually working one of the issues that we had um a real example was where they were being challenged on some of their paper because they were very ahead of their time when they wrote it years ago and i was trying to rebuild uh library sets from um el5 and we were actually finding some variation differences
depending on if we ran it in a 32-bit container vm or 64-bit vm the libraries did not behave well because of the libraries at the time and trying to get the exact same version of the library to get exactly the same results was very very challenging and so the hope is that i don't really care what it looks like in 10 years but having it packed up inside an image type of a container there's a high likelihood that i will be able to better match that library set for them because it took me weeks and weeks to recompile these old library sets that haven't been
supported in so long and trying to get them to match exactly right and for the end user researcher that's too big of an ask and so it's you know and we hear this all the time especially the last two years the reproducibility of papers and science and um and we actually reproduce these papers it keeps coming up because somebody you know has all these crazy assumptions that are made and then nobody else can reproduce them but yet that impacts media that impacts decisions um we've seen a lot of that where um rushed research or impartial research made bad decisions that impacted a lot of people
and so we want to make sure that when we are doing reproducible science and have reproducible data that is as reproducible as actual possible and a container really helps in those environments for those researchers it's great thank you for that chris allen i know we've talked about containerization some we've talked about software some so give us your view yeah so it's um it's sort of like i'll make a food analogy it's when i travel to italy i'm always shocked how quickly it italy totally reprograms you as to what you think you know food and drink should be you know inside of a week you're discussing
the fine points of liver the gurney and versus tuscan olive oil and i think the coffee cup in some of those cups and stuff so when you start to use containers you start thinking why isn't everything in a container um you know let's take off very quickly some of the reasons that some have been mentioned reproducibility though let's come back to that uh you can even get a doi for your uh for your image you're gonna store an image like a single file so it's it's storable as opposed to long list of build instructions uh you can it it's portable you can run on different
machines with the same image you can run images with different operating system versions than your operating system version as long as they share certain kernel characteristics keep in mind the fundamental design concept of a container is unsharing shared namespaces and memory right it's an unsharing technology so uh it lets you isolate yourself from some details as long as the kernel is compatible and we can come back to that and talk about mpi for example um you can bring your own software you can build it so you you look at all this advantage you think why isn't everything in containers and maybe ciq has that in
mind but surprisingly not all food is italian and not all food is you know all not all con softwares and containers so despite some obvious advantages um there are some um things holding people back and it's worth examining some of what those are you know i won't make the full list but i'll just hint you know um vendor specific software uh often doesn't support installation in containers and so forth i'll stop there absolutely thank you alan john i think you've probably got an interesting perspective on this as well managing some large and dispersed environments yeah we my current environment is complete has been completely different
from all environments in the past in the past i've had modules set up and had like 1600 plus packages in a module tree to support environments but i've been running this cluster about a year and we've had almost no software request whatsoever pretty much everything people have done they've brought their own it's been a mix of containers and just software installs mostly anaconda environments but the the extent to which which all software is going into anaconda and containers is i i've been flabbergasted by it i never would have expected it uh from the beginning because i my my view of containers is like you tell
me i swim across the english channel well fantastic you swim in this channel and then you say somebody else comes along and says i got on a boat and got in a lap pool and i swim laps while the while the boat drove across the english channel well good for you but that seems like a lot of extra work you could have just swam the single channel right um so that's that's kind of been my historical view but uh yeah it's from my perspective being an admin on the software side is getting easier because more people seem to be self-supporting than they used to on
the occasions when i do have to get involved with installing software though software quality overall seems to be going down to me um there you know things are really complex there's a great xkcd cartoon where he's basically got all of civilization and down at the bottom there's a little tiny piece it says a pie pie package it hasn't been maintained maintained in 12 years or something and you know i all this stuff that's getting jammed in containers today on the idea that things are going to be reproducible i don't think people are admitting that time actually flows forward and things change and you know you're
containerizing bugs and security holes and all this other stuff is it really going to be valuable i think to the extent that doing it today gets you a paycheck great but in the future i don't really see people dragging these things out in 10 years to try to reproduce something and in any case they did it's not scientific reproducibility it's digital reproducibility and to me that's pointless exercise i don't really care about digital reproducibility interesting interesting thank you glenn i'll go to you next you've seen some stuff yeah it's actually uh just thinking about it's been kind of interesting because i've been of the mind
that yeah we need to use containers for for all the reasons that people just stated right the reproducibility aspect kind of the fossilization of a moment in time that you can go back and reproduce but just been thinking about using seeing the container used by the bioinformaticians it's actually kind of in the reverse they're actually kind of trying to live in the future so they're just always downloading the latest greatest bioinformatics app or the latest greatest release to rerun their pipeline make sure you know find one more variant uh you know validate the research a little bit more that you know they're on the right
track and trying to pull stuff down that you know or run something that someone built on fedora but you're running uh you know you're running on rocky kind of thing and so really just using it as a time machine to go forward on a production cluster but really with not much thought of like oh yeah i should i should keep this container around and give it a doi and because this could be there for reproducibility uh for other people i don't think they really see past their own lab their own work and uh again just trying to pull down the latest and greatest app and
get it to run where it normally wouldn't on their laptop or on on the clusters they have access to um kind of one of the reasons i think cloud also is is kind of kind of caught out a lot there as well is just being able to run all this latest greatest stuff again don't think about security don't think about you know what's going to be supported in in a couple years um ditto for all the you know anaconda uh environments right you better keep that yaml file around but good luck you know rebuilding that environment in just a year right uh so i think
it's a i it seems to be a little like a two-edged sword and i i think it's more of a well i think it's necessary i don't think it's sufficient isn't it johnny is just one you want to add yeah glenn actually reminded me i left out my absolute favorite aspect of containers and to me the absolute biggest positive containers software developers will often refuse to write decent installation instructions but if they containerize it by definition they have written installation instructions which i can still and go use the stuff outside of a container so from that perspective i do like containers because people it motivates
people to write decent install instructions that will actually work it's true thank you dave mr container around here i know you've been spending a lot of time working on containers lately and trying to containerize some stuff so i mean we've been through this before and from a researcher perspective as well so what are your thoughts on all of this yeah i mean there's so many interesting thoughts that everybody just had to riff on i mean i'm taking notes here like oh i want to get back to this and i want to get back to that so i i don't really know where to start but
i mean i i guess um two main threads here from what i'm hearing are uh you know reproducibility which we're talking about um you know kind of later here and then a little earlier we were talking more about um you know uh helping users and empowering users and allowing users to install their own software and i guess maybe i'll i'll you know comment a little bit on that i mean you know coming from the nih uh there we the team there has this really really great um attitude about about the users about the scientists and that is that these scientists but you know they're brilliant
and they know so much about their domains and there is so much to know and so much work to do that they can't possibly be expected on top of that to become computer scientists in addition to everything else they've already done so it is our job you know to take these these you know biologists and um you know these these folks who are into all these different sciences and are very deep into them and know tons and tons of stuff that we'll never know and help them with stuff you know that they might not know and and don't have to and so i wonder are
containers helping with that they can help with that and they can't hurt with that right we can that containers might make scientists jobs harder down the road because we might say okay here's a cluster with a container runtime have at it right and you know some scientists might be fine with that and be fine with building all their own containers but um it's kind of just offloading a lot of the sysadmin work or maybe a lot of the application support work off to the scientists is that okay to do is it not okay i guess it kind of depends on the on the situation and
another thing too is that when you know containers first hit hpc we thought that that's what they were going to be all scientists were going to end up building their own containers and using uh package managers and such inside the containers to build all their own software and have everything you know and that's not how it's turned out at all how it's turned out is that um other folks third parties build containers and put them up on docker hub and you know end users just download containers they don't actually build them so maybe in that respect it actually is helping the end users quite a
bit um so just a lot of you know interesting things to talk about and think about and then on the reproducibility side of things i mean um one thing to note is for scientific reproducibility distribution collaboration and things of that nature often you know another lab doesn't want to take somebody's workflow and data and just press a button and see the same figures pop out i mean it might be like reassuring to some extent but they want what they want to do is they want to take their own data and maybe get the code base and they want to they want to modify the code
base a little bit and push it forward right they want to be able to to look at this stuff and um edit the code and use their own data and do things like that do containers help with that because they might help with that from the perspective of being able to push the button and run the workflow and get the result but then after you're done you're like okay now i want to crack it open and look and see where the code's at and you know what's going on and how to how to how do i modify it and you know if you're if you're
not a container expert you know or a file system expert or whatever it can be a pain to get inside that container and start digging through it and figure out where all the bits are and what makes it run so i don't know just random thoughts based on everything that we're just talking i got a million more but i'm going to cut it short in the interest of no people talk interesting dave i hadn't thought about having to go back and actually change the code so once you have to crack open a container that's an interesting point thank you jonathan i saved you for last
night well actually i see chris raising his hand sorry chris no worries just on that point um there are actually a something i've witnessed a lot with some of the researchers is that when they are trying to reproduce they do want that first round to be can i reproduce it exactly as it was published because there's a huge difference between a attacking of paper because the the data or assumptions um uh is wrong versus that the mythology was wrong and so if i can prove that the mythology with the data matches correctly then all of a sudden i could say okay your your ideas and
concepts these are what we need to actually focus on if you had looked at this problem from this view instead that makes a huge difference than just saying well you know i got different results and so therefore your whole paper is worthless which actually does happen quite a bit when people can't reproduce the results and so part of being able to get that initial you know click a button download it and get the exact same results means that i'm now at least mimicking exactly what the the paper author had and i can reproduce their results so now i can go ahead and critique um what
it is about the paper that kind of actually makes sense about like you know how do i adjust this how do i tweak this can i look at this problem from a different view and get a different result that's a good point chris thank you okay jonathan we've talked about this quite a bit lately i know you have some opinions on this and why it is good for containerization so yeah so i compare this moment in hpc and scientific software containerization too and this isn't necessarily my my original thought but the the thing that's most useful to me is to compare it to the advent
of data center automation and infrastructure as a service like we saw with the large cloud providers aws and google and azure and all the others um that and virtualization is an interesting technology but the the game changer there is that it takes something that historically only a subset of people could do this the the sysadmins in your organization who had the rights to the data center or who knew how to do it it takes something that only a small group could do and turns it into something that anyone can do and not that everyone does but it it simplifies the workflow of setting up a
server to the point where now the sysadmins are if they're you know in a virtualized environment are doing things very similarly to any random person who might want to spin up an instance in an infrastructure as a service environment i see containers that same way in this conversation um you know i've been doing a lot of work figuring out the best way to containerize mpi applications for example and my thought process on that is not and now the sysadmins or the support people will never install another piece of software again but that now anyone can and so someone mentioned earlier that you know it hasn't
been that all of the scientists just build their own containers but that third parties do and because anyone can that doesn't even just mean your users it means you can run containers from wherever and now you can draw value not just from the people running your cluster not just from the people that work on your cluster but from anyone who's building any container of a certain type and you can pull it down and run it one of the things i highlight in some of my mpi container demos is that there is nothing special to the environment i'm running this container in in this container i
can just pull it down like i pushed it up to docker hub because why not and i can pull it back down and run it but i as long as i had apptaner on a different cluster i could run it there too there's no dependency and i think the the the biggest win to me i i totally agree by the way with john's pointing out that a big value is the the containerization of the install instructions and self-documenting how a container works and that that breaks some of my brain because i'm a systems guy and i really want things to be kind of declarative and
very well specified and the fact that containers are really just a kind of fancy shell script dumped in a file bothers me a little bit but when i get over myself enough for that i realize that's how most people share sysadmin knowledge when they're not sysadmins anyway and so it kind of flattens that landscape and lets everyone talk that same language of here's just the raw stuff that it needs to do and then you package that up and do it once and you can hand it around and i think that's really cool um and so i i'm i'm looking forward to more of that not
that i think that all of the users on all of the clusters will always containerize all of their software but since anyone can it only has to be done once for anyone to be able to use it and get value out of it so before we go on to the next topic zane i wanted to highlight a couple of things um that we've mentioned but are there like rocks under a stream if you're kayaking right um the um the mpi topic is better it's it's in the in the sense of money pythons you turn me into a newt getting better you know it's it's still
a problem um the the mpi standard itself uh the whole range of them is trying to converge towards interchangeable mpi but we're not there yet everywhere and so as i said before anything that goes to the kernel to make its call you have to ensure compatibility between the kernel and the containerized version um so uh if you've had better luck moving the obtainer containers around i want to hear more about that maybe you guys can post about that um this through this thread there's been a sort of a line about reproducibility and i put into the um private chatter comment that i'll just say here
publicly that friends of mine who study reproducibility say that it's far inferior to transparency and so as jonathan said the great thing about a container is the recipe is right there in front of you and the transparency is there so for example um there's been a lot of security concerns about software builds of materials software s-bombs right sort of a bad acronym but uh um yeah so software bill of materials supposed to ensure that if you have a security problem in a software chain you can figure out what's dependent on it but um usually that concentrates entirely on the built software and not on the
operating system dependencies that were hidden there like glibe c and so forth that um the software is equally dependent on but won't show up in an s bomb a container in principle can do that but you have to go back to that rubric is are you getting transparency or are you getting researchers downloading black boxes because they say they have a piece of software in them so if you can do what jonathan said great because you have both reproducibility and transparency but if people are just treating this as a black box um and you're carrying security problems along with you and so forth you haven't
won thank you for that alan we do have a question i think we're going to pop it up i think greg kind of responded to it but martin asked can a researcher get a simple route to containers via something like spack and i know jonathan we've talked about this as well i think it's interesting for you guys i mean craig has answered yes i kind of think this leads into the next question i had for you guys but i'll let you answer this one first and jonathan since we talked about this recently yeah so i i've experimented with this a little bit um and absolutely
you can you know start a base container and as part of your build install spec in it and build software in it and i have definitely done that um one of the downsides to doing that is you lose a lot of the caching benefit of spec where you know building software takes a long time sometimes especially these scientific applications and so part of building containers is often rebuilding them over and over again um and uh you know if you're throwing away your your spac build cache every time you're rebuilding the container you're losing a lot of the benefit that you would get out of something
like spec i personally more recently have been using the openhvc project for this instead and using the software that's already compiled there rather than building software unless i absolutely need to um but i also as an experiment nothing production has come out of this yet but i i took advantage of apptaner's support for sandbox containers where you can have a mutable directory instead of a kind of zipped up a single sif image and used that as a base for my spac builds and then built sub containers off of that so you can but if the point was to simplify it in the beginning you're you're
kind of off in the weeds if you're doing something as bespoke as that my general recommendation would just be to use what people have compiled already so i would let me push back on that just a little because um we're we use spec a lot here and i don't know if people have noticed this but the exascale computing project um has been publishing a single container built automatically through ci cd processes um regularly i don't know if it's nightly or what frequency or if it's on demand but um of all their software so basically all ex they had this thing called e4s the extreme scale
scientific software stack oh i actually remembered it um so e4s you can actually go there you can hit the downloads button and you can download a whole container and i've done this the software some of which is extremely complex and difficult to install yourself will run out of the box on your machine okay what are the downsides well it's a 50 gigabyte container um and beyond that there's a very strong qualification uh for any software project to get into the e4s stack so i would say three quarters of the software that our researchers depend on daily here isn't in that stack this is software that's
been qualified to run on nexus scale machines but let me wind back just a little and say that's an interesting idea to build such a container simply for versioning and testing as you just hinted suppose we're going to change the spec version or we're going to go to a different operating system it'd be great to have a ci cd process that built all of our apps in a container that we could use for testing whether or not we actually intend to download that one single container to all of our worker nodes for any given revision so i i i'll just summarize this by saying one
of the big potential advantages of of containers especially if we can use these sandbox style ones would be for the difficult job of version testing um so you know if we have a certain set of built software that we support on our cluster it'd be nice to get a head start on the next operating system or at least the next spec version uh the next mpi whatever and you can do this with single bits of software but spec but it's harder to do the whole thing thank you ellen i'll come back to a point you made in just a second but we have a question
i want to ask real quick and then i want to get back to that after 30 years of hpc style of beowulf hpc style why is deploying cluster software still complicated or is it really just the management over time and image drift that's complicated anybody who wants to jump on first i'll i'll offer my opinion on that um i don't necessarily think it is complicated um we all my software stacks over time have always been just i built it and installed it um including all the complex stuff back when i did real hpc back in the day and it wasn't complicated to do but it
required a lot of patience and knowledge that i learned by getting smacked in the face over and over and over again by things like wharf and fortran one underscore two underscores three under where you know whatever you're going to do to get things linked so for somebody who climbs the learning curve software is not necessarily hard to install other than to the extent developers do a really bad job of documenting it and giving you what you the information you need so you have to reverse engineer a lot of it for making that simpler with spack and easy build and stuff i've avoided those because every
time i've looked into them i've wound up feeling like they were hampering me from installing software as fast as i could on my own the extra layer if something will compile with make you know configure make make install i don't need easy build and spec if something is so complicated that every release is changing the build options then again i don't need these build spec it's got to be fixed there every time too right so i don't need those but it's kind of a general overview of uh this kind of thing tools that attempt to take the complexity out of it i think give people
a false impression that they know what they're doing and if you give a doctor a scalpel that makes them a surgeon but if you give some random person off the street a scalpel that makes them a butcher and you know maybe not everybody should be installing software you know i'll just throw that out there as a possible option for the way the world should work oh that's a great point john thank you jeremy you're nodding i'll pick on you yeah i was going to say the uh having installed cluster software for the last 20 some odd years um i don't think it's uh more difficult
in fact i think it's a lot less difficult now and it's not just experience it's that there's been a lot of work into simplifying a lot of the tasks where i still stumble um continuously it's the combination of fabric software mpi and the application all working together and i think that's just a lot of um i think john pointed out it's it's software quality are the is the are the software developers following the standards you know set forth are they making those standards transparent or is their software you know fully tested before they're actually putting it out because they certainly counter that a lot but
you know hpc is still very much an open source you know software project i represent a very large open source software project and um a lot of the software i i certainly feel a lot of software goes out before it's i think ready to go out um and that's i think for the the i think a lot of the issues come in but certainly having to work on like the the werewolf project um that's um with that in place it's i think it's very easy to install software across multiple systems because that's really what it is it's it's in instead of installing software in one
system you just need to install software across a variety of systems and then obviously getting it getting it working is um difficult if you're talking about multiple pieces uh distributed by different you know entities and software developers sure make sense thank you chris absolutely so i'm kind of a mixed opinion on this i think um in a lot of regards it is a lot easier um these days than when i first started um because um there are tools such as like spac to help through some of the really complicated builds and there's also a lot better communities for even when the software itself is not
as simple as just doing you know a make make install the communities there give a lot better documentation but at the same time there's also a lot more challenges especially if you're not dealing with the latest and greatest for example recently trying to uh help a researcher out and confirming if his code was still functional um that he was dug up and the last time it was compiled was until 2016 compilers you can't find those and spack lists them and spac fails because when intel released one api they killed all the download links for the other versions you can go pester intel which is what
we had to have them do and then you're in a support loop because none of the first level support guys have any clue where to find a download for 2016 compilers you're just host and a lot of that complexity is still really frustrating and there's also an aspect of if you are doing some pre-compiled stuff it's fairly easy you want to spin up kubernetes on a cluster for some you know work well great you look at the stuff and they say oh grab k3s or mini cube and well no i need actually something more than that if you've tried building kubernetes it's a pain there
are so many pieces and part of that's because it's a complex piece of software and i think a lot of hpc tends to get that way you do the make make install and it's great if you're running it on a single node but when you want to scale across multiple nodes working with you know in vapic and a cuda driver and all of a sudden the complexity of the the build goes up way high and so when the community has figured out some of these build scripts and they integrate integrate that into spec makes it a lot easier um and i think that um while
the target audience may be somebody just the guy off the street with a scalpel anybody can do it i have a feeling that a vast majority of the time it's just um they're giving it to a doctor to help with it um that there's still it's just admin who needs to kind of understand how it's compiled where it's compiled what options are best to pass to it the spac has a lot of variables that you can pass to to optimize and a lot of that stuff you need to know your system in order to optimize it and build it correctly um it's just a helper
to get through some of the really complex stuff and that's where the community really has stepped up and i think is one of the the things that makes compiling and dealing with software these days so much easier than it was before there's a bigger community that's more eager to help that's great chris thank you jonathan you have the last part on this then i kind of want to go back to something allen mentioned earlier yeah i think one of the things that's driving improvement in this area is the broadening of the the audience for hpc software and some of that is coming from the supply
side where the tooling is getting better and the software is getting better and the software's more applicable to people but the other is just as applications that we wouldn't have historically considered hpc applications and use cases become hpc use cases we're getting more eyes on it open software uh is uh it's anti-fragile in a sense that it is in it it improves the more people experience the pain that is in it and scientific software has been in a kind of bad niche for a while where a research scientist or a computer scientist got something working and it worked in his environment they're like great it
works and they publish it and now it's on the staff at all the different hpc centers to get it to work in their environment but the only people feeling that pain is that initial developer and then the people in the sites containerization among other things drives the need to be able to show how it worked how you got it to work and to make something else be able to get it to work reliably and when other people are using this software they're having to do it too so the more people are using the software the better the installation processes which they're going to get the
easier the management of it is going to get and i think that's that's going to be more the solution is more more eyes and more hands on it than one tool that will fix it thank you jonathan we lost alan but kind of back to what he said earlier he mentioned a large container and i think it was like 40 or 80 gig i i've heard of some research scientists or some admins actually going and using the likes back and they'll get and they'll tell it to compile every different version of everything that they could possibly think of on every different compiler to try to
cover everything so it doesn't matter what environment it goes into and i've actually heard of people having two 250 gig containers that come out of this and then you're stuck with i have this massive container at what point in time is it is it too much and that kind of goes to john's point of yeah you've made them butchers now they have this massive thing with everything in it do they need it no but they have it so what is what does that do where does that line need to be drawn how can we help with that i can share something that i butcher uh
frequently um our our module and our in our software stack we build every package from cran and bio conductor that will build non-interactively so if you load up our r and you count the libraries on any given install it will be somewhere between 17 and 21 22 000 packages that are in our r module and it's mostly because we want to make our to the extent our can be made painless completely painless for the people that use it we don't want anyone to have to ask us to add a package to it or have to install a package themselves in their local directory that all
leads to problems that makes our software stack absolutely enormous you know that's that's before we get into anaconda but a single r install for us sometimes will be 300 or 400 gigabytes and is that something that you think i mean when you look at a container that that becomes difficult to move at some point right that's not containerizable i don't think and that never goes in a container that has to be an nfs mount to a software stack with a module in front of it yeah we're sort of glossing several related issues um that center around what happens with the software regardless of whether you
put it in a container or not depending on how you're building and deploying it so let's just pick for example spec as we've talked about it one of the things that happens when you build software and spec is that you lose the old paradigm of load library environmental variables and stuff everything goes in an r-path so basically everything that has to get built and they're getting better at detecting things that have been built already but basically everything that's the dependency of that software goes in the r path and therefore goes on to the file system for that software uh it's pretty hard to distribute that
software to worker nodes by whether they're staple or stateless that's actually hard to pick up that built spec library and copy it over so what that means is it puts pressure on your cluster-wide file system the portion that you're using for distributing software we actually have a separate setup for that uh we're just implementing vgfs we had gluster before but it wasn't strong enough nfs is popularly used so that thing is getting slammed um millions of open file handles because every single thread of every single mpi application is opening dozens of file handles to stuff that's in your rpas so we actually found the gluster
couldn't handle that at all even though regular nfs can so there are implications on how you build and distribute the software independent of whether it's containerized one thing about a container is it's a single sieve image when you you know move it you're moving it into essentially local memory so those dependencies go away and it can be a way of circumventing that dependence on the external on the cluster-wide file system but at the cost of chewing up your memory or local if you have enough space to turn on um you know swap files you know local swap files can can we don't so we have
very tiny disks so this is just one sample among many uh python has similar considerations so independent of build libraries how you deploy the software you know r is a another example you can get huge not only huge libraries but huge numbers of file accesses for every single one of those python link uh you know execution uh points to the dot pi c file that's in there and that are across your cluster it can be a huge bandwidth issue thank you ellen dave i think you had some thoughts on this as well before anyway yeah so going back to your original question you're basically talking
about like how how big should a container be before you sort of draw a line in the sandy and say okay that's too big let's let's figure out how to make your container smaller and i think that you know what that kind of gets to is best practices and i i kind of have a pet peeve when people start talking about you know best practices because best practices come with an assumption it's like best practices for what you know best practices for your application for my application you know for what for what you know so containers are a very very powerful tool and whenever you
build a really powerful tool when you give it to somebody they might use it for something that you you didn't have in mind and that is actually it shows how powerful your tool is that somebody can go in and adopt and adapt it to something totally different that you never thought of and so in summons i mean one of the things that that i containerized in the past was um we built a tensorflow container uh and the tensorflow container it needed to be compiled two different ways one with avx instructions and one without so that depending on which node it landed on it would run
intelligently it would either run with avx or not run with avx and not just you know bomb out and not work and so you know we call that a fat container like a fat binary right that has multiple different ways of running and and so you know i i just i i hesitate towards putting limits on and telling people that they ought to build their containers this way or that way or you know whatever i mean because you don't know what they're trying to do and maybe a best practice for your application is is not a best practice at all for somebody else's application so
i don't know that's that's just how i kind of feel about the whole you know really big fat container thing sure i guess one more i guess one more really quick thought too um we were talking a little bit about why is it still so hard to install software in scientific environments and um this makes me think of the story so i brought my nephew one time to the air and space museum in washington dc and we were looking at this really early satellite and you could tell that it was like handmade and like it was put together it had like writing on it and
people would like stamp things on it and stuff and everything and my nephew was looking at this and he's like you know this is supposed and i'm like this is high tech and he's like this is supposed to be like high tech and he's thinking about you know like television programs like csi and stuff where you're bringing up computer screens in the air and you're doing stuff and and i'm like so i you know i used to be a scientist and i said to him look look at this this is what science looks like you don't manufacture science off an assembly line it's not shiny
and pretty and it it's you know one person or a small group of people hand building stuff prototypes that look ugly but they work and this is why it's so hard to install software in scientific environments because a lot of times your software is just a prototype there's no packaging involved there's no you know these are these are people that don't necessarily write code as their primary job that are in a lab trying to make their code analyze some data they get it to work and they publish it and it's your job to take it and figure out how to install it in your scientific
environment and it's handmade you know so that that's that's my hot take on why it's still hard to install uh code on in scientific environments that's a great day thank you john i think you had something you wanted to add i i did but dave just prompted uh something that i remembered uh i've i'm definitely guilty of making fun of biologists who write software like biologists are terrible terrible at writing software and i've had to support a lot of really bad software but the one thing i will say in their defense is at some point they stop and they're done with that piece of software
an actual developer will never stop making it worse like developers won't stop you will never find a developer who will put on their performance goal for their year i'm done this is perfect i don't need to do anything i'm just going to sit here and draw a paycheck right they will always keep developing and somewhere between the grad student finishes their masters and never touches the software again and developers develops forever until they make the package impossible to use or work with somewhere in there there's a sweet spot and i wish we could find that sweet spot that's a good point thank you john i
have several questions that are coming in uh i know todd is i think we're gonna pop up first oh so ask or any of the panel members if any of you guys ever used gen 2 like e-build used it in the past have it in a while yeah same here though i did think of it in this particular context years ago when we were trying to build software and find a way to automate it i wondered why someone didn't just take either e-build or ports from bsd and port it to for use in scientific software applications they are quite different in the particularly multi-versioning and
multi-builds of the same thing which is why easy build and spack exists now thank you got another one from todd there we go can commercial software like ansys be containerized hot topic around here lately i would say uh talk to your legal team and uh talk to the vendor um i don't know about ansys but specifically i know of them i just don't know if they would allow containerization there are third-party commercial products that have specific rules for how you can do containerization um and some of them are very public about like hey here's what you have to do to fulfill this others when i
was working with mathworks for matlab they were very concerned about having a matlab license that anybody could run and so we had to work with our legal team and their legal team to basically say yes you can but you can't include a license number that has to be something that the end user has to pass through i don't know if that's gotten better it's been a couple years since i worked with them on that but there are um commercial vendors out there that are doing stuff um and then there's others that you mentioned containerization and they just kind of gloss over um one of the
reasons why i really like super computing is i can go see all the vendors i work with and i very often would go and you know harass them at their booths and be like why can't i containerize your software um because there at uh sc you tend to be dealing with people who know the field that you're coming from versus just a straight cold call to somebody who's like i don't know at least there they know what hpc is and they have at least a better idea of why so that's a great place to kind of meet up with some of those vendors um but
yeah it's that's a tricky one because uh it's all legal at that point yeah thank you chris that's something we've talked about quite often is how do you do licensing with that from some of those vendors so that's exactly what we've been discussing because thank you i don't know if you've had any more questions come in so we're getting close on time here glenn i feel like you've been quiet for a while i'll give you first shot at closing thoughts then [Music] i think uh ellen brought up a really good com uh comment or thought or theme on on uh reproducibility being you know much
less greater importance than transparency and now that i think about it i tend to agree um because because other thoughts kind of swirling around in my head with with regard to reproducibility actually actually kind of originate from i think other sources right so it's it's and i'll pick on biologists again too uh because i am one it's uh you know the problem there started a long time ago right not telling us how you prepped your data or cleaned your data and things like that right so you know the program you're running almost didn't matter if you weren't telling me how you how you cleaned your
data what you threw out the averages you took the statistics you did um and also on the publishing side right how what's accepted for publication what what the bar is set at um you know publication is going through this huge renovation hopefully um not just being open but like having to publish your data like what giga science makes you do um the elite journals you know what they accept you know with regard to reproducibility uh and uh and things there so i i think transparency kind of is a little bit more important there because with regard to containers because reproducibility actually has i think issues
that originate from other places in uh in science and not just uh you know giving us container is not going to be a silver bullet there thank you glenn john i'll go to you next closing thoughts i would um just throw out a suggestion people admins especially people who are beginning hpc admins stay away from tools that try to do your job for you and learn how it works like invest the effort in learning how things work it will pay massive dividends down the road and you know you there there are no shortcuts to knowing what you're doing that's good advice thank you john jeremy
well uh two thoughts um one i thought it was pretty clear that if you are an author or a researcher publishing papers uh if you're using software to do any of your um any results are based on software keep a copy of that software and put it on the shelf because it might be needed save your sys admins a lot of reproduction work but the other thing you know and i like to think that part of my job is trying to make life easier for sysadmins and end users and there was this uh you know this interesting comment that came up said you know looked
at um we're not by moving to a container containerized model we're not shuffling all the work off to the user i think the difference is the users come to you now and say i need this piece of software i need to accept the licensing server i need you to configure it this way i think the change is going to be they're going to start coming to you in the future and say can you help me build my container um sure and so i don't you know and to me that's just it's just a shift in work but it uh it's i think in the long
run it's going to be a lot easier i hope so thank you jeremy chris um yeah i i fully agree with a lot was just been said i think it is very important to know um how the tool works so that you can fix it when it breaks because it inevitably will break there will be an update or something that will break it and you'll be responsible for fixing it um i um caution the use of tools you don't really understand some of that that work because of that situation and so um they're great tools especially if you are you know the only admin for
the hpc and so everything's falling on you the better you can reproduce your work so that when a new version of the package comes out you can easily rebuild it and deploy it for users that's all really important but understanding the process of how you get there really really does help with updates and even when you need to reproduce something and rebuild an old version thank you chris dave yeah it's just a really really interesting conversation um you know just to riff really quick on something that jeremy said i mean uh yeah i totally think that um containers not only so so they they could
be used for evil to sort of put all the onus on the users but i don't think that anybody is really doing that i do think that uh users ultimately might come to admins at some point in time and say can you help me build my container and i think also that um you know admins and support scientists and application um you know scientists and so on are are also um kind of taking that step for the users in many cases a lot of times users come to you and say can you help me install this complicated thing i don't know how to do it
and then you know as an admin you might say sure i'm gonna do it in a container and by the way i'm gonna do it in such a way that you might not even have to know that there's there's a container there to use it and so that's another great use case for containers is just make the application engineer or the scientist or the admins life easier as they support the user all right thank you jonathan um my main thing right now is just to encourage people like this is an area of innovation and there's there's cool new tools and new techniques that are being
developed right now and if you're interested in that kind of thing uh looking for ways to get involved maybe you're like an open source guy and want to do more of that or you're you have a pain point uh there's activity here and there's a lot of eyes working on this problem and i think that there's a lot of opportunity for people to contribute thank you jonathan allen i'll give you the last word well really fantastic job all you focus some great points uh it's not enough time to make all the uh observations that could be made but i just uh want to advocate on
for a couple things one is i mentioned earlier as uh to greg's horror the the excel computing projects uh e4s single container is not intended to be deployed that way it's it's just a package for the built stuff that you can use for testing i think there'd be value in us doing something like that aimed not at the exit scale stack but at a typical hpc stack and what is what i've done to try to facilitate that is i've gotten a hold of all of the ci cd uh steps that they use some of them are internal but we could reproduce that we could actually
to pick up jonathan's point we could get a community effort going to build a typical hpc stack that you could if you just wanted to get started download the container try it out and then go back to the recipe and build because we'll include the recipes build what you want so i think that there's value for the community to try to reproduce what e4s has done on the local scale and then i i just want to bemoan the loss of the singularity hub in practice i see a lot of people's workflow uh because we only support singularity on our apptainer on our clusters is to
go and pull the docker container and into singularity uh so we're relying on the docker hub is that the right way to do things i don't know so i think we should look at having a community resource for building and maintaining uh singularity containers as well i'll stop there oh that's a great point ellen we've been talking about that quite a bit inside i know dave he's been talking about that a lot so really appreciate it thank you guys for joining uh our time is up it's actually a little bit over so thank you for joining this week uh looking forward to seeing you guys
next week please go like and subscribe we'll see you see you soon you
Built for scale. Chosen by the world’s best.
2.75M+
Rocky Linux instances
Being used world wide
90%
Of fortune 100 companies
Use CIQ supported technologies
250k
Avg. monthly downloads
Rocky Linux
Have questions about your infrastructure?
Talk to a CIQ engineer about Rocky Linux, HPC, and AI infrastructure.