Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,11 @@ $ mdbook serve --open

- Tyler Swann
- Ankita Gosavi
- Nikhil Kannachel
- Mitchell Mibus
- Nikhil Kannachel
- Jaspar Martin
- Yuki Kume
- Osman Haji

## Code of Conduct, License & Contributing

Expand Down
6 changes: 3 additions & 3 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

[Welcome](home.md)

- [Getting Started](./chapter1/chapter1.md)
- [Getting Started](./chapter1/getting-started.md)
- [GitHub](./chapter1/github.md)
- [Windows](./chapter1/windows.md)
- [Mac](./chapter1/mac.md)
- [Linux](./chapter1/linux.md)
- [WSL](./chapter1/wsl.md)
- [GitHub](./chapter1/github.md)
- [M3](./chapter1/m3.md)
- [Challenges](./chapter1/challenges.md)

- [Brief Introduction to C](./chapter2/intro-to-c.md)
- [Hello World](./chapter2/helloworld.md)
Expand Down
14 changes: 14 additions & 0 deletions src/acknowledgements.md
Original file line number Diff line number Diff line change
@@ -1 +1,15 @@
# Acknowledgements

This book is part of Monash DeepNeurons collection information and training resources. It is built and maintained internally by members of Monash DeepNeuron.

## Authors

