From c9a7661d5f095d0bd4d4fadb8740c5c33ca2e42e Mon Sep 17 00:00:00 2001 From: jasparm Date: Sat, 18 Mar 2023 18:59:29 +1100 Subject: [PATCH 01/10] made the m3 login page and put in some linux commands --- src/chapter3/linux-cmds.md | 19 +++++++ src/chapter3/login.md | 76 ++++++++++++++++++++++++++ src/chapter3/putty_key_not_cached.png | Bin 0 -> 20614 bytes src/chapter3/putty_req_password.png | Bin 0 -> 6244 bytes src/chapter3/putty_start.png | Bin 0 -> 30897 bytes 5 files changed, 95 insertions(+) create mode 100644 src/chapter3/putty_key_not_cached.png create mode 100644 src/chapter3/putty_req_password.png create mode 100644 src/chapter3/putty_start.png diff --git a/src/chapter3/linux-cmds.md b/src/chapter3/linux-cmds.md index b148553..89b1dc5 100644 --- a/src/chapter3/linux-cmds.md +++ b/src/chapter3/linux-cmds.md @@ -1 +1,20 @@ # Linux Commands + +If you are already familiar with linux, feel free to skip this one. If you aren't, then here is crash course in linux commands. + +## Basic Linux Commands + +| Command | Function | +| --- | --- | +| `pwd` | prints current directory | +| `ls` | prints list of files / directories in current directory (add a `-a` to list everything, including hidden files/directories | +| `mkdir` | makes a directory | +| `rm ` | deletes *filename*. add `-r` to delete directory. add `-f` to force deletion (be really careful with that one) | +| `cd ` | move directory. put `..` to go up one directory (to the parent of your current one) | +| `vim` or `nano` | bring up a text editor | +| `cat ` | prints contents of file to terminal | +| `echo` | prints whatever you put after it | +| `chmod ` | changes permissions of file | +| `cp` | copy a file or directory| +| `mv ` | move or rename file or directory | + diff --git a/src/chapter3/login.md b/src/chapter3/login.md index 40f7307..5bfe0df 100644 --- a/src/chapter3/login.md +++ b/src/chapter3/login.md @@ -1 +1,77 @@ # Logging In + +First you will need to ssh into a login node in the cluster. You do this by doing the following: + +## Windows + +If you are using windows, the best way to ssh into m3 is by using [puTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html). + +Once installed and opened, you will see a page like this: + +![puTTY config page](putty_start.png) + +Type in your m3 username followed by `@m3.massive.org.au` and press enter or the Open button. + +If it the first time accessing M3 from this client then you may see something like this: + +![puTTY auth page](putty_key_not_cached.png) + +Just click Accept, and puTTY will add the cluster's ssh fingerprint to cache. + +## Mac / Linux + +On macOS or linux, ssh is built into the terminal, so just copy the following into your shell, substituting username for your username. + +```bash +ssh username@m3.massive.org.au +``` + +You may get a similar warning to the above image about the server identity, just type `yes` or `Y` to accept it and add the ssh key to cache. + +Everything from now on will be the same across whatever computer you are using to access the cluster. + +The first thing to pop up will be a request for a password. Don't worry when you don't see your cursor moving when typing, this is just for security. Your password is still being recorded. + +Once you have logged in, you will come to a page that looks like this: + +```txt ++----------------------------------------------------------------------------+ +| Welcome to MASSIVE M3 | +| | +| For assistance please contact help@massive.org.au or (03) 9902 4845 | +| The MASSIVE User Guide https://docs.massive.org.au | ++----------------------------------------------------------------------------+ + + - Useful Slurm Commands: + squeue + sbatch + scontrol show job + scancel + + - Massive User Scripts: + show_job + show_job + show_cluster + user_info + + - Slurm Sample Scripts are Here: + /usr/local/hpcusr/latest/training/samples/slurm/ + + - We recommend using smux to compile and test code on compute nodes. + - How to use smux: https://docs.massive.org.au/M3/slurm/interactive-jobs.html + + For more details, please see: + https://docs.massive.org.au/M3/slurm/slurm-overview.html +------------------------------------------------------------------------------ + +Use MASSIVE Helpdesk to request assistance with MASSIVE related computing +questions and problems. Email to help@massive.org.au and this will generate +a ticket for your issue. + +------------------------------------------------------------------------------ + + +[jasparm@m3-login2 ~]$ +``` + +Once you are here, you are ready to move on. diff --git a/src/chapter3/putty_key_not_cached.png b/src/chapter3/putty_key_not_cached.png new file mode 100644 index 0000000000000000000000000000000000000000..6bd2ed3094073e897c6a0c74508cb61943b4a49a GIT binary patch literal 20614 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 literal 0 HcmV?d00001 diff --git a/src/chapter3/putty_req_password.png b/src/chapter3/putty_req_password.png new file mode 100644 index 0000000000000000000000000000000000000000..62a6457ccbd8c48df8b087ff4aa9f79374c63ad5 GIT binary patch literal 6244 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 E0naG5o&W#< literal 0 HcmV?d00001 diff --git a/src/chapter3/putty_start.png b/src/chapter3/putty_start.png new file mode 100644 index 0000000000000000000000000000000000000000..90435669a741c5c4649095e6efec66fd50891206 GIT binary patch literal 30897 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

