 So on HackMD, I've pasted a link. Let's see, here's my screen. The link is this here. There it is for the recording, but yeah, for people in the course, check HackMD instead. So let's say that I am someone and I need to run lamps, which is a molecular dynamics code, and I want to run it on Triton. And I know it should use MPI, which is basically the you hire multiple Italians each to watch one pot, and they can even be in other kitchens and somehow they communicate with a manager and send all of the results back and that manager distributes the different parts around. Okay, so I'm here. I see this and I want to read this gas.lam, which is the lamps file. Okay, so I copy the link and, okay, here I am on Triton. Why does my prompt log not work? Okay, why does host name not appear here? The test does, that's just weird. Okay, well, let's just go on. So first I will change to my work directory, which we will read more about later. Then I will make a directory for this work and then go there. Okay, so now I want to copy this input file to here. So I know I can use this program called WGIT, which will take a URL and basically save it to this computer. Well, it actually... So WGIT is basically like... Yeah, it's download a file. So in this case I see I can't just download the file. Somehow it's blocking the other tools. So let's do it the old fashioned way. I will actually open the file and copy and paste it. Copy, nano, paste. Okay, I will in nano control X and Y to save it. If I list what is here, I see yes, there's gas.lam. So remember, we're not expecting anyone to follow along with what we're doing. Okay, so I know that lamps is probably installed on Triton. So I will module, module spider lamps and see this will search the software that's installed on Triton. And I see there's these modules here. So my notes say I should use this lamps module. So module load lamps. Okay, so now I want to test it. MPI run, MPI. So how do I know these things? So MPI run we learn about tomorrow. LMP MPI is what I know is the program for lamps. That's the lamps program. I'm actually running. And then I know the syntax is in gas.in. Is that actually listed on here anymore? Serial in. Yeah, so like the documentation is sort of saying what I should be doing. Yes, lamps has a possibility that you can compile it in a serial fashion or with this MPI that enables it to use multiple computers or multiple processes at the same time. So let's try running it. I'm pushing enter. And okay, there's some error. What can it be? I scroll up. Cannot open script input gas.in. It's gas.lam I stored it as. I see. Yeah, okay, gas.lam. This demonstrates the next really important thing we do, which is reading error messages and not getting scared. Okay, so I see something that looks like there's probably error messages here. RM cannot remove IMG, not just file or directory. So it looks like it's trying to save some images for what's in there. So again, I'm not going to be scared, I'm going to use nano again to open this. And let's see what's the stuff. Shall remove images, make their images. I'm going to comment out all of this image related stuff. And also the video related stuff. So Triton is, I guess this is a small demo where they want to visualize what the results are. But usually on Triton, when we do big things, we run it without the visualization and then we'll visualize afterwards. Yeah. Okay. Yeah. So while I commented out visualization stuff, Ctrl X, yes, and save it again. Let's try running. So this is right now running on the login node. So basically this is running in my own kitchen or what's the good metaphor here? This is running in the main lobby of the apartment building where there's a small microwave and stuff like that instead of going and running in the proper kitchens. And if you run too much on the login node, then this is taking resources from other people. And you might get a polite little note that says please don't do this. Okay. So I managed to run it on the login node, but this is just for testing. So let's find a way to actually run it with other... Well, okay. Let's see if we can run it with more processors. Oh, I know MPI run. Yes. So here Richard was running with MPI run. So it basically runs on the login node itself. So that's usually not recommended because that's shared by everybody else. There was a question in the HackMD that why in Helsinki University there's a recommendation to use S run so it will talk about S run later and it's coming in this demo as well. Yeah, that's actually what I'm about to do now. So what I usually do myself, so if it takes 36 seconds, then that's so small, it doesn't matter. So I run it as simple as possible to eliminate any possible bugs with things like this image stuff. So I want to run simple first to get more complicated instead of going to the complicated thing and have to debug multiple things at once. So now we're still running without Slurm, so without the workload manager, but I'm going to try to tell it to use 10 processors. Did this work? It looked like there was an error message here. I'm guessing there's some sort of network problem with it. But it might work. But anyway, it did seem to work and it seemed to run... Oh, total wall time, zero. So it seemed like it ran... Actually, I guess MPI run, does it not work? Well, it seemed to run a lot faster anyway. Okay, so now let's do it the right way. So I'm going to make a Slurm script. Script.sh aw bash I guess it doesn't... What Richard is now writing is instructions to the queue system. So previously, when he was running with the MPI run, that's how many documentations are usually written. The documentation is usually written in a way that how you would run them if you own the place, basically. How would you do... If you completely know that you have access to all of the resources in the system. But in the cluster, because it's a shared system, you have to go through the queue in order to run stuff. So now Richard is writing these instructions to the queue, how it should behave and so that it can do the stuff. Yeah, so first up here what you see in red, this is the instructions to the queue manager. So it says, I need a kitchen with 500 megabytes of memory. I expect this recipe to last five minutes and I need 10 burners on a stove. And it will go through the whole building and find a cluster or kitchen or multiple kitchens that satisfy these requirements. How do I guess this? I know it's much less than five and if I say five, that's basically zero. So I'm not going to think about it. And 500 megabytes of memory, well, it's probably a lot less than that and 500 megabytes is nothing. So I'll do that. I tell it I want to get rid of any modules I have loaded and load lamps. So this ensures that I get to a clean state. And then instead of MPI run, I have S run and then the same command that I've already debug from before. So I will save this file. So I used a different, I didn't use nano to edit this. And now I submit it with S batch, which is basically this says this is the thing where we're packaging it in an envelope and sending it to the queue manager to say I want to run this somewhere. And we run it and it's been sent off. If I run slurm queue, I can see, okay, there is nothing running here. So it either finished really quickly or something else went wrong. The output doesn't appear in the terminal, but appears here. But why would it not be able to load the lamps module? So these error messages are basically caused by not being able to load lamps like this. It might be that like, can you try all the newer lamps modules with lower curves? The other lamps module? But was this, this is the right one, right? Maybe before we go changing this, I will module purge or purge to get rid of the old modules that I had. And then, so my notes from last year show the uppercase module. So I wonder if there was a reason for that. There was some problem in that. Yeah, I think it might be that this lamps module is quite old. So this is the kind of situation where you go to the get help section and probably ask us what's wrong so that we can then install a newer version of lamps that probably would work better. Especially here because it's something that we installed and made available to you, you should come ask us for questions soon. But this is the basic idea that we get to by the end of or actually we get to this point by early tomorrow. So instructions for the script manager and then what you actually run. And here we say dash and 10, which means we request 10 burners to run the song. We can return to this demo tomorrow. We'll probably today install a newer version of lamps. We can redo the demo tomorrow with a brand new lamps version. Yeah, should we check HackMD? Let's see what we've got. Okay, array jobs, debugging, should testing debugging be handled. So you can, yeah, I think I sort of answered this. So I personally am a debug with really short jobs on login node. And once something starts taking more than a few seconds, then start submitting it. But these interactive sessions we're going to talk about next actually are another really good option. And probably what I would do more quickly. Yeah, like these demos were supposed to at least show you this kind of like a workflow that you usually have in the cluster that you write some instructions for the queue to do. And then the queue does it for you basically. And you can get, you can run these parallel jobs in the queue. You can run whatever jobs you want, but we'll talk about it when the time arises for specific programs. Okay, the parameters needed for queues. We'll get to that later today. Yeah, let's ignore, we don't actually know the details. Yeah, about the NPR run command, you shouldn't try to replicate the demos. These were just meant to be like this kind of appetizer for the actual meal, which will come during the talk.