- [Tyler Swann](https://github.com/oraqlle)
- [Osman Haji](https://github.com)
- [Yuki Kume](https://github.com)
- [Jasper Martin](https://github.com)

## Contributors

- [Mitchell Mibus](https://github.com)
- [Ankita Gosavi](https://github.com)
33 changes: 33 additions & 0 deletions src/chapter1/challenges.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Challenges

As you progress through each chapter you will be given a small set of challenges to complete. In order to complete the challenges there is a complementary GitHub template repository found on the Monash DeepNeuron GitHub organisation called [HPC Training Challenges](https://github.com/MonashDeepNeuron/HPC-Training-Challenges). As a template you are able to create your own copy of the repository and complete the challenges completely independent of the other recruits.

## Setting Up Challenges Repository

To get setup:

- Click the link above to got to the repository on GitHub.
- Click 'Use this template' button (green) and select 'Create a new repository'.
- Give it a name and make sure it is private.
- Click 'Create repository from template'.
- This will open the page for the repository. Click the '<> Code' button (green), make sure you are in the HTTPS tab and copy the link.
- Open a terminal in your dev directory.
- Run:

```sh
git clone <repo-link>
code <repo-name>
```

And thats it, you can now edit any of the files and complete the challenges. When you want to save your changes to GitHub simply add them and push to them to GitHub.

```sh
git add . # Add any untracked or modified files
git push origin # Push to GitHub
```

## Challenges Repository

The challenges repository is broken down into different directories for each chapter. For each chapter their will be a series of additional directories corresponding to the specific challenge. These will contain any and all the resources needed for the challenge except programs that you are required to complete.

<!-- For some of the challenges, GitHub will have some automatic tests that run when you push your changes back up to GitHub. -->
1 change: 0 additions & 1 deletion src/chapter1/chapter1.md

This file was deleted.

3 changes: 3 additions & 0 deletions src/chapter1/getting-started.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Getting Started

In this chapter you'll setup some essential software tools that you will be using throughout your training. Note that some sections are specific to particular platform and devices. Only complete the section that is specific to your platform. The GitHub section you must complete no matter which platform you are on.
22 changes: 22 additions & 0 deletions src/chapter1/github.md
Original file line number Diff line number Diff line change
@@ -1 +1,23 @@
# GitHub

## Git. What is it?

Git is a Source Control Management tool (SCM). It keeps a history of multiple files and directories in a bundle called a repository. Git tracks changes using save points called commits. Commits use `.diff` files to track the difference in files between commits. Repositories can have multiple branches allow many different developers to create new changes and fixes to a codebase that are separate from each other. You can also switch between branches to work on many different changes at once. These branches can then later be merged back together to a `main` branch, integrating the various changes.

## What is GitHub?

GitHub is a remote Git service. This allows you to store Git repositories online so that individuals and teams can access and work on Git repositories and projects remotely. It offers many features on top of basic version control such as branch, issue and feature tracking, releases, CI/CD pipelines, project management and more. Its predominately used through its website which offers control of these features through a simple GUI. Throughout your time at Monash DeepNeuron, university and probably for the rest of your career (if in a software based role), you will use service like GitHub to help management the development of projects.

Your first task is to sign up for a GitHub account, if you haven't already. I would highly recommend using a personal email address (not a university one) as you will most likely want access to your account after university.

[GitHub - Join](https://github.com/join)

It is also a good idea to install the GitHub mobile app. This allows you track and manage projects and reply to messages and issues from your phone.

## Joining Monash DeepNeuron's GitHub Organisation

Once you have signed up for GitHub, you will need to provide your instructors with your GitHub username. This is so we can invite you as a member of the Monash DeepNeuron's organisation on GitHub. This will give you access to projects and allow you to communicate with other members. This will also allow you to gain specific privileges for your future projects at Monash DeepNeuron. You're invitation to the organisation will be sent via the email used for your account.

## Watching Repositories

GitHub allows you 'watch' repositories. This means you'll be notified of changes to the repository so that you can keep on top of is happening with various projects. You'll be using this later in your training.
55 changes: 55 additions & 0 deletions src/chapter1/linux.md
Original file line number Diff line number Diff line change
@@ -1 +1,56 @@
# Linux Setup

For your training you will need a few tools. Namely:

- Git
- C compiler toolchain (GCC)
- A text editor (VSCode)

For this section I will be assuming a Debian system, namely Ubuntu. Replace `apt` commands with your distributions relevant package manager.

## Installing Packages

To begin, you will need to install some packages. This will be done using `apt`, Ubuntu's system package manager. Run the commands in the shell.

```sh
# `sudo` represents 'super user do'.

# This runs a command with admin. privileges.
# Update apt's local package index.
sudo apt update

# The `-y` flag means upgrade yes to all.
# This bypasses confirming package upgrades.
# Upgrade packages with new versions
sudo apt upgrade -y

# Installs specified packages (separated by spaces).
sudo apt install git curl wget build-essential
```

And that's it. Linux is setup and installed.

## Connect Git & GitHub

Next we will link your GitHub account to you local Git install. Run the following commands, replacing the username and email section with your details (keeping the quotation marks).

```sh
git config --global user.name "<github-username>"
git config --global user.email "<github-email>"
```

## VSCode Installation and Setup

Now that GCC is installed and setup we will want to setup a text editor so we can easily edit and build our programs. For your training, I recommend using VSCode as it allows you to customize you developer environment to your needs. If you prefer another editor such as Vim, Emacs or Neovim, feel free to use them as you please.

First download VSCode for Linux [VSCode Download](https://code.visualstudio.com/download)

Once installed, open the app and navigate to the extensions tab (icon on the left size made of four boxes). Using the search bar, install the following extensions.

- C/C++
- GitLens
- Git Graph
- GitHub Pull Requests and Issues
- Sonarlint

And thats it, you are all setup.
1 change: 0 additions & 1 deletion src/chapter1/m3.md

This file was deleted.

44 changes: 44 additions & 0 deletions src/chapter1/mac.md
Original file line number Diff line number Diff line change
@@ -1 +1,45 @@
# Mac Setup

For your training you will need a few tools. Namely:

- Xcode
- Git
- C compiler toolchain (GCC)
- A text editor (VSCode)

## Installing Xcode, Git & GCC

First, we will need Xcode command line tool utilities, to do so, open the 'Terminal' app and run the following command:

```sh
xcode-select --install
```

This will prompt you to accept the install and will download Git and GCC onto your device. To verify installation was successful, run:

```sh
$ xcode-select -p

# Should print this
/Library/Developer/CommandLineTools
```

> ### Note
>
> Here, `$` indicates the prompt of the terminal. Do not include it in the command. This may be a different symbol on your device.

## VSCode Installation and Setup

Now that Homebrew, Xcode and GCC are installed and setup we will want to setup a text editor so we can easily edit and build our programs. For your training, I recommend using VSCode as it allows you to customize you developer environment to your needs. If you prefer another editor such as Neovim, feel free to use them as you please.

First download VSCode for Mac [VSCode Download](https://code.visualstudio.com/download)

Once installed, open the app and navigate to the extensions tab (icon on the left size made of four boxes). Using the search bar, install the following extensions.

- C/C++
- GitLens
- Git Graph
- GitHub Pull Requests and Issues
- Sonarlint

And thats it, you are all setup.
Binary file added src/chapter1/taskmanager.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
49 changes: 49 additions & 0 deletions src/chapter1/windows.md
Original file line number Diff line number Diff line change
@@ -1 +1,50 @@
# Windows Setup

For your training you will need a few tools. Namely:

- Git
- C compiler toolchain (MSVC)
- A text editor (VSCode)

## Installing Git

First, you will need to install Git. This allows you to use Git from the terminal and also gives you access to a bash shell environment. While following the install wizard, make sure to select the option that adds Git to your `PATH`. This important as it allows you to use Git in 'PowerShell'. Keep the other default operations. Git may require you to restart you machine.

[Git Download](https://git-scm.com/downloads)

### Connect GitHub

Once Git has installed, open a new 'Git Bash' that was installed. This can be found in the Windows 'Start' menu. Once it is open, run the following commands, replacing the username and email section with your details (keeping the quotation marks).

```sh
git config --global user.name "<github-username>"
git config --global user.email "<github-email>"
```

## Installing MSVC

Next we will need to install a C compiler toolchain. There a many different environments such as CygWin, MinGW but the most ideal environment is Microsoft's official development environment, MSVC. Download the Community Edition of Visual Studio and launch the installer. Under the 'Workloads' tab of the installer select the 'C++ Build Tools' bundle and click install. This may take a while. Once installed (may require restart) open the 'Start' menu and navigate to the 'Visual Studio' folder. There should a variety of different terminal environment applications. This is because Windows has slightly different toolchains and environments for x86 (32-bit) and x86_64 (64-bit). Select the 'Developer Command Prompt for VS 2022' app. In the terminal that spawns, run the command.

```cmd
cl
```

This will display the help options for `cl`, Window's C compiler.

[Download MSVC](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019)

## VSCode Installation and Setup

Now that MingW and GCC are installed and setup we will want to setup a text editor so we can easily edit and build our programs. For your training, I recommend using VSCode as it allows you to customize you developer environment to your needs. If you prefer another editor such as Neovim, feel free to use them as you please.

First download VSCode for Windows [VSCode Download](https://code.visualstudio.com/download)

Once installed, open the app and navigate to the extensions tab (icon on the left size made of four boxes). Using the search bar, install the following extensions.

- C/C++
- GitLens
- Git Graph
- GitHub Pull Requests and Issues
- Sonarlint

And thats it, you are all setup.
91 changes: 91 additions & 0 deletions src/chapter1/wsl.md
Original file line number Diff line number Diff line change
@@ -1 +1,92 @@
# WSL Setup

For your training you will need a few tools. Namely:

- Windows Terminal
- Windows Subsystem for Linux
- Installing Ubuntu
- Git
- C compiler toolchain (GCC)
- A text editor (VSCode)

This section will cover how to install WSL on Windows. If you already have a WSL setup you can skip these steps.

## Installing Windows Terminal

The first thing you will need is the new Windows Terminal app. This makes it easier to have multiple shells open, even different shells. This will be used to access your WSL instance.

[Windows Terminal Download](https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701)

> Note:
>
> Shells are an environments that allow access to the operating system (OS), hardware and other system processes through simple shell commands, usually a shell language like Bash or Powershell.

## Installing and Setting Up WSL

Before you begin make sure to update Windows to make sure you have the latest version. You will then need to check in order to see if you can install WSL is if virtualization is enabled for your device. You can check this by opening 'Task Manager', clicking on the performance tab and looking at the CPU details. There will be an option called 'Virtualization' which should say 'Enabled'.

![Task Manager Image](taskmanager.png)

Next, open Powershell with Administrative Privileges and run the following command.

```ps
wsl --install -d Ubuntu-22.04
```

Once this has finished, you may need to restart your machine. With that WSL is installed. You should be able to open a Ubuntu shell using Windows Terminal by clicking the arrow icon next to the default tab and selecting Ubuntu. On your first launch, this may require you to setup your user credentials.

## Installing Packages

To begin, you will need to install some packages. This will be done using `apt`, Ubuntu's system package manager. Run the commands in the shell.

```sh
# `sudo` represents 'super user do'.

# This runs a command with admin. privileges.
# Update apt's local package index.
sudo apt update

# The `-y` flag means upgrade yes to all.
# This bypasses confirming package upgrades.
# Upgrade packages with new versions
sudo apt upgrade -y

# Installs specified packages (separated by spaces).
sudo apt install git curl wget ca-certificates build-essential
```

And that's it. WSL is setup and installed.

## Connect Git & GitHub

Next we will link your GitHub account to you local Git install. Run the following commands, replacing the username and email section with your details (keeping the quotation marks).

```sh
git config --global user.name "<github-username>"
git config --global user.email "<github-email>"
```

## VSCode Installation and Setup

Now that WSL, Ubuntu and Git are installed and setup we will want to setup a text editor so we can easily edit and build our programs. For usage with WSL ans your training in general I recommend using VSCode as it allows you to customize you developer environment to your needs. It also can access the WSL filesystem allowing you to work on projects in a native Linux environment on Windows. If you prefer another editor such as Vim, Emacs or Neovim, feel free to use them as you please.

First download VSCode for Windows [VSCode Download](https://code.visualstudio.com/download)

Once installed, open the app (on the Windows side) and navigate to the extensions tab (icon on the left size made of four boxes). Using the search bar, install the following extensions.

- C/C++
- GitLens
- Git Graph
- GitHub Pull Requests and Issues
- Sonarlint
- Remote development
- WSL
- Remote SSH

You can then navigate to the window with the Ubuntu shell from before and run:

```sh
code .
```

This will installed VSCode on the WSL from your Windows version and open it in the home directory. And thats it, you are all setup.
28 changes: 27 additions & 1 deletion src/home.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,33 @@ Welcome and congratulations on joining the HPC team. This is the HPC Training Bo

## What is HPC?

~
HPC stands for high performance computing. In involves using extremely powerful machines to perform complex tasks. It combines aspects of network management, parallel computing techniques and distributed computers to solve highly complex problems. The main focus of HPC is to build and use computer clusters; collections or grids of powerful computers that can communicate information between each other, to solve advanced computational problems that involve a lot of data or process power and time.

## HPC at Monash DeepNeuron

The HPC branch at Monash DeepNeuron works on many different projects. Everything from creating mini clusters, to using supercomputer clusters to simulate complex, real world systems for research and technology development in may different scientific disciplines. Within the HPC branch you will learn a lot about HPC development starting with the foundational concepts and ideas involved in HPC to working on various projects that implement and utilise these techniques in order to solve many different complex problems.

## HPC Training

### What is all this and what is it for?

This is a book. More specifically it is the book containing all the content, training resources and learning materials that you will be using to complete you HPC training. The purpose of this book is to provide clear and concise learning resources that you can utilise effectively; not just in your HPC training, but for the entirety of your time at Monash DeepNeuron.

### What are you going to learn?

During your HPC training, you are going to learn all about HPC concepts and various tools that exist that allow us to perform HPC development. You will start with the setup process which involves downloading some tools you will be using throughout your training as well as creating a GitHub account. You will then learn about the C programming language and to effectively use it to create powerful and fast computer programs. You will then gain access to M3; Monash's cluster environment, where you will learn hwo to distribute jobs across one or many different computers. You'll also learn about concepts involved in parallel and distributed computing and development programs using these techniques to improve the speed of software applications.

Along the way you will learn how to effectively use developer tools like Git and GitHub as well as solving various challenges each week to test and practice what you have learnt in each chapter.

### How to use this book

Using the book is pretty self explanatory. The content is split up into chapters which covers a particular topic which can be further broken down sections. You navigate through the book mostly chronologically using the arrow buttons on either side of the page (can't miss them). You can also look through the chapters and sections to find particular topics or using the search bar, which can be activated by pressing <kbd>S</kbd>. Each chapter has a challenges section. These contain various tasks to complete related to the content of each chapter.

### Contributing

You can contribute to the book by accessing its GitHub repository (GitHub log in the top right hand corner of any page). Follow the contributing guidelines on the repository for more details.

---

<div style="font-size: 0.75em;">
<center>
Expand Down