 All right, we're at least at 230, so let's go ahead and get started. People walk in, that's fine too. People join us on Zoom, that's fine too. We kind of have a real rough outline of what we're gonna go over here today. So, you know, if you have questions, comments, whatever, feel free to bring those up here. I mean, this is, you know, this is not we're trying to fit on an exact schedule, that kind of thing. However, I will say that We're, lost track of my train of thought when more people walked in, sorry. We put this on today's session. If you've been using BioCat for a while, this today's session will probably bore you quite a bit. We're really gonna kind of hit the basics today. Wednesday's session is much more in depth. So if you get through here and you say, wow, they're covering nothing that I'm getting anything out of, feel free. You're not gonna offend me if you go, whatever. Generally speaking, people that show up to the days, won't show up to Wednesdays, people that show up to Wednesdays, won't show up to the days, because they're really aimed at two target audiences today. You know, if you're truly new to this, Wednesday's stuff will probably be too advanced for you. You won't be ready for that. And if we don't, and if you're more advanced, you're probably gonna be bored through your skull here today. Would you put the records online and accessible? If not, may I record you? I am recording this right now. So, and we will put these back up later on online. People on Zoom, go ahead and use the chat if you need to communicate with us. And I think we probably have some people in here on chat also so that, you know, we can bring those up. Let me introduce myself first. My name is Kyle Hudson. I'm probably the most vocal of the Baocat staff. I'm the extrovert of the group, so that's why I have the microphone on. That doesn't necessarily mean I'm the most knowledgeable, but so here with me too, we have, Dave, once you come over, Dave can be seen on the camera for the people out there that aren't there. So that's Dave. He's the guy you probably respond to you most with user type questions. I see some nods. That means you've probably worked with him before. He's real good about helping people with Optimizer Code. The other one I have, we have here is Adam Tigert, and he is our other system administrator and the more senior of a system administrator. He's been here for ten years now, pretty close. Ten years this year. So, he knows his way in and out of what's going on here. So, just going to take a quick look at what we're covering here. The other person who's usually with us here is Danny Andreessen. You've probably seen lots of emails from Dan. He is out of town today. His father is in the hospital, and he was planning on being here, going to welcome everybody to this session, that kind of thing, but he's not around due to family emergency type thing, so we're doing as we can without him here. And we really have a lot of people here. I'm kind of surprised that the room is this full, and the zoom is that full too. Okay, is there anybody who does not yet have a Bayo Cat account? Do you have one? Oh, we have a couple. Excellent. That's fine. We're here to help. The first thing you want to do, and I'm going to see, like I said, I'm not the most zoom proficient guy out there, so I'm going to say, okay, that's what I want then. Like I said, I've used it as a client before. I've never set up a meeting of my own here. So, what I brought up here is our main website, and that's what we're going to be going off of quite a bit here today, is if you go to BayoCat.ksu.edu, it'll bring you straight to here, and this is kind of where we base everything off of. We try to document everything here. This is a wiki, by the way, so if you are a BayoCat user, you can click the login button up here, put in your EID username and password, and you can change your documentation. We have some sections that we don't let people change for obvious reasons, like our policies, for instance. We don't want anybody going in changing our policies, things like that, but if you see something here that's not documented well, or you see a better way of presenting material, feel free to log in and change this. We monitor that, so try not to get too much graffiti and that kind of thing in there, and it hasn't happened yet. I think we've had what, two people besides ourselves? Is it only one? Yeah, that have gone in and made some changes here, but we welcome you to do that. So, this is a wiki, if you use Wikipedia, it uses the same back-end engine as that, so we can get to there. On this page, about halfway down there is a thing that says how to get an account, and if we click on that, that takes you to account.bayocat.case.edu. You do have to log in and that takes your case date, EID, and password. You fill out the form from there, I'm not going to do that, mainly because I don't know my password and it would take me longer to look it up and log in than anything else. And we go through the same page to approve your accounts. The process that happens is, once you apply for an account, that gets sent out to Dan, who reviews it, and then he tells us yay or nay, and I think he's had maybe one nay in the whole time I've been here, and that was for somebody that was, I think it was a spam listing of some sort, somebody was obviously not needing an account, not really wanting an account just to fill out the form or whatever. So, if you have any plausible reason, Dan approves it. We go through the same web interface and we approve it and that automatically creates your accounts, add you to the mailing list serves, that kind of thing. Anything else, Adam? Do you need to cover there? Pretty well covers it. Connecting to Bayocat. Everything through Bayocat, to begin with at least, we'll talk about one other exception of this, but to connect to Bayocat, we use SSH. SSH is not a program, it's a protocol. It's like saying, I'm using a web browser. It doesn't matter if you're using Chrome or Edge or Firefox, it's a browser. That's what SSH is. It's kind of like saying a browser. We have specific programs that we can use to connect to those SSH sessions. If you're on a Mac, you already have one built in and it's through the terminal, so if you just open up a terminal, you can go straight to and you just type SSH Bayocat.ksu.edu there. On Windows, we have a couple of them. Putty is probably the most common. How many people here use Putty? That's probably the most common one. I found this one a couple of years ago. I like it a lot better myself. That's my own personal preference, but this is MOBA X term and it's free to download also. I'll show you why I like it here in a little bit because when we go to Transfer Files, it's just kind of a one-stop-shop instead of having to have a separate program. If you're using Putty, you have to use one of their helper programs, PSCP or PSFTP, to get files in and out of it, or you can use something like FileZilla, which is a nice graphical interface for it, but this combines that all into one interface here. I'm hearing sounds. Is somebody on Zoom? Let me see here if I can. Okay, I'm not seeing it here anymore, so they must have muted themselves. So to get here, I'm going to show you what this session looks like. To connect on SSH2, head node.bayocat.ksu.edu. And those of you who've ever used BayoCat before, except for the couple of you that don't know how many accounts yet, you probably save those either in Putty as a save session or if you're... I use my daily laptop as a Mac, so this is what I like on Windows, but if I'm on Mac, I just type SSH, head node.bayocat.ksu.edu. You can specify your username, especially if you're on a Mac or Linux box, then you type your... That would be your case state EID, so mine would be Kyle Hudson at head node.bayocat.ksu.edu. Also, you can save a password. Don't necessarily recommend that, because that is your EID password. So if you're doing that, make sure it's on a machine that you have all to yourself that you're not... You're confident enough that if your machine gets taken or whatever, they're not going to be able to get on there, because if they get that stuff, they're going to get everything else. I'm going to silence my phone, because this is driving me crazy if you're not disturbed mode. People suddenly decide that I named a Facebook message in middle of my meeting. That should be all it takes to get there, and then after you do log in, it'll ask you for your password, and you can see where I put this up here. I did not specify the username and mobile external, so it asked me for my username, but it will do the same thing. On Mac, if you don't give it the username, it'll assume that it's whatever username you have on there. So if you have your username the same on your laptop as you do for your EID, then it'll be fine. Otherwise, you have to specify your EID. When we get there, we look at something that looks very much like this. This gives our policies. Note that it's not to be used for classified, personally identifiable information, HIPAA data, FERPA data, anything that you would get in trouble for for sharing. We're not set up for those now. We are looking at the possibility of making Baocat available to those types of research groups. Those will be on a case-by-case basis. So before you ever put anything in there, you really need to contact us, and we are an email away. We have a ticketing system, and that is also on our website. Under how do I get help? Right there. Baocat.cs.ksu.edu. We highly encourage you to use that rather than emailing one of us directly. We get lots and lots of emails. If you send it to that address, it goes into our ticketing system, and that kind of ensures that it doesn't get dropped anywhere along the way. A lot of people see, obviously you've seen mine, mine's Kyle Hudson at KSEU. And people see that. I've had people send me emails directly. Generally, I'll put those at the bottom of the list, even if I do see them. We all filter our mail quite a bit, and so we highly suggest that you send it to that. That'll get your question answered in the most quickly, because not only will you make sure it gets to the right person, because I might not be the right person to ask if you send mail, it's great to me. And then I had to forward it on to other people. But also, if it's something that any of us can handle, a lot of times you'll get a message back very quickly. There have been a couple of times when I was working here for the first year or so, I remember seeing an email come through about midnight that asked a question, and Adam and I both independently answered it within five minutes by the time the mail system caught up that the other person hadn't seen the other one's response. So you both answered the question at midnight, because we both happened to be up and happened to see the question, it was something we could easily answer. So if you send it to that address, that'll get your answer as soon as possible. And actually, you're probably more likely to get Dave at that time of day, these days anyway. Dave's our night owl also. It wouldn't be unheard of. We also are on IRC, for those of you who use IRC, I don't. That's not always the fastest way to get a hold of us. We're not always paying that as much attention to that. But if you're already on IRC, feel free to stop by. Being one of us there, we do answer on that. There's a channel called PoundBeowcat. The other piece of this is something that we've had a problem with lately, more than we have in the past. And that is that we need to have more information, saying my program didn't run doesn't help us any. We have a really hard time diagnosing my program didn't run. Give us a job ID number, the path name, the script name for the job and a description of the problem. So tell what you're trying to do, what results you got. It's much different saying if you couldn't get a job to submit as saying your job suddenly stops, shortly it submits and it runs and then stops. And also your job runs completely through but just doesn't give you what you expect. When you say it doesn't work, we don't know which of those cases it is. So give us all that information. If you give us that right off the bat, that'll really help us to diagnose the problem as quickly as possible and not have to write you back and wait for you to respond and that kind of thing. So we can answer questions a lot better if you give us that information right up front. Any questions at this point? I've been working with the user and she said, well, now this isn't working. I don't know if it's that she did something different or if this is a new problem or a continuation of the old problem. Just all that kind of information that you can give us is out there. Any questions about connecting mobile X term? People here with laptops and people in Zoom land too. Have you guys tried to connect? Can you connect? Moving on there? Or do you want to? I don't care if you don't want to. Pardon? Sure. Using mobile X term? Yeah. Okay. So what you're going to do is you're going to click on session up here. It's going to be an SSH session. And the remote host is headnode.bayocat.ksu.edu. You don't need the head node right now, but that is subject to change in the future. So we're telling people to use that. That will probably continue to work without the head node on there for a long time. But we make no guarantees that we'll always stay that way. Head node, we guarantee we'll stay that way. So if you leave it that way, you're good. Anybody in Zoom chat that we need to look at here? I don't see the... You're monitoring chat? Okay. Thank you. All right. So now I'm logged into Bayocat. We're going to talk about Linux itself. So every supercomputer that I'm aware of at this point runs Linux. I'm not saying there aren't any one-offs that run some other flavor of Unix, but they don't run Windows. They don't run Mac. Microsoft actually tried making a supercomputer back in the, what, 2003-ish maybe timeframe. And it was a colossal failure, and they said, fine, we don't need to do that. So they... What's that? Well, let's say this is some Unix variant anyway. If it's... They don't run Linux? Okay. Anyway, so to use this, you're going to have to know something about Linux. So what you notice, first of all, that's interesting. I have no idea what that is, what the arrows are on the screen. No, it's not. The first thing you'll notice is that your mouse really has no effect. This is not a point and click interface. This is something you type into. So when you log in, you're presented with your username, the at sign, the system you happen to be logged into. When you go to... That's great. And the head node you had to be logged into. We have four head nodes that we use. And depending on the time, any two are active in time. So if I was to log in right now, I would be on either Selene or EOS. We have two more that you might see at some time in the future. Usually those are as we're preparing to go to upgrade a system. So we'll let people in on the new ones as we've upgraded it for a while, and then we'll switch over to our by logs into those at some point. So if those ever change, that's what's going on there. There are fairly randomized between them. We do set it up so that if you're from a fixed desktop where you have a static IP address, you should get to the same one every time. We don't promise that, but that's kind of the idea. Most people like having the same thing. So we have my username, the at sign, and the computer I'm on. And then it tells me the directory that I'm in. And the thing you'll see there that a directory is very similar to a folder in Windows or Mac. The tilde that you see that we have on the screen there, my mouse is being wonky. I bet the batteries are getting low. The tilde before that, that tells me I'm in my home directory. If I look at, I can use the command pwd, which is print working directory. And that will show me I am in homes, Kyle Hudson. My username is Kyle Hudson. That's where that's where I get dropped into when I first log in. If we go back to our bio cat page, we also have somewhere here, Linux basics, we have a link to it. Did I miss it? Training videos, new, even higher than that. Like I said, if anybody is really good at user interface design, come in here and edit our wiki. We are obviously not good at this. This is our second try at it. And it's better. How do you use bio cat? How do I use bio cat? There we are. Linux basics. Geez. All right. So this kind of tells you some of the things we talked about first, of how to log in, giving directions on how to log in from a command line for those of you on Mac or happen to be on Linux. If you already are on Linux, you probably shouldn't be sitting here today because you're going to be bored. We'll skip the transferring files for right now because we're going to talk about basic Linux commands. And we're going to kind of go through this pretty slow. Again, at the risk of boring people, but if you miss this part, you're really going to be lost in everything else you do. So we want to make sure we get this down. A directory, say it's a folder in Windows or in OS 10. The current directory, you can represent as a dot. So any time you're referring to your current directory, you can use that just as a period. And directories are separated by slashes. So if you notice back here, the base directory is just a slash. That's what we call the root directory. Beyond that, we have a directory called homes. Then we have a slash saying that it's going to the next directory. And then we have one called Kyle Hudson. I tried to make it larger and I couldn't make it happen. At least not easily. If you know a shortcut key in Mobex term by chance, let me know. I'll happily make it bigger. To change directories, we use the cd command. So I have a lot of directors out there. I'm just going to tell you I have this one out here. It's called Beoket Intro. Yeah, Beoket Intro. One nice thing about this is that when you are far enough typing a command that it knows what you're going to finish with, you hit the tab key and it lets you finish. So when I said cd, cd has changed directory. And I started typing Beoket. I thought Beo, I hit the tab and it finishes the rest of that because I have no more directories in there that start with Beo. So that gets me into that directory. Now you can see instead of having the tilde in there because I'm not in my home directory, I'm in my Beoket Intro directory here. Linux comes from Unix. Unix has been around since 1969. If my memory serves me correct. Back in the early days of computing, memory and storage space was at a premium. So you see a lot of things that are abbreviated way beyond what you think they should be. Like I said, for change directory, it's cd, two keystrokes. If you want to rename a file, it's move, mv. If you want to remove a directory, rmdir, or for a file, it's rm. There are several of these that, like I said, if you haven't used it before, you're going to be probably lost in it. We try to put lots of these over here. On this, we have kind of a cheat sheet and ways you can get to some of the most common things you'll see. So here are some of the most common ones. File, which tells the type of file it is. So I have a file out here called, this is an old PowerPoint. So I say file, intro to Baocat, dbtx. And it says, hey, I look at that file and I can tell that it's a Microsoft PowerPoint 2007 or newer. I can do file, myhost.sh. And it's going to tell me it's an ASCII text file. That's just it going through and detecting what kind of file it is. It's not perfect, but it does a pretty good job with most things. Cat, that actually comes from concatenate. You can use it to put a bunch of files together, but by itself, it just prints the contents of the file. So that file I just had up there, which I've used for my introduction class here, called myhost.sh, I can say cat, myhost.sh. And you can say, you can look at it, this is just everything that's in that file. It's a really short file. It has two lines. I've got it there on the screen now. cp for copying. In Windows, for you guys that are in Windows, a lot of times you'll use the switches as what we call a switch is a slash at the end of a command. So you'll type a command slash something else. In Linux as well as in OS 10 if you're using a Mac, they use hyphens. So you can do cp, cp is copy, so you can do cp-i. And that'll ask me if I happen to have a file already out there with that name, it's going to ask me if I want to overwrite it. cp-r, recursive. So you can copy an old folder to a new folder. Again, mv for move, rm for remove, and creating directories, mkdir, rmdir. And touch will either create an empty file or will update the timestamp on your current file. So it'll, it makes things as of the current time. Or it can, or if you just want to create an absolutely empty file. To get files into and out of Beocat, there are lots of ways to do this. The most common way is with some sort of graphical interface, which is what we have here. Mobile X term, like I said, this does this as really nice all by itself. Because if I'm over here, it has a tab over here on the side that says SFTP. And I can click on here. This gives me all the files and folders. I told you I had a lot of them out there. So I can go into my directory that says Beocat intro, where I just was. I can click there. And I can take this myhost.sh file, right-click, and say download. Sure, we'll put it on the desktop because that way I won't forget to do it, to clean it up when I'm done here. So now, if you look, I now have a file here on my desktop called myhost.sh. Let's say that I want to upload something to Beocat. There's my MOBA X term INI file, which it just created today when I was, when I, this PC goes with the room, this isn't my own laptop. So I had installed MOBA X term on this today. Okay. I can take this and have the, bring up my finder window here. And I can actually just take and drag that over here. So now there's the file that I had earlier. And I just uploaded that to Beocat. As a matter of fact, if I do a director listing here, you'll see that I now have that file MOBA X term INI. And if I cat, that's usually fairly short. You can see all the, all the preferences that it has that MOBA X term set up. I don't really need to have this on Beocat, just showing you how it works. One other really handy command to know about is called less. Less comes because there was a, it becomes less is more. There is a, there is an old, old command on Unix called more, and it still works. I can do more MOBA X term INI. MOBA X term INI. And it says, this shows me what's at the top of the file. And you see it says that my 28% and it says I have more. Now I hit the space bar and it'll let me see more of the file. So that worked and people used it, but people said, you know what? It's kind of handy sometimes to be able to go back up. So they created less because less is more, right? Yes, programmers have an odd sense of humor. So I now use less MOBA X term INI and it does the same thing except now I can use my arrow keys to go down. I can use my arrow keys to go up. I can even use the page up and page down keys to look for things inside the file. And I don't need that file anymore. So I'm going to remove it, RM. You notice over here it doesn't change because I haven't told it to check again, but I can hit the refresh button and now it's no longer there. So I've now uploaded a file from Beocat, downloaded a file from Beocat. If you want to do this from the command line, if you're using Max in particular, I'm not going to go through all how to do this mainly because I don't have the environment set up here to do this, but if we scroll up on this Linux basics page, there are some examples of using SCP, which is the command line secure copy is what SCP stands for and how to get to the right folders, right directories and grab the right files. You can even use it to copy entire directory trees too. And you can do that here also. I could take that Beocat intro folder. I'm pretty sure. Let's go up a directory. I think it'll let me do this. Yeah, I can download the whole folder and you can see it's got 19 files that are just downloaded there. So I now have on my desktop a Beocat intro folder with the same things inside of it. One other handy thing about mobile external that the other ones don't do is go ahead and throw that away. Don't need it anymore is that it has a built in file editor. So if I go into my Beocat intro folder here and I want to edit this file, I can edit this in in Linux and there are a couple of commands to do that. Probably the one you'll first want to start off using and Adam's going to kill me for this because it's not really good is nano. But I can say nano. Click nano. My host.sh and there's that file that I've been showing you a couple times here. And I can just go to the bottom and I can say do something else. And then it shows me down at the bottom the control keys that I can use to do this. So I can do control X to exit. That's the little care X down there. And it's being really intuitive there. So save modified buffer. Say yes if you want to change it. Ask the file name by default it keeps it the same inner and now when I cat my host.sh I have to do something else on there. If you're going to be using Linux from the command line very much, I highly suggest that you learn vi or vim. It's built into Max also. It has a learning curve very similar to a brick wall. It's like the somebody looked at Stack Overflow which is people where people ask programming questions and there are like over a thousand times people asking how do I exit vi because it's not at all intuitive when you first get in there. Yes you can arrow but you can't do much else with this. If I try to queue for quit it doesn't know what I'm doing. And then I'm tied up. You don't know what you're doing. The secret is there's two modes to it and then once you know what you're doing it's a much better text editor than anything else you'll come across once you get over that initial learning curve. There are several online tutorials on how to use vim. I would highly suggest you go through those if you have a chance. I use vi and vim interchangeably. Vim is vi improved so vi is visual interactive. Is that what it is? Visual interactive editor? Visual interface something like that. It's been around well I found my notes from when I was an undergrad in 1990 so I know it's been around at least that long. But like I said it has a really steep learning curve but it lets you do really nice things like search and replace is all from the keyboard and it lets you search through files really quickly. It lets you clap sections and expand sections and replace all instances of this with that kind of thing. The other nice thing about mobile extram is it has an old editor built into it though too. This is something that you don't get with putty or with filezilla or any of those. I can right click on my myhost.sh and I can say open with default text editor which it has its own text editor built in and that is the default. And what it does then is it downloads the file to your machine, lets you open it. I'm going to say another test and when I save it has been modified you want to replace the remote file. Yes and then it reuploads it as soon as it's done. So it does it all in one step it downloads it and it's on your machine reuploads it all in one step and now you can see that I have that back in there again. Yeah even though they look the same windows and unix use slightly different formats in that it's how they use a character turn. Windows has two types of they do a control r control m at the end of every line and as opposed to a control r by itself. So it's basically just how they put the file together and we have some commands dos to unix and unix to dos that'll strip that so I can say uh dos to unix dos being of course a relic of windows from way way way back a long time ago but I can say dos to unix myhost.sh and that will strip those off of there. Mobile X-Term does that automatically so I didn't really have to do it here. It doesn't ever hurt to to run it through there and now I'm going to go back in and I'm going to take that line back off there again. So that's kind of a quick introduction on getting files into and out of directory structures. The only thing you really should pay attention to on on Linux it's a bit different than what you might be used to is permissions. Every file has a set of three permissions and if I look at this I'm going to ls-l ls is to get a file listing dash l means along so I'm going to look at all the information I have on this this is the information that gives me on on my files here so if I look at myhost.sh you'll see that I'll work my way from this side it was last edited on February 5th at 1508 or 308 in the afternoon so about a minute ago that's what we expect this is its size it's 19 bytes these are its owners by default your files will be owned by you so my the owner of this file is Kyle Hudson and the group is Kyle Hudson users there are a few of you in here who are in some groups that you'll get some other groups on here when you when you edit files and we set those by default particularly in certain directory users say hey if you're in this directory use this group you can still own it yourself but but have your group be the group owner and that's relevant because of this over here there is a section over here that doesn't seem to make a whole lot of sense unless you know kind of what's going on but it becomes very important because we see a lot of this especially if you're like trying to run somebody else's code this is the probably the biggest thing that keeps keeps that from happening there are three sections here the first one is the first column all by itself and on all this all these cases it's just a dash which means uh it's not a directory there'll be a d in there if there's a directory occasionally they'll come across some other strange things device files things like that 99% of what you deal with and what and what we're having to worry about is right here uh if I had a directory here they'd have a d on the side instead of just a dash then the next section is three in a row of rwx rwx rwx and like for instance the file that I just had here that my host has rwx r-x and r-x what that means the first section is for the for the owner so that's me I'm the owner I'm Kyle Hudson so this rwx means I have read write and execute permission the next group is for anybody it's in my group the Kyle Hudson users group it just so happens there's nobody in my else in my Kyle Hudson users group so this there's nobody really the supplies to but again for some of you guys who are like bioinformatics that kind of thing some some individual professors have their own groups for their grad students uh if they can if they can write to it and you can't and you should be able to you need to have them change this because this means that anybody in my group has read permission and execute permission but they do not have permission to write that file so they can't change it that's handy as you can as you can imagine sometimes yeah I can let people look at my stuff without letting them without worrying about them messing it up the last group is for the rest of the world so this last rwx says the entire world can read and execute this file but cannot write to it again usually you see the least restrictive over here somewhere in the middle and then what you want the world to be able to use I'm not going to go through the ends and alts of change group I'm pretty sure it's on our page here on Linux basics let me look real quick if not well we don't have change group on there what to add that in there or not I'm saying change ownership say Joan which is also not on yeah there we are I do it all the time you'd think I would have the commands down so this is just real quick and this this explains the permissions on this page the ownership and permissions this goes over what and a little more detail of what I've done here too but it tells you how to change these so you can say chmod u plus x which means I'm giving the the user group other is the you so that's giving myself you plus x I mean I'm adding the x permission I'm I'm giving myself permission to execute it you can also take that away so I could say oh which is other user group other so it's taking the world if I'm saying oh minus r that'll say take away read permission from the entire world there are some groups that like their stuff tighten down they don't want anybody else to get into it that's fine I will tell you that there are sometimes they want us to troubleshoot problems and Dave in particular cannot because Dave is not in any of our special groups he can't get around the permissions models Adam and I can we only do that under certain circumstances and pretty rarely and so usually if you're wanting us to help troubleshoot a problem you're going to need to give us some permissions to to go in there and and look at these any questions at this point that are they're all completely confused because it's all going over their heads so one of the two I hope that's not the case yeah how many credit hours is it worth all right let's see if that nobody wants that um in that case let's go ahead and take like maybe just a five minute break or so uh just relax a little bit and we'll come back and we'll talk about our scheduler and how all that goes together uh how many of you have before I do that how many of you had not seen bao cat we will go down there and give a tour at the end if you have anybody wants to go anybody want to go you want to go anybody want to go see yeah okay we'll do that yeah go see the go see it at the yes at at the end well not not now we'll do with it we'll do that right at the end of the class so but I'm just trying to get a feel for it that's something we wanted to do so a lot of times a lot of times these introduction classes people have not actually seen it so we'll take you down and give you a quick tour at the end or you could just go stay down there by it I don't care I don't matter you go away the other all right so uh about five minutes here we'll uh take a quick break and uh we'll take it from there you're going to dive in on the other stuff well I can do there's a page on the language scroll control scroll control and scroll nice we'll leave it that about that big that'll work and if any of you guys want the microphone you're more than welcome to take it from here like I said I'm just the guy who likes to talk so I think there's another one there we did that too well they do it both same time okay well the next section there's a section on going through the languages and stuff like that it's pretty great so here's what our here's how you run an rpo that kind of stuff okay well we got to go through the scheduler first though so why don't I go through the sorm and kiss that stuff okay right right and apparently I'm not sputtering the thing there we are if I'm going to get in the right spot first and we'll put this on at the end because it it'll fall back off again as you're doing it I've had this happen a few times barely barely hanging on there I'm going to yeah they figured out how but so this is within moba x term so it's not supposed to be doing that yeah that involves me uh figuring out as figuring out where's the session yeah that's what I clicked on down just the left of the file brother yeah I'm having trouble that there you're you're on here sessions this is a little x term you already have that one okay I'll just create a new session there this is creating a moba x term session or is this okay yeah but it's still putting that header stuff in there for some reason it's screwed up it's putting the slain and the slain in the uh directory that it shouldn't be so it's screwing something up oh well I can live with it and you said it's control and scroll okay and how do I get to the web browser got it any idea what the command is to increase the font on this I'm chrome I'm older than you are okay can everyone hear hear me okay so for those of you who used uh bail cat previously we used uh uh before christmas uh we were on a different flavor of linux called gen two and now we're on centos linux centos is a little more common uh when it comes to supercomputing so this puts us a little more in in the mainstream as far as our usage we also converted over from sge which is a sun grid engine uh scheduler over to slurm slurm is also used more commonly in other uh supercomputing centers so uh this aligns us a lot more closely with what other places are doing uh this does mean that uh if you've used uh our system before christmas and haven't since you have to recompile your code uh there are different things that you have to learn like submitting a job is different with slurm than it is with uh with sge and we also manage things using modules uh which makes it much easier to switch if you want to use different versions of mpi you can switch in between we have uh certain applications that are loaded by doing a module load for example so what i'm going to do is go through some of the basics of how to use our current system um some of what's in here is also how to convert your old scripts to new scripts as well so uh i'll just start here from the scratch uh one of the first things to know is again the use of modules there's probably about a hundred modules or so that you can choose from and to list those you do a module avail to get the list of available modules then to load a module if you are using the application vasp for example you would do a module load of vasp and capitalization does count you can then do a module list and if you did these other two commands if you did the module load of vasp and then do a module list what you'll see is that it actually loaded a bunch of other modules that vasp depends on so vasp for example in order to run it depends on an mpi library so it loads open mpi that's one of the nice things about modules is that it has all the dependencies in there for you when you do a module load it sets up those dependencies it sets up all the paths that you need so this would set up the path to vasp underscore std for the standard version of vasp it also sets up any library paths or environments for example if you load python it sets up your python environment so you don't have to source that like you may have had to in the past let me just switch back and do that real fast so so again if you do a module avail it'll list all these things like boost is in there there's a bunch of gcc stuff so these are just an extensive list of what you can do so here i'm just doing a grip which is a search for vasp and again what this is telling me is if i just do a module load of vasp it's going to choose this last one because that's set up as the default d here this one was compiled for iomkl iomkl is a tool chain it's the intel compiler tool chain along with the open mpi the o stands for the open mpi stuff mkl is the math kernel library that comes with the intel stuff so anytime you see iomp excuse me iomkl that just means it's compiled with all the intel tool chain uh this one here was compiled with gnu stuff a lot of times with the gnu tool chain you'll see fos for free open no fos free open software uh system free open source software so those will be the main tool chains that you'll see a lot of the uh applications so again if we do a module load of vasp then it'll say oh i changed all these things i already had some modules loaded before so it changed the gcc core from 7.2 down to 6.3 it changed the open mpi version and some other things like that so the thing you should remember here is that when you're running an application it'll set all these things up for you if you have certain uh modules that you use a lot you can put them in your bash rc file so i'm going to look at my bash rc file and i put them after this conditional this conditional is the test for whether the shell is interactive or not and i put down a module load of iomkl because i want the intel compilers there i also want a newer version of pearl the 5.26 version so i always also have that so that it always uses that um so you can put your modules uh in your bash rc file if they're ones that you use regularly um because i have those in there when i loaded vasp it said well the versions that you had in there were not the ones i need for vasp so it reloaded the correct ones so now if i do a module list again there's the pearl that i loaded um let's see vasp is down here and then open mpi is here so now if i do a which vasp std which is the binary that i'm running uh it knows right where to look for it because that path was set up so this is a nice thing about modules is that once you so if you're running an application that it's in a module you just do a module load and everything gets set up for you so if i again i need to do mpi run to run vasp uh that's already set up as well so it knows the path to get the to the appropriate version of mpi run so that's kind of the uh basics of using uh modules um on wednesday we'll cover a lot more uh in-depth issues about modules some more advanced stuff so if you're using custom codes that are not in a module uh you may have to compile those yourself uh probably the first thing to do is if it's a if it's a uh program that's not listed when you do module avail but you think other people around the university might use that you should probably contact us first because there might be an easy build an easy build is how these modules are set up um so it may be something that that we say well other people might want to use that so we'll go ahead and make a module for you but other than that if you have custom uh software uh it's your responsibility to compile that on your home directory and we're available to help you you did say help though yeah show us that you've actually done a little bit with it there are too many people around campus for everybody so give it a shot you have problems then contact us yeah and again the uh module load of iomkl is intel stuff the module load fos includes not just the genu compiler but kind of the equivalent of what's in the math kernel library uh but on the genu toolchain so that would also load openbloss which is an optimized uh bloss library uh the fftw library and scale pack okay so as far as running your code if you ran under sge you will have a script similar to this that you used qsub with with slurm everything up here basically has a different syntax down here but it's mostly a one-to-one matching so before where you had a pound dollar sign so before where you had a pound dollar sign up here for your qsub commands here you have a pound s batch instead of doing a minus j oh this is a join so that joins the input or the standard in and standard error that's done automatically down an s batch so here i have a used current working directory that's also done automatically here you specify the name with a minus capital n so i named it netpipe here you do a minus minus job dash name equals netpipe so you can see there's a lot of times a one-to-one conversion so what i did is i actually wrote up a pearl script kstat.convert where you give it a qsub script and then you do a minus minus slurm and give it the slurm script that you want it named and that will automatically take this and convert it into one of these it's pretty good i haven't had too many people complain about uh there being anything left out uh and if there's anything it can't handle it'll normally give you a uh a warning message saying you need to handle this um so if you do have old qsub scripts you can automatically convert them again using kstat.convert with s batch just a few things that i'll mention is the direct conversion we use memory per cpu which is the same we did under qsub so right now this is asking for one node 32 tasks on that node four gigabytes of memory per cpu a cpu is a core so since we asked for or task so since i asked for 32 tasks in this case i'm asking for four gigs times 32 as the total memory the other way to ask for memory is to use minus minus mem equals then you can specify the total memory per node so again this would be node if you still are asking for four nodes 32 uh cores per node so one of our doors four of our doors uh this is still putting in a request per node but if if you find that's more convenient than per core uh that's just fine either one is is is fine the time is a little different in that you can specify days it's days dash hour hour colon minute minute colon second second so uh with time again you can just specify the days before a dash i reckon there's different ways of asking for nodes i reckon our cores i recommend using the nodes and tasks per node uh as a general way of doing that uh if you that gives you a regular arrangement so that you can ask for like four nodes four tasks per node and you can control things very accurately if you don't care where your tasks are uh like if you have an embarrassingly parallel code and it doesn't matter whether they're on the same machine or spread across machines or not you can use just minus minus n tasks equal 12 and it'll just spread them across anywhere but a lot of codes uh we had one today that i think Adam pointed out where they're running a classical mb code and spreading it over multiple machines well the the communications is slower across or between machines and it is if they're in the same machine so that code is going to be running slower than it should be so if you use the minus minus nodes and the n tasks per node that allows you to control things uh better than uh some of the other options we'll go over more options uh on wednesday this last stuff you can have it mail you can have it send you email um when the when your job begins ends and if it fails in the middle right now i have it sent to all uh we'll cover on wednesday how you split that up i think you just put this begin comma fail would just give you those two begin comma end and then here's the here's where so all these up here are commands that go to the uh slurm scheduler to tell it how to allocate nodes this line here is where we told to run the code so i'm running my netpipe code i'm telling it to use mpi run because it's a mpi code is a multiprocessor code np tells it how many uh cores to run on and this is an environment variable slurm and prox is the number of processors that you asked for this is the application the netpipe application and then these are the parameters so again everything all the s batch commands uh are what you're telling the scheduler and how to allocate uh how to allocate machines and memory and so forth so this kind of goes over some of the memory and tasks options that i mentioned before and again if you're interested in more advanced uh use of slurm uh then you should come on wednesday at least for the first hours we'll cover a lot more advanced things on modules on using slurm and things like that so let's just start by talking about submitting your first job once you have a script you just use s batch to submit that script s batch and then the script name and then you can use kstat to see that it's been submitted so kstat the one that i use commonly is minus minus me that'll tell information about just your jobs so let's go ahead and do that a quick one here so my s batch script i have it called sb short for s batch dot test oops sb dot sleep again the first line is just telling it you're in the bash shell the minus l is necessary to tell it it's a login shell i named this one sleep i gave it uh this is something that won't come up very often i told it to wait 10 hours before it runs and you don't want to do that normally you want it to run as fast as possible so i just do this because i wanted to sit in the in the queue so i can show you i limited it to one hour um these i have commented out because i put a second pound sign there but some of you will have priority uh to run in certain on certain machines so this gives me priority this line would give me priority to run in the cis hpc group which is just the bail cat group uh this would give me priority to run in christine akins group she's a chemistry professor so i'm asking for one node four cores on that node 10 gigabytes total and then i'm asking for specifically one node here so ignore these two in general for right now we'll cover those more on wednesday then these are the commands that are actually going to run it's just going to list the hostname and then it's going to sleep for 3600 seconds so the hostname just prints out the hostname which is saline in this case so to submit that i do an s batch sb dot sleep and it says it submitted it just fine if it has any problems with that it would tell you and then if you don't know why that's what you email us is to copy that and and say hey i submitted this job it gave me this output that will give us the job number and the error code so i'm going to do a kstat minus minus me and it takes about five seconds because kstat is a pro program that i wrote up it goes out and gets a lot of information from different places colorizes it and presents it to you in a more readable form so it says the only thing i have running is in the bail cat queue it's me as a username i named it sleep this is the user id it's on four cores and it's pending this is in yellow because i put it on hold and then i asked for 10 gigabytes requested and it's been in the queue for zero minutes just some more things about kstat if you do kstat minus minus help it will give you this help information some general usage if you just want to look in the queue you do kstat minus queue um if you do kstat alone kstat alone it'll give you basically information about all the hosts and all the jobs running on the host and everything in the queue uh kstat minus c will give you information about what's running on the on it so let's let's start out with just doing kstat and looking at some stuff so all this stuff at the bottom first of all it tells you how many cores are being used so we're running at about 83 percent with 43 nodes down there's a lot of those that are just kind of dead these are all the users submitting jobs so this user is submitting a lot of jobs for one core the underscore and then this means it's an array job so they submitted 16 jobs at once for example they're asking for 512 megs and some of these jobs have been waiting for three hours and 35 minutes anytime you have this which is actually more of an orange color that means they submitted to they have priority on certain machines so this person is Jeff Comer he has priority on his own machines uh this user Luke has priority on Amir Bahaduri's nodes and you see mine up there at the top uh I have high priority just in general being one of the administrators so that's why mine's at the top it's not running because I again told it to wait 10 hours because I'm not very smart right okay so these are up here are the jobs that are actually running so you can see the first thing is the this is the name of the the node mole is one of the classifications of our nodes these are some of our newer ones 20 of the 20 cores are full the load is 19.6 out of 20 which is good if the load level is much lower than the core count that means someone's running inefficently this is something I look at every day and then I'll I'll try to figure out why and I'll email that person and say hey look you're you asked for 16 cores but you're only using one this is what's wrong in your code let's fix it so you can use all 16 just because you asked for 16 cores does it mean that your code can use those that's one common misperception this is the amount of memory that's being used on that host it is not very accurate it sometimes counts disk cache in there and then this is the owner clear off to the right here so anyone from their group gets priority this is the person running there is Mike this is the job name he's running on all 20 cores this is in red red means it's a killable job that means he's not actually in that group but no one from that group is using that node so it will run killable jobs killable jobs or anything 24 hours or less so if you submit a job for 24 hours or less it'll get flagged automatically as killable and run on machines that are owned by other people so that's a good thing but if one of their users comes along it'll kill that job off and put theirs on it'll automatically reschedule your job though so you don't have to do anything about it and then that's why we say only 24 hours or less because we don't want you to waste you know we don't want to get 12 hours in or we don't want to get it run a three-day job and then have it killed off and have you start from scratch again with with the old system with sge we were able to pick up very accurate indications of how much memory your code used with slurm we just can't do that right now and that's something that we're still working on when you request when you put in your s batch script you have to request a given amount of memory if you're running to start with you just have to guess right now if you exceed that amount of memory your code can run slower because you hit disk swap so it is important to overestimate if you overestimate by too much you can limit yourself to what nodes you're running on and things like that a good first guess is to start out with about four gigs per core because that's typically what most of our systems have if you need to know more exactly if you're running large memory things like if you're in chemistry or biology you can use ganglia which is one of our websites and we'll go into that a little bit more probably on wednesday on how to look at the memory there it's a little more in depth but just be aware that with case that i do try to pick up the amount of memory that you're actually using but i only see it displayed maybe one out of 20 or 30 times and it's just not clear why that doesn't come through more easily so let's see if there's anything else that comes up so these are totally empty so they're waiting for someone to run on they are owned by some group so maybe we just don't have enough killable jobs available in the queue is that a minus sign there yes yeah so some more empty nodes but yeah so we have some moles that are available so anyway those are some of the things that you can look at with kstat another thing you can do with kstat is do a kstat minus c that'll give you kind of a summary of the core usage so this will tell you each user how many cores they are currently running on and how many they have in the queue the colorization green means me i have four cores queued up red in general just means you're using more than 10 percent of all the cores yellow is i think more than five percent so it doesn't mean that you're really doing anything wrong it just highlights the bigger users and in this case for example this person is using 14 percent of all the cores but his major professor also owns a lot of the cores so he has every right to use a lot so that just kind of can give you a summary of the core usage okay so again kstat minus me let's get back to the script that i submitted and again it's going to be just sitting there in the queue again because i told it to wait for 10 hours so what if i decide that i want to cancel this use the scancel command and then let's see that's 170698 so the scancel will just simply kill the job off uh when you submit jobs it doesn't necessarily uh well it'll submit them right away even if there's open nodes it may not run them right away it does take slurm you know a few minutes to uh figure out even if there's open nodes to get your job running you can see it canceled things very quickly um um one note on this we do have a professor who is uh working on analyzing part of his research is he's analyzing uh the reasons behind why people use scancel and so part of his research he wants data on uh why people are doing an scancel so what he's asked is that people load a module for scancel and what that module will do is when you do the same scancel it will simply prompt you to put in uh the name of the application that you're running and then the reason for why you're doing the scancel uh this will help him with his research it helps give us some feedback uh on things like well are you canceling your code because you gave it a certain amount of time to run and you're running out of times you're canceling it because of that so we can get statistics on how much a system time is being wasted because there's that hard time limit and is that something we can give feedback to the people who do the scheduler to make it maybe more of a soft time limit or something like that it should be extended so we want to do things like this to try to help uh improve uh the system so he's uh encouraging people to do this uh Dan is also going around trying to convince the professors that own some of these nodes to mandate that everyone that works for them uh opt in the way to opt in is to put this module load of scancel in your bash rc your dot bash rc uh file so i should have done that in fact so let's go through this process so now it gives me uh the application name and i'm just going to put sleep that's yeah i'll just put tests so he knows to delete me uh to delete this entry but if i was running vasp for example i would put vasp in there uh there's whatever the name of your code is try to keep it simple if you're running a classical molecular dynamics code code there's a common one NAMD NAMD for nanoscale molecular dynamics that's what you would enter here now it's giving a variety of multiple choice bins that you can choose from i'm going to choose bin b because this is a training workshop but you want to try to uh determine which of these best fits you if you made an error with your script uh then you'd put d1 if it was an error with your application parameters d2 and so forth so we've tried to simplify it so there's bins to put in so again i'm going to put b here you see at the bottom is other if you want to enter other you don't put other and you just put the reason in in freeform and it'll store that but otherwise you can just do multiple choice and this will do the s cancel and it'll log that information for him so we've made it as easy as possible and again it'll help him with his uh research then so oops the tilde here means go to my home directory and then the bash rc so if i wanted to do a module load of s cancel so now i'm opted in oops no not so now i'm opted in yeah so now i'm opted in and vincates will be happy with me until i comment it out later okay so any questions about doing the simple job submission and some kstat stuff and we want to do 15 minutes for the tour 10 or 15 okay so submitting your first job to monitoring your job went through that and again with kstat there's a lot of stuff in there you're just going to have to play around and if you have any questions you can always ask me one of the things that's nice about kstat is if you submit a job and and want to know why it's not running or information like that you can do a kstat minus j and give it the job number and that'll print out the job here and it'll print out a lot of other information here so let's actually go and do that because it'll be colorized again kstat minus j and then i gave it the job number so up at the top it shows that it's in the queue and it shows the information that kstat would normally give you but i also grabbed information from another place and highlighted it so the highlighting stuff is things that you can look at the status is listed as pending the reason is giving here is that i i specified a beginning time time other reasons it can put up here are resources meaning it just doesn't have the resources it can also say priority meaning other people have more priority than your job gives you the time limit here this is the one that i highlighted most this is estimated start time a lot of times you'll submit a job this estimated start time if it says it's going to start in three days don't really worry so much about that this is worst case scenario it looks at the current state of the system and it says uh if all these jobs finish when the person says that it's going to finish uh in other words it's taking the hard time limit then this is when you'll get your job scheduled so we have people who submit jobs and always put 28 days down because that's the maximum time so these are not always that accurate um so take this as a worst case scenario and if it does say two weeks then you might want to contact us but under normal circumstances this will keep moving up as other jobs finish before their specified time one thing to look at that's useful is the partitions that you're in so if you do have priority to run on certain machines this is a good way to check and make sure that that came through and that it's actually looking and putting you in your priority queue now this also put this put me in the killable queue because it's a job that's shorter than 24 hours and also in the batch queue the general one i didn't specify a given list and this is the other line to look at because this is how many nodes and how many cores i requested as well as the memory request then it actually lists your script it does uh i have it uh getting rid of all the comments and stuff but it does actually list your script this makes it easier on me in particular because if you send me information saying this job doesn't work this is the first thing i'm going to do is look at this and then it pops up where your script is here and what your script is so if you do just give me the job number and don't give me the path and so forth and the uh script i can pop that up any questions on that okay so i covered the case that minus c okay more information is in advanced learn that's what we're going to cover on wednesday advanced modules advanced stuff on slurm nest batch okay the last thing we're going to cover today is on uh some of the software that's installed and this is mostly dealing with how to run using different languages uh for a complete list of installed modules that are module lists i already showed you how to use module avail so we'll go over this a little bit more and tool chains more on wednesday again the main tool chains are the fos the free open software stuff and then the iom k l stuff you can specify subsets of that like just icc for example or i4 intel stuff that in general this will get you the whole package okay most commonly used software open mpi again mpi is the message passing interface that allows you to run multi processor jobs where the uh processes can either be in on cores in the same node or they can be on cores in different nodes and again you do a module load of open mpi and that'll set up your mpi run which is how you launch them it'll also set up your compilers which are like mpi cc is your c compiler and mpi for for example for your fordran compiler i'll go over those more on wednesday in the second hour for those of you who want to know more in depth about parallel computing i'll probably tell you more than what you want to know about parallel computing um r the r language a lot of people are used to using r from the command line so you can actually get in on the head node and type capital r and it'll give you the command prompt and you can do things on the head node you just have to do small things you'd have to do the module load of r first uh but you can do small things uh to use r on on the compute nodes uh so there's your module load r and starting r you want to start by installing packages on the head node if you need them so you can't put so you're gonna when you run an r job in batch mode on baocat you're going to put all your r commands into one file and you're going to submit them in your script you can't do install packages in there because install packages will prompt you for things like what mirror do you want to use what site do you want to download things from so the install packages command is one thing that you need to do before you submit a job with s batch then in your script you can use the library command to load them uh let's see okay that i think there's a mod or there's a library load or something yeah i'm not an r person really so so in your script then you have your normal s batch commands up here the uh where you request certain numbers of tasks then you can put the module load r in your script so this is something i didn't mention before if you're going to use a module like again if you're running vasp uh you can do that interactively and do a module load vasp and then when you submit your job you can just use the application vasp underscore standard and you don't have to put a module load in your script if you don't want when you submit a job to s batch to the scheduler it takes your current environment and all the modules you have loaded and passes that along uh when it uh spins things up on the compute node it's a good idea however to do it this way if you're going to be reusing a script it's not a bad idea to put your module loads in that s batch script just so that you make sure that you're running with the same modules all the time in fact one of the things that i do is i'll do a module purge which starts with a blank slate and then i'll i'll do a module load of the exact modules that i want to use that way i guaranteed that each time i submit it i get the same set of modules and if you really want you can put a module list afterwards so to list those uh and puts that in your output file your log file so again for r we're doing a module load r then we're doing an r minus no save minus q and we're piping in our commands so this is how you run r in a batch mode so it's different from running it interactively you have to put all your commands in these the uh script here and then use that as piping it in from standard in to r then you submit your script and it'll run it in a batch mode so any questions about that we have java that's the extent of my knowledge about java any questions on that for adam and again one of the nice things about modules is uh i'll mention this here so uh for python it's very common that some python codes need python two and others need python three this is the nice thing about python is that you can load the version that you want if you just say module load python it will choose one of these which is the default the last one so it'll choose this last one which is python 363 with the intel mill if you need python two then you should do a module load of this whole line here to specify the whole thing and you can again choose whether to do the intel build or the there's a couple different gnu builds here so that is one of the nice things uh doing a module load of python then uh for example here we'll set up uh some of your virtual environments there's a little more information about setting up yeah do you want to comment on any of this adam previously we were using uh the virtual env wrapper this is the wrapper was wrapping up these commands and so this is just maybe slightly harder but also more straightforward and that's if something breaks you can see is here what what broke so yeah so we had a lot of people uh when we did the changeover uh that still had that sourcing of the virtual env wrapper and they said well this doesn't work anymore so it's broken now it's it's actually that you don't need that uh but you need the functionality so uh you should uh if you're using python you should uh log in and look at the website and here and uh see what you actually need to do that's a little different and then this right here is how you do python install stuff with pip install okay pearl uh again i use the newer version so i there is a default version uh that's available i use a newer version the 5.26 because i need access to a lot of colorization stuff uh and again so i just do a module load of the pearl 5.260 submitting a pearl job again you can do the module load pearl uh and then you do pearl and then the pearl code you can also just specify the pearl code in there okay installing your own software uh i think we're going to cover that on wednesday how are we on time okay so let's open it up for questions again and then uh uh we'll take everyone on a tour who wants to any questions or comments yeah um even by installing my own software it's like if i'm using either so yeah so if you're using this is actually a special piece to do uh even license software is a whole and again anything having to do with the licensing system we're about to touch base with us first open source software it's free to use with there's no licensing issues with it ones that aren't you know that the other 10 percent that we need any more questions so again on wednesday we're planning on going more in depth on some of these issues like modules and especially going over more on slurm uh talking about things like array jobs and environment variables and things like that um we'll also get into more uh software installation and so the first hour will be a lot more of those advanced topics the second hour will be me talking about parallel computing so i will talk about what a parallel computer is some of the different hardware aspects programming it in mpi and open mp i'll just give some basic examples kind of to give you an overview of what that's about i'll talk about job performance of parallel applications communication stuff like that so you're welcome to come for both hours if you want to cut out after one hour that's fine uh so just kind of pick and choose if there is something that you think you would like us to cover on wednesday uh let us know so any other questions okay well thank everyone i'd like to thank everyone for coming and anyone who wants a tour i'll just leave you down downstairs and get a quick 10 or 15 minute tour