f!LXbwf=%&`HP(#wv0=9%T7 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

$P|Uyo!F-{>gkL#{_FP* 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 EKZs0G&j0`b literal 0 HcmV?d00001 From 0284bfe8132fd85c31ab7a801cd62510a2b648d9 Mon Sep 17 00:00:00 2001 From: jasparm Date: Thu, 23 Mar 2023 19:39:43 +1100 Subject: [PATCH 02/10] wrote most of shared fs and added linux cmds --- src/chapter1/m3.md | 6 +++ src/chapter3/linux-cmds.md | 27 ++++++++++++++ src/chapter3/login.md | 2 +- src/chapter3/putty_req_password.png | Bin 6244 -> 0 bytes src/chapter3/shared-fs.md | 55 ++++++++++++++++++++++++++++ src/chapter3/slurm.md | 12 ++++++ 6 files changed, 101 insertions(+), 1 deletion(-) delete mode 100644 src/chapter3/putty_req_password.png diff --git a/src/chapter1/m3.md b/src/chapter1/m3.md index 3152926..bfd1ec2 100644 --- a/src/chapter1/m3.md +++ b/src/chapter1/m3.md @@ -1 +1,7 @@ # M3 + +## Request an account + +## Add to project + +## Access gurobi \ No newline at end of file diff --git a/src/chapter3/linux-cmds.md b/src/chapter3/linux-cmds.md index 89b1dc5..8336aa8 100644 --- a/src/chapter3/linux-cmds.md +++ b/src/chapter3/linux-cmds.md @@ -18,3 +18,30 @@ If you are already familiar with linux, feel free to skip this one. If you aren' | `cp` | copy a file or directory| | `mv ` | move or rename file or directory | + +## Cluster Specific Commands + +| Command | Function | Flags +| --- | --- | --- | +| `show_job` | prints information about your jobs | +| `show_cluster` | prints information about the cluster | +| `user_info` | prints information about your account | +| `squeue` | prints information about your jobs | `-u ` to print information about a specific user | +| `sbatch ` | submit a job to the cluster | +| `scontrol show job ` | prints information about a specific job | +| `scancel ` | cancel a job | + + +## M3 Specific Commands + +| Command | Function | +| --- | --- | +| `module load ` | load a module | +| `module unload ` | unload a module | +| `module avail` | list available modules | +| `module list` | list loaded modules | +| `module spider ` | search for a module | +| `module help ` | get help for a module | +| `module show ` | show details about a module | +| `module purge` | unload all modules | +| `module swap ` | swap two modules | \ No newline at end of file diff --git a/src/chapter3/login.md b/src/chapter3/login.md index 5bfe0df..c40b097 100644 --- a/src/chapter3/login.md +++ b/src/chapter3/login.md @@ -74,4 +74,4 @@ a ticket for your issue. [jasparm@m3-login2 ~]$ ``` -Once you are here, you are ready to move on. +Once you are done and want to logout, just type `exit`. This will close the connection. diff --git a/src/chapter3/putty_req_password.png b/src/chapter3/putty_req_password.png deleted file mode 100644 index 62a6457ccbd8c48df8b087ff4aa9f79374c63ad5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6244 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 E0naG5o&W#< diff --git a/src/chapter3/shared-fs.md b/src/chapter3/shared-fs.md index 9861660..e5904d2 100644 --- a/src/chapter3/shared-fs.md +++ b/src/chapter3/shared-fs.md @@ -1 +1,56 @@ # M3's Shared Filesystem + +M3 has a unique filesystem consisting of three main important parts (for you). + +## Home Directory + +There is each user's personal directory, which only they have access to. This has a ~10GB allocation, and should store any hidden files, configuration files, or other files that you don't want to share with others. This is backed up nightly. + +## Project Directory + +This is the shared project directory, for all users in MDN to use. This has a ~1TB allocation, and should be used only for project specific files, scripts, and data. This is also backed up nightly, so in the case that you accidentally delete something important, it can be recovered. + +## Scratch Directory + +This is also shared with all users in MDN, and has more allocation (~3TB). You may use this for personal projects, but keep your usage low. In general it is used for temporary files, larger datasets, and should be used for any files that you don't need to keep for a long time. This is not backed up, so if you delete something, it's gone forever. + +## General Rules + +- Keep data usage to a minimum. If you have a large amount of data, consider moving it to the scratch directory. If it is not necessary to keep it, consider deleting it. +- Keep your home directory clean. +- In general, it is good practice to make a directory in the shared directory for yourself. Name this your username or name, to make it easily identifiable. This is where you should store your files for small projects or personal use. +- The project directory is not for personal use. Do not store files in the project directory that are not related to MDN. Use the scratch directory instead. + +--- + +## Copying files to and from M3 + +### Using scp + +You can copy files to M3 using the `scp` command. This is a command line tool that is built into most linux distributions, and is available on Windows through [PuTTY](https://www.putty.org/). + +#### Linux / Mac + +To copy a file to M3, use the following command: + +```bash +scp @m3.massive.org.au: +``` + +For example, if I wanted to copy a file called `test.txt` to my home directory on M3, I would use the following command: + +```bash +scp test.txt jasparm@m3.massive.org.au:~ +``` + +To copy a file from M3 to your local machine, use the following command: + +```bash +scp @m3.massive.org.au: +``` + +So, to bring that same file back to my local machine, I would use the following command: + +```bash +scp jasparm@m3.massive.org.au:~/test.txt . +``` diff --git a/src/chapter3/slurm.md b/src/chapter3/slurm.md index 8c10c4e..708b3e7 100644 --- a/src/chapter3/slurm.md +++ b/src/chapter3/slurm.md @@ -1 +1,13 @@ # Job batching & SLURM + +```bash +#!/bin/bash + +#SBATCH --ntasks=1 +#SBATCH --mem=1MB +#SBATCH --time=0-00:01:00 +#SBATCH --mail-user=jmar0066@student.monash.edu +#SBATCH --mail-type=BEGIN,END,FAIL + +echo "Hello World" +``` \ No newline at end of file From f488a2d095c5d0342d4c4bcbb95e0029c9e6e7e5 Mon Sep 17 00:00:00 2001 From: jasparm Date: Fri, 24 Mar 2023 18:21:47 +1100 Subject: [PATCH 03/10] finished access m3 page --- src/chapter1/images/aaf.png | Bin 0 -> 37224 bytes src/chapter1/images/gurobi.png | Bin 0 -> 46920 bytes src/chapter1/images/gurobi2.png | Bin 0 -> 9973 bytes src/chapter1/images/hpcid.png | Bin 0 -> 50895 bytes src/chapter1/images/join_project.png | Bin 0 -> 17192 bytes src/chapter1/m3.md | 26 +++++++++++++++++++++++++- src/chapter3/chapter3.md | 6 ++++++ src/chapter3/linux-cmds.md | 4 +--- 8 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 src/chapter1/images/aaf.png create mode 100644 src/chapter1/images/gurobi.png create mode 100644 src/chapter1/images/gurobi2.png create mode 100644 src/chapter1/images/hpcid.png create mode 100644 src/chapter1/images/join_project.png diff --git a/src/chapter1/images/aaf.png b/src/chapter1/images/aaf.png new file mode 100644 index 0000000000000000000000000000000000000000..b68eaa89613cafabbdd45616353cbbd4d79b1773 GIT binary patch literal 37224 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 E1qw@F<^TWy literal 0 HcmV?d00001 diff --git a/src/chapter1/images/gurobi2.png b/src/chapter1/images/gurobi2.png new file mode 100644 index 0000000000000000000000000000000000000000..3e5c4de5d497b6d949e152ee6c1ab1c5036f6a37 GIT binary patch literal 9973 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 SrpAMHuBxQ@5OLok^nU^TvxbWR literal 0 HcmV?d00001 diff --git a/src/chapter1/images/join_project.png b/src/chapter1/images/join_project.png new file mode 100644 index 0000000000000000000000000000000000000000..070d05574e5020b090d7ba97faa071a7ee8b5e7d GIT binary patch literal 17192 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 | move or rename file or directory | - ## Cluster Specific Commands | Command | Function | Flags @@ -31,7 +30,6 @@ If you are already familiar with linux, feel free to skip this one. If you aren' | `scontrol show job ` | prints information about a specific job | | `scancel ` | cancel a job | - ## M3 Specific Commands | Command | Function | From 4a146b2400ea438d554cc89d0899774c78441530 Mon Sep 17 00:00:00 2001 From: jasparm Date: Fri, 24 Mar 2023 19:07:20 +1100 Subject: [PATCH 04/10] changed compiling to software and tooling --- src/SUMMARY.md | 2 +- src/chapter3/compiling.md | 1 - src/chapter3/shared-fs.md | 2 -- src/chapter3/software-tooling.md | 9 +++++++++ 4 files changed, 10 insertions(+), 4 deletions(-) delete mode 100644 src/chapter3/compiling.md create mode 100644 src/chapter3/software-tooling.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index ead2775..3915e2a 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -28,7 +28,7 @@ - [M3](./chapter3/chapter3.md) - [Logging In](./chapter3/login.md) - [Linux Commands](./chapter3/linux-cmds.md) - - [Compiling](./chapter3/compiling.md) + - [Software and Tooling](./chapter3/software-tooling.md) - [M3's Shared Filesystem](./chapter3/shared-fs.md) - [Bash Scripts](./chapter3/bash.md) - [Job batching & SLURM](./chapter3/slurm.md) diff --git a/src/chapter3/compiling.md b/src/chapter3/compiling.md deleted file mode 100644 index 6d6a98c..0000000 --- a/src/chapter3/compiling.md +++ /dev/null @@ -1 +0,0 @@ -# Compiling diff --git a/src/chapter3/shared-fs.md b/src/chapter3/shared-fs.md index e5904d2..79c25e8 100644 --- a/src/chapter3/shared-fs.md +++ b/src/chapter3/shared-fs.md @@ -21,8 +21,6 @@ This is also shared with all users in MDN, and has more allocation (~3TB). You m - In general, it is good practice to make a directory in the shared directory for yourself. Name this your username or name, to make it easily identifiable. This is where you should store your files for small projects or personal use. - The project directory is not for personal use. Do not store files in the project directory that are not related to MDN. Use the scratch directory instead. ---- - ## Copying files to and from M3 ### Using scp diff --git a/src/chapter3/software-tooling.md b/src/chapter3/software-tooling.md new file mode 100644 index 0000000..41adb90 --- /dev/null +++ b/src/chapter3/software-tooling.md @@ -0,0 +1,9 @@ +# Software and Tooling + +Software and development tooling is handled a little differently on M3 than you might be used to because of its unique file system. In particular, because M3 is a shared file system, you do not have access to `sudo`, and you cannot install software on the system manually. Instead, you will need to use the `module` command to load software and development tools. + +## Module + +## C / C++ + +## Python \ No newline at end of file From eeb92925971b5029a8c47f410bdd9ff1ffbf0b8a Mon Sep 17 00:00:00 2001 From: jasparm Date: Mon, 10 Apr 2023 13:20:10 +1000 Subject: [PATCH 05/10] finished everything except challenges --- src/chapter3/bash.md | 39 ++++++++ src/chapter3/challenges.md | 12 +++ .../{ => images}/putty_key_not_cached.png | Bin src/chapter3/{ => images}/putty_start.png | Bin src/chapter3/login.md | 6 +- src/chapter3/slurm.md | 57 +++++++++++- src/chapter3/software-tooling.md | 86 +++++++++++++++++- 7 files changed, 194 insertions(+), 6 deletions(-) rename src/chapter3/{ => images}/putty_key_not_cached.png (100%) rename src/chapter3/{ => images}/putty_start.png (100%) diff --git a/src/chapter3/bash.md b/src/chapter3/bash.md index 6700959..ab4254d 100644 --- a/src/chapter3/bash.md +++ b/src/chapter3/bash.md @@ -1 +1,40 @@ # Bash Scripts + +Bash is both a command line interface and a scripting language. Bash scripts are a series of commands that are executed in order. Bash scripts are useful for automating tasks that you do often, or for running a series of commands that you don't want to type out every time. In our case, Bash scripts are used for running jobs on M3. + +The basic syntax of a bash file is as follows: + +```bash +#!/bin/bash + +# This is a comment + +echo "Hello World" +``` + +We can save this file as `hello.sh` and run it using the following command: `source hello.sh`. This will print `Hello World` to the terminal. + +Let's walk through the file. The first line is `#!/bin/bash`. This is called a shebang, and it tells the system that this file is a bash script. The second line is a comment, and is ignored by the system. The third line is the actual command that we want to run. In this case, we are using the `echo` command to print `Hello World` to the terminal. + +Bash can do a lot more, including basic arithmetic, if statements, loops, and functions, however these are not really necesary for what we are doing. If you want to learn more about bash, you can find a good tutorial [here](https://linuxconfig.org/bash-scripting-tutorial). + +For our use, the main things we need to be able to do are to run executables and files. We do this the exact same way as if manually running them in the terminal. For example, if we want to run a python script, we can do the following: + +```bash +#!/bin/bash + +# This will run hello.py using the python3 executable +python3 hello.py +``` + +If we want to compile and then run a C program, we can do the following: + +```bash +#!/bin/bash + +# This will compile hello.c and then run it +gcc hello.c -o hello +./hello +``` + +Using bash scripts not only saves a lot of time and effort, but it also makes it easier to run jobs on M3 using SLURM. We will go over how to do this in the next section. diff --git a/src/chapter3/challenges.md b/src/chapter3/challenges.md index 9358534..b106cf4 100644 --- a/src/chapter3/challenges.md +++ b/src/chapter3/challenges.md @@ -1 +1,13 @@ # Challenges + +## Challenge 1 + +Something simple to start off. Create a bash script called `hello.sh` that prints "Hello World" to the screen. Submit this job to the queue using `sbatch`. Check the status of the job using `squeue`. Once the job has finished, check the output using `cat`. You can find the output file in the directory you submitted the job from. + +## Challenge 2 + +Something a bit more involved. Create a submission script that will install python 3.10 using anaconda, create a virtual environment, install the necessary dependencies, and clone and run [this]() script. + +## Challenge 3 + +A continuation of challenge 2. Edit your submission script so that you get a gpu node, and run the script using the gpu. diff --git a/src/chapter3/putty_key_not_cached.png b/src/chapter3/images/putty_key_not_cached.png similarity index 100% rename from src/chapter3/putty_key_not_cached.png rename to src/chapter3/images/putty_key_not_cached.png diff --git a/src/chapter3/putty_start.png b/src/chapter3/images/putty_start.png similarity index 100% rename from src/chapter3/putty_start.png rename to src/chapter3/images/putty_start.png diff --git a/src/chapter3/login.md b/src/chapter3/login.md index c40b097..44c0ca9 100644 --- a/src/chapter3/login.md +++ b/src/chapter3/login.md @@ -8,13 +8,13 @@ If you are using windows, the best way to ssh into m3 is by using [puTTY](https: Once installed and opened, you will see a page like this: -![puTTY config page](putty_start.png) +![puTTY config page](./images/putty_start.png) Type in your m3 username followed by `@m3.massive.org.au` and press enter or the Open button. -If it the first time accessing M3 from this client then you may see something like this: +If it the first time accessing M3 from this client then you may see something like this: -![puTTY auth page](putty_key_not_cached.png) +![puTTY auth page](./images/putty_key_not_cached.png) Just click Accept, and puTTY will add the cluster's ssh fingerprint to cache. diff --git a/src/chapter3/slurm.md b/src/chapter3/slurm.md index 708b3e7..cd1d5ff 100644 --- a/src/chapter3/slurm.md +++ b/src/chapter3/slurm.md @@ -1,13 +1,68 @@ # Job batching & SLURM +Launching and running jobs on M3 is controlled by [SLURM](https://slurm.schedmd.com/). You don't really need to know a lot about it in order to use it, so this section will take you through the basics of what you will need for what we are doing. + +If you want a complete guide on SLURM in M3, you can find it [here](https://docs.massive.org.au/M3/slurm/slurm-overview.html). + +## Submitting simple jobs + +As we discussed in the previous section we use bash scripts to run jobs on M3. We can submit these jobs using the `sbatch` command. For example, if we have a bash script called `hello.sh` that contains the following: + ```bash #!/bin/bash #SBATCH --ntasks=1 #SBATCH --mem=1MB #SBATCH --time=0-00:01:00 +#SBATCH --job-name=hello +#SBATCH --partition=m3i #SBATCH --mail-user=jmar0066@student.monash.edu #SBATCH --mail-type=BEGIN,END,FAIL echo "Hello World" -``` \ No newline at end of file +``` + +We can submit this job using the following command: + +`sbatch hello.sh` + +This will submit the job to the queue, and you will get an email when the job starts, finishes, or fails. You can also check the status of your job using the `squeue` command. + +## Options + +You might have noticed the `#SBATCH` lines in the bash script. These are called options, and they tell SLURM how to run the job. The options we used in the example above are: + +- `ntasks`: The number of tasks or processes to run. +- `mem`: The amount of memory to allocate to the job. +- `time`: The maximum amount of time the job can run for. +- `job-name`: The name of the job. Up to 15 characters. +- `partition`: The partition to run the job on. +- `mail-user`: The email address to send job status emails to. +- `mail-type`: The types of emails to send. + +There are a lot more options that you can use, and you can find a more complete list [here](https://docs.massive.org.au/M3/slurm/simple-batch-jobs.html). + +In particular, if you want to run multithreading or multiprocessing jobs, or you need a gpu, there are more options you need to configure. + +## Interactive jobs + +Sometimes you might want to actually connect to the node that you are running your job on, in order to see what is happening or to set it up before running the job. You can do this using the `smux` command. Similar to regular batch jobs, you can set options when you start the interactive session. An example of this is: + +`smux new-session --ntasks=1 --time=0-00:01:00 --partition=m3i --mem=4GB` + +This will start an interactive session on a node with 1 cpu, 1 minute of time, and 4GB of memory. There are again other options available, and you can find a more complete explanation [here](https://docs.massive.org.au/M3/slurm/interactive-jobs.html). + +### Connecting to interactive jobs + +Typically when you start an interactive job it will not start immediately. Instead, it will be queued up once it has started you will need to connect to it. You can do this by running `smux a`, which will reconnect you to the session. If you want to disconnect from the session but leave it running, you can press `Ctrl + b` followed by `d`. This will disconnect you from the session, but leave it running. You can reconnect to it later using `smux a`. If you want to kill the session, if you are connected just run `exit`, otherwise if you are in a login node run `scancel `. You can find the job id using `show_job`. + +## Checking the status of jobs, finding out job IDs, and killing jobs + +A couple of useful commands for general housekeeping are: + +- `squeue`: This will show you the status of all jobs currently running on M3. +- `show_job`: This will show you the status of all jobs you have submitted. +- `squeue -u `: This will show you the status of all jobs submitted by a particular user currently running. +- `scancel `: This will kill a job with a particular job id. +- `scancel -u `: This will kill all jobs submitted by a particular user. +- `show_cluster`: This will show you the status of the cluster, including any nodes that are offline or in maintenance. diff --git a/src/chapter3/software-tooling.md b/src/chapter3/software-tooling.md index 41adb90..9492116 100644 --- a/src/chapter3/software-tooling.md +++ b/src/chapter3/software-tooling.md @@ -1,9 +1,91 @@ # Software and Tooling -Software and development tooling is handled a little differently on M3 than you might be used to because of its unique file system. In particular, because M3 is a shared file system, you do not have access to `sudo`, and you cannot install software on the system manually. Instead, you will need to use the `module` command to load software and development tools. +Software and development tooling is handled a little differently on M3 than you might be used to. In particular, because M3 is a shared file system, you do not have access to `sudo`, and you cannot install software on the system manually. Instead, you will need to use the `module` command to load software and development tools. ## Module +The `module` command is used kind of as an alternative to package managers like `apt` or `yum`, except it is managed by the M3 team. It allows you to load software and development tools into your environment, and is used to load software on M3. To see a comprehensive list of commands go [here](./linux-cmds.md#m3-specific-commands). + +In general, however, you will only really need to use `module load` and `module unload`. These commands are used to load and unload software and development tools into your environment. + +For most of the more popular software packages, like gcc, there are multiple different versions available. You will need to specify which version you want to load based on your needs. + ## C / C++ -## Python \ No newline at end of file +### GCC + +GCC is the GNU Compiler Collection, and is the most popular C/C++ compiler. It is available in multiple different versions on M3, and you can load them using the `module` command. For example, to load GCC 10.2.0, you would run the following command: + +```bash +module load gcc/10.2.0 +``` + +This will load GCC 10.2.0 into your environment, and you can use it to compile C/C++ programs as described in the [Intro to C](../chapter2/intro-to-c.md) chapter. To unload GCC, you can run the following command: + +```bash +module unload gcc/10.2.0 +``` + +## Python + +Python is a bit of a special case on M3. This is because of how many different versions there are, as well as how many different packages are available. To make things easier, it is recommended that you use miniconda or anaconda to manage your python environments instead of using the system python. + +These instructions are based off the M3 docs, which can be found [here](https://docs.massive.org.au/M3/software/pythonandconda/pythonandconda.html#pythonandconda). + +### Miniconda + +#### Installing Miniconda + +To install Miniconda on M3, there is a dedicated install script that you can use. This will install miniconda into your default scratch space, i.e. `/vf38_scratch//miniconda3`. To install miniconda, run the following command: + +```bash +module load conda-install + +# To install miniconda to the default location +conda-install + +# To install miniconda to a custom location +conda-install your/install/location +``` + +#### Activating Miniconda + +To activate the base conda environment, run the following command: + +```bash +source your/install/location/miniconda/bin/activate +``` + +You will notice that once activated, `(base)` will appear in the prompt before your username. + +To create and activate Python environments within Miniconda, follow these steps: + +```bash +# Create a new environment +# Change env-name to whatever you want to call your environment +conda create --name env-name python=3.10 + +# Activate the environment +conda activate env-name +``` + +#### Managing Python packages + +Use the following commands to install and manage Python packages: + +```bash +# Install a package +conda install package-name + +# Update a package +conda update package-name + +# You can also change the version of packages by adding a = and the version number + +# Remove a package +conda remove package-name +``` + +#### Deactivating Miniconda + +To deactivate the conda environment you are in, run `conda deactivate`. To exit conda entirely run `conda deactivate` again. You will know you have fully exited conda when `(base)` is no longer in the prompt. From ad28d4e58620edf54fffdabba081f1d7b3c763d6 Mon Sep 17 00:00:00 2001 From: jasparm Date: Mon, 10 Apr 2023 13:33:15 +1000 Subject: [PATCH 06/10] added skeleton for challenges --- src/chapter3/challenges.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chapter3/challenges.md b/src/chapter3/challenges.md index b106cf4..536e7e8 100644 --- a/src/chapter3/challenges.md +++ b/src/chapter3/challenges.md @@ -6,7 +6,7 @@ Something simple to start off. Create a bash script called `hello.sh` that print ## Challenge 2 -Something a bit more involved. Create a submission script that will install python 3.10 using anaconda, create a virtual environment, install the necessary dependencies, and clone and run [this]() script. +Something a bit more involved. Create a submission script that will install python 3.10 using anaconda, create a virtual environment, install the necessary dependencies, and clone and run [this]() script. Remember, don't directly load python using module, follow the instructions in the [software tooling](./software-tooling.md) chapter. ## Challenge 3 From 5afa10c2a116e21e5bed559a95245e6bdf8f8fcd Mon Sep 17 00:00:00 2001 From: jasparm Date: Sun, 16 Apr 2023 10:19:16 +1000 Subject: [PATCH 07/10] implemented changes requested in review --- src/SUMMARY.md | 2 +- src/cha | 1 + src/chapter3/bash.md | 4 +++- src/chapter3/challenges.md | 2 +- src/{chapter1/images => chapter3/imgs}/aaf.png | Bin src/{chapter1/images => chapter3/imgs}/gurobi.png | Bin src/{chapter1/images => chapter3/imgs}/gurobi2.png | Bin src/{chapter1/images => chapter3/imgs}/hpcid.png | Bin .../images => chapter3/imgs}/join_project.png | Bin .../{images => imgs}/putty_key_not_cached.png | Bin src/chapter3/{images => imgs}/putty_start.png | Bin src/chapter3/linux-cmds.md | 4 +++- src/chapter3/login.md | 4 ++-- src/chapter3/shared-fs.md | 2 ++ src/chapter3/slurm.md | 2 ++ src/chapter3/software-tooling.md | 4 ++-- src/{chapter1/m3.md => chapter3/start.md} | 12 ++++++------ 17 files changed, 23 insertions(+), 14 deletions(-) create mode 100644 src/cha rename src/{chapter1/images => chapter3/imgs}/aaf.png (100%) rename src/{chapter1/images => chapter3/imgs}/gurobi.png (100%) rename src/{chapter1/images => chapter3/imgs}/gurobi2.png (100%) rename src/{chapter1/images => chapter3/imgs}/hpcid.png (100%) rename src/{chapter1/images => chapter3/imgs}/join_project.png (100%) rename src/chapter3/{images => imgs}/putty_key_not_cached.png (100%) rename src/chapter3/{images => imgs}/putty_start.png (100%) rename src/{chapter1/m3.md => chapter3/start.md} (87%) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 3915e2a..0e1f52b 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -8,7 +8,6 @@ - [Linux](./chapter1/linux.md) - [WSL](./chapter1/wsl.md) - [GitHub](./chapter1/github.md) - - [M3](./chapter1/m3.md) - [Brief Introduction to C](./chapter2/intro-to-c.md) - [Hello World](./chapter2/helloworld.md) @@ -26,6 +25,7 @@ - [Challenges](./chapter2/challenges.md) - [M3](./chapter3/chapter3.md) + - [Getting Started](./chapter3/start.md) - [Logging In](./chapter3/login.md) - [Linux Commands](./chapter3/linux-cmds.md) - [Software and Tooling](./chapter3/software-tooling.md) diff --git a/src/cha b/src/cha new file mode 100644 index 0000000..bad5562 --- /dev/null +++ b/src/cha @@ -0,0 +1 @@ +# Getting Started diff --git a/src/chapter3/bash.md b/src/chapter3/bash.md index ab4254d..aada975 100644 --- a/src/chapter3/bash.md +++ b/src/chapter3/bash.md @@ -1,6 +1,8 @@ # Bash Scripts -Bash is both a command line interface and a scripting language. Bash scripts are a series of commands that are executed in order. Bash scripts are useful for automating tasks that you do often, or for running a series of commands that you don't want to type out every time. In our case, Bash scripts are used for running jobs on M3. +Bash is both a command line interface and a scripting language. Linux commands are generally using Bash. Bash scripts are a series of commands that are executed in order. Bash scripts are useful for automating tasks that you do often, or for running a series of commands that you don't want to type out every time. In our case, Bash scripts are used for running jobs on M3. + +In terms of use, Bash can encapsulate any command you would normally run in the terminal into a script that can be easily reused. For example you could have a script that automatically navigates to a directory and activates a virtual environment, or a script that compiles and runs a C program. The basic syntax of a bash file is as follows: diff --git a/src/chapter3/challenges.md b/src/chapter3/challenges.md index 536e7e8..5882fdc 100644 --- a/src/chapter3/challenges.md +++ b/src/chapter3/challenges.md @@ -6,7 +6,7 @@ Something simple to start off. Create a bash script called `hello.sh` that print ## Challenge 2 -Something a bit more involved. Create a submission script that will install python 3.10 using anaconda, create a virtual environment, install the necessary dependencies, and clone and run [this]() script. Remember, don't directly load python using module, follow the instructions in the [software tooling](./software-tooling.md) chapter. +Something a bit more involved. Create a submission script that will install python 3.10 using anaconda, create a virtual environment, install the necessary dependencies, and clone and run [this]() script. Remember, don't directly load python using module, follow the instructions in the [software tooling](./software-tooling.md#python) chapter. ## Challenge 3 diff --git a/src/chapter1/images/aaf.png b/src/chapter3/imgs/aaf.png similarity index 100% rename from src/chapter1/images/aaf.png rename to src/chapter3/imgs/aaf.png diff --git a/src/chapter1/images/gurobi.png b/src/chapter3/imgs/gurobi.png similarity index 100% rename from src/chapter1/images/gurobi.png rename to src/chapter3/imgs/gurobi.png diff --git a/src/chapter1/images/gurobi2.png b/src/chapter3/imgs/gurobi2.png similarity index 100% rename from src/chapter1/images/gurobi2.png rename to src/chapter3/imgs/gurobi2.png diff --git a/src/chapter1/images/hpcid.png b/src/chapter3/imgs/hpcid.png similarity index 100% rename from src/chapter1/images/hpcid.png rename to src/chapter3/imgs/hpcid.png diff --git a/src/chapter1/images/join_project.png b/src/chapter3/imgs/join_project.png similarity index 100% rename from src/chapter1/images/join_project.png rename to src/chapter3/imgs/join_project.png diff --git a/src/chapter3/images/putty_key_not_cached.png b/src/chapter3/imgs/putty_key_not_cached.png similarity index 100% rename from src/chapter3/images/putty_key_not_cached.png rename to src/chapter3/imgs/putty_key_not_cached.png diff --git a/src/chapter3/images/putty_start.png b/src/chapter3/imgs/putty_start.png similarity index 100% rename from src/chapter3/images/putty_start.png rename to src/chapter3/imgs/putty_start.png diff --git a/src/chapter3/linux-cmds.md b/src/chapter3/linux-cmds.md index cf245e8..9af4b3b 100644 --- a/src/chapter3/linux-cmds.md +++ b/src/chapter3/linux-cmds.md @@ -10,7 +10,7 @@ Even if you are already familiar with linux, please read through all of these co | `ls` | prints list of files / directories in current directory (add a `-a` to list everything, including hidden files/directories | | `mkdir` | makes a directory | | `rm ` | deletes *filename*. add `-r` to delete directory. add `-f` to force deletion (be really careful with that one) | -| `cd ` | move directory. put `..` to go up one directory (to the parent of your current one) | +| `cd ` | move directory. | | `vim` or `nano` | bring up a text editor | | `cat ` | prints contents of file to terminal | | `echo` | prints whatever you put after it | @@ -18,6 +18,8 @@ Even if you are already familiar with linux, please read through all of these co | `cp` | copy a file or directory| | `mv ` | move or rename file or directory | +> Note: `.` and `..` are special directories. `.` is the current directory, and `..` is the parent directory. These can be used when using any command that takes a directory as an argument. Similar to these, `~` is the home directory, and `$` is the root directory. For example, if you wanted to copy something from the parent directory to the home directory, you could do `cp ../ ~/`, without having to navigate anywhere. + ## Cluster Specific Commands | Command | Function | Flags diff --git a/src/chapter3/login.md b/src/chapter3/login.md index 44c0ca9..df7ad61 100644 --- a/src/chapter3/login.md +++ b/src/chapter3/login.md @@ -8,13 +8,13 @@ If you are using windows, the best way to ssh into m3 is by using [puTTY](https: Once installed and opened, you will see a page like this: -![puTTY config page](./images/putty_start.png) +![puTTY config page](./imgs/putty_start.png) Type in your m3 username followed by `@m3.massive.org.au` and press enter or the Open button. If it the first time accessing M3 from this client then you may see something like this: -![puTTY auth page](./images/putty_key_not_cached.png) +![puTTY auth page](./imgs/putty_key_not_cached.png) Just click Accept, and puTTY will add the cluster's ssh fingerprint to cache. diff --git a/src/chapter3/shared-fs.md b/src/chapter3/shared-fs.md index 79c25e8..0e13acc 100644 --- a/src/chapter3/shared-fs.md +++ b/src/chapter3/shared-fs.md @@ -1,5 +1,7 @@ # M3's Shared Filesystem +When we talk about a shared filesystem, what we mean is that the filesystem that M3 uses allows multiple users or systems to access, manage, and share files and directories over a network, concurrently. It enables users to collaborate on projects, share resources, and maintain a unified file structure across different machines and platforms. + M3 has a unique filesystem consisting of three main important parts (for you). ## Home Directory diff --git a/src/chapter3/slurm.md b/src/chapter3/slurm.md index cd1d5ff..d6b623d 100644 --- a/src/chapter3/slurm.md +++ b/src/chapter3/slurm.md @@ -40,6 +40,8 @@ You might have noticed the `#SBATCH` lines in the bash script. These are called - `mail-user`: The email address to send job status emails to. - `mail-type`: The types of emails to send. +> Note: In the case of M3, a task is essentially the same as a process. This is **not** the same as a cpu core. You can have a task that uses one or multiple cores. You can also have multiple tasks comprising the same job, each with one or multiple cores being utilised. It can get quite confusing, so if you are unsure about what you need, just ask. There is also more information in the M3 docs. + There are a lot more options that you can use, and you can find a more complete list [here](https://docs.massive.org.au/M3/slurm/simple-batch-jobs.html). In particular, if you want to run multithreading or multiprocessing jobs, or you need a gpu, there are more options you need to configure. diff --git a/src/chapter3/software-tooling.md b/src/chapter3/software-tooling.md index 9492116..b832d3f 100644 --- a/src/chapter3/software-tooling.md +++ b/src/chapter3/software-tooling.md @@ -10,11 +10,11 @@ In general, however, you will only really need to use `module load` and `module For most of the more popular software packages, like gcc, there are multiple different versions available. You will need to specify which version you want to load based on your needs. -## C / C++ +## C ### GCC -GCC is the GNU Compiler Collection, and is the most popular C/C++ compiler. It is available in multiple different versions on M3, and you can load them using the `module` command. For example, to load GCC 10.2.0, you would run the following command: +To load GCC, you can run the following command: ```bash module load gcc/10.2.0 diff --git a/src/chapter1/m3.md b/src/chapter3/start.md similarity index 87% rename from src/chapter1/m3.md rename to src/chapter3/start.md index 9415401..ec39953 100644 --- a/src/chapter1/m3.md +++ b/src/chapter3/start.md @@ -1,12 +1,12 @@ -# M3 +# Getting Started ## Request an account -In order to access M3, you will need to request an account. To do this, follow this link: [HPC ID](https://hpc.erc.monash.edu.au/karaage/aafbootstrap). This should take you to a page this this: ![HPC ID](./images/aaf.png) +In order to access M3, you will need to request an account. To do this, follow this link: [HPC ID](https://hpc.erc.monash.edu.au/karaage/aafbootstrap). This should take you to a page this this: ![HPC ID](./imgs/aaf.png) Type in Monash, as you can see here. Select Monash University, and tick the Remember my organisation box down the bottom. Once you continue to your organisation, it will take you to the Monash Uni SSO login page. You will need to login with your Monash credentials. -You should now see something like this: ![HPC ID System](./images/hpcid.png) +You should now see something like this: ![HPC ID System](./imgs/hpcid.png) Once you are here, there are a couple things you will need to do. The first, and most important is to set your HPC password. This is the password you will use to login to M3. To do this, go to home, then click on Change Linux Password. This will take you through the steps of setting your password. @@ -14,7 +14,7 @@ Once you have done this, you can move on to requesting access to the MDN project ## Add to project -To request to join the MDN project, again from the Home page click on Join Exiting Project. You should see a screen like this: ![Join Project](./images/join_project.png) +To request to join the MDN project, again from the Home page click on Join Exiting Project. You should see a screen like this: ![Join Project](./imgs/join_project.png) In the text box type `vf38` and click search. This is the project code for MDN. Then select the project and click submit. You will now have to wait for the project admins to approve your request. Once they have done this, you will be able to access the project. This should not take longer than a few days, and you will get an email telling you when you have access. @@ -22,9 +22,9 @@ In the text box type `vf38` and click search. This is the project code for MDN. As part of the work that we do, you will need access to [Gurobi](https://www.gurobi.com). M3 has an agreement with Gurobi, however you need to specifically request access to use it. -To do this, in HPC ID, click on Software Agreements on the left. Then Add Software. This will bring up a list of all available software on M3. Scroll down until you find gurobi, and click on it. This will bring up a page like this: ![Gurobi](./images/gurobi.png) +To do this, in HPC ID, click on Software Agreements on the left. Then Add Software. This will bring up a list of all available software on M3. Scroll down until you find gurobi, and click on it. This will bring up a page like this: ![Gurobi](./imgs/gurobi.png) -Except instead of saying accepted at the bottom it will ask you to tick a box saying that you agree to TOS ![TOS](./images/gurobi2.png) +Except instead of saying accepted at the bottom it will ask you to tick a box saying that you agree to TOS ![TOS](./imgs/gurobi2.png) Click I accept, and follow the steps. It should tell you that you will have to wait for approval to access gurobi. This should not take longer than a few days, and you will get an email telling you when you have access. From a9eb21c13ab014b13036a43571a42da6841461cf Mon Sep 17 00:00:00 2001 From: jasparm Date: Sun, 16 Apr 2023 10:23:04 +1000 Subject: [PATCH 08/10] changed order of pages --- src/SUMMARY.md | 2 +- src/cha | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 src/cha diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 0e1f52b..886d1bd 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -28,8 +28,8 @@ - [Getting Started](./chapter3/start.md) - [Logging In](./chapter3/login.md) - [Linux Commands](./chapter3/linux-cmds.md) - - [Software and Tooling](./chapter3/software-tooling.md) - [M3's Shared Filesystem](./chapter3/shared-fs.md) + - [Software and Tooling](./chapter3/software-tooling.md) - [Bash Scripts](./chapter3/bash.md) - [Job batching & SLURM](./chapter3/slurm.md) - [Challenges](./chapter3/challenges.md) diff --git a/src/cha b/src/cha deleted file mode 100644 index bad5562..0000000 --- a/src/cha +++ /dev/null @@ -1 +0,0 @@ -# Getting Started From 610e9d5c9872cc367131d97ab8d72a11602f773f Mon Sep 17 00:00:00 2001 From: jasparm Date: Sun, 16 Apr 2023 10:51:52 +1000 Subject: [PATCH 09/10] added link to script for challenge --- src/chapter3/challenges.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chapter3/challenges.md b/src/chapter3/challenges.md index 5882fdc..7233d69 100644 --- a/src/chapter3/challenges.md +++ b/src/chapter3/challenges.md @@ -6,7 +6,7 @@ Something simple to start off. Create a bash script called `hello.sh` that print ## Challenge 2 -Something a bit more involved. Create a submission script that will install python 3.10 using anaconda, create a virtual environment, install the necessary dependencies, and clone and run [this]() script. Remember, don't directly load python using module, follow the instructions in the [software tooling](./software-tooling.md#python) chapter. +Something a bit more involved. Create a submission script that will install python 3.10 using miniconda, create a virtual environment, install the necessary dependencies, and clone and run [this](https://github.com/MonashDeepNeuron/HPC-Training-Challenges/blob/main/challenges/m3/dl_on_m3/alexnet_stl10.py) script. Remember, don't directly load python using module, follow the instructions in the [software tooling](./software-tooling.md#python) chapter. ## Challenge 3 From 6c695a9d48f1be02d002cbf1217a9d74f9572968 Mon Sep 17 00:00:00 2001 From: jasparm Date: Sun, 16 Apr 2023 16:40:42 +1000 Subject: [PATCH 10/10] fixed shared fs and updated challenges --- src/chapter3/challenges.md | 4 +++- src/chapter3/linux-cmds.md | 2 +- src/chapter3/shared-fs.md | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/chapter3/challenges.md b/src/chapter3/challenges.md index 7233d69..21677c7 100644 --- a/src/chapter3/challenges.md +++ b/src/chapter3/challenges.md @@ -6,8 +6,10 @@ Something simple to start off. Create a bash script called `hello.sh` that print ## Challenge 2 -Something a bit more involved. Create a submission script that will install python 3.10 using miniconda, create a virtual environment, install the necessary dependencies, and clone and run [this](https://github.com/MonashDeepNeuron/HPC-Training-Challenges/blob/main/challenges/m3/dl_on_m3/alexnet_stl10.py) script. Remember, don't directly load python using module, follow the instructions in the [software tooling](./software-tooling.md#python) chapter. +Something a bit more involved. Clone your [challenges repository](https://github.com/MonashDeepNeuron/HPC-Training-Challenges.git) into your personal folder in the scratch directory. Then, in this same directory, create a submission script that will install python 3.10 using miniconda, create a virtual environment, install the necessary dependencies, and clone and run the `alexnet_stl10.py` script in the M3 section. Remember, don't directly load python using module, follow the instructions in the [software tooling](./software-tooling.md#python) chapter. +Once completed, commit and push your changes as well as the output. ## Challenge 3 A continuation of challenge 2. Edit your submission script so that you get a gpu node, and run the script using the gpu. +Commit and push your changes as well as the output. diff --git a/src/chapter3/linux-cmds.md b/src/chapter3/linux-cmds.md index 9af4b3b..7057ccc 100644 --- a/src/chapter3/linux-cmds.md +++ b/src/chapter3/linux-cmds.md @@ -18,7 +18,7 @@ Even if you are already familiar with linux, please read through all of these co | `cp` | copy a file or directory| | `mv ` | move or rename file or directory | -> Note: `.` and `..` are special directories. `.` is the current directory, and `..` is the parent directory. These can be used when using any command that takes a directory as an argument. Similar to these, `~` is the home directory, and `$` is the root directory. For example, if you wanted to copy something from the parent directory to the home directory, you could do `cp ../ ~/`, without having to navigate anywhere. +> Note: `.` and `..` are special directories. `.` is the current directory, and `..` is the parent directory. These can be used when using any command that takes a directory as an argument. Similar to these, `~` is the home directory, and `/` is the root directory. For example, if you wanted to copy something from the parent directory to the home directory, you could do `cp ../ ~/`, without having to navigate anywhere. ## Cluster Specific Commands diff --git a/src/chapter3/shared-fs.md b/src/chapter3/shared-fs.md index 0e13acc..aae9384 100644 --- a/src/chapter3/shared-fs.md +++ b/src/chapter3/shared-fs.md @@ -1,6 +1,8 @@ # M3's Shared Filesystem -When we talk about a shared filesystem, what we mean is that the filesystem that M3 uses allows multiple users or systems to access, manage, and share files and directories over a network, concurrently. It enables users to collaborate on projects, share resources, and maintain a unified file structure across different machines and platforms. +When we talk about a shared filesystem, what we mean is that the filesystem that M3 uses allows multiple users or systems to access, manage, and share files and directories over a network, concurrently. It enables users to collaborate on projects, share resources, and maintain a unified file structure across different machines and platforms. In addition to this, it enables the many different compute nodes in M3 to access data from a single source which users also have access to, simplifying the process of running jobs on M3. + +Very simply, the way it works is that the home, project and scratch directories are mounted on every node in the cluster, so they are accessible from any node. M3 has a unique filesystem consisting of three main important parts (for you).