Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
c9a7661
made the m3 login page and put in some linux commands
jasparm Mar 18, 2023
cd3f497
Added acknowledgement to authors and contributors
oraqlle Mar 19, 2023
32a516a
Chapter 1 landing page
oraqlle Mar 20, 2023
e63af7e
Skeleton for device setup
oraqlle Mar 20, 2023
c4a1978
WSL setup section completed
oraqlle Mar 20, 2023
e3694d1
Added preliminary vscode instructions for all sections.
oraqlle Mar 20, 2023
bede0e3
Initial setup for Windows
oraqlle Mar 20, 2023
dda4eac
Mac setup instructions
oraqlle Mar 21, 2023
fda759d
Updated GitHub section
oraqlle Mar 21, 2023
df4a8c5
Clarification for GitHub setup
oraqlle Mar 21, 2023
0d92f65
Reworded sentence in Getting Started chapter preface.
oraqlle Mar 21, 2023
e12b7c9
Updated contributors part of README.md
oraqlle Mar 21, 2023
965576a
Removed M3 from the 'Getting Started' chapter
oraqlle Mar 21, 2023
86d911d
Adjusted the mac setup section to be more accurate
oraqlle Mar 21, 2023
2b6251f
Renamed chapter 1 chapter file to 'getting-started'
oraqlle Mar 21, 2023
10997de
Intro to C page done
oraqlle Mar 21, 2023
f50a792
Added family tree images to intro to C section
oraqlle Mar 21, 2023
2566d13
Added image sources
oraqlle Mar 21, 2023
e99af26
Added Hello World section to C chapter
oraqlle Mar 22, 2023
ff9a4aa
Added fundamental data types topic to types and variables section
oraqlle Mar 22, 2023
4e5d9ae
Added printing section to C chapter (no content)
oraqlle Mar 23, 2023
0284bfe
wrote most of shared fs and added linux cmds
jasparm Mar 23, 2023
f488a2d
finished access m3 page
jasparm Mar 24, 2023
4a146b2
changed compiling to software and tooling
jasparm Mar 24, 2023
13e9abe
Added enumerators to types section
oraqlle Mar 26, 2023
375e8eb
Started printing section
oraqlle Mar 26, 2023
00a670d
Added not on char literal syntax to types section.
oraqlle Mar 27, 2023
16b8e2e
Added summary on how challenges work
oraqlle Mar 27, 2023
5eeabb3
Merge pull request #11 from MonashDeepNeuron/chapter/setup
oraqlle Mar 27, 2023
941257f
Added strings and arrays section.
oraqlle Mar 27, 2023
e234282
Basic layout for remaining C section
oraqlle Mar 27, 2023
fc81a64
Added the control flow section
oraqlle Mar 27, 2023
93319e7
Clarified array initialisation.
oraqlle Mar 28, 2023
8f2152c
Completed the function section
oraqlle Mar 28, 2023
d700831
Fixed MathJax notation.
oraqlle Mar 29, 2023
048d6af
Added array and string to pointers part to pointers and memory section
oraqlle Mar 29, 2023
d17ce6d
Separated pointers and memory into their own section
oraqlle Mar 29, 2023
a8abb52
Completed the dynamic memory section
oraqlle Mar 30, 2023
44fcdfc
Finished the structure section
oraqlle Mar 30, 2023
5c2dfea
Completed macros section.
oraqlle Mar 30, 2023
5c3564f
Removed the standard library section
oraqlle Mar 30, 2023
cec5814
Added type casting part to types and variables section
oraqlle Mar 30, 2023
d4b45fd
Added note to structure section
oraqlle Mar 30, 2023
f89700b
Added challenges to the C chapter
oraqlle Mar 31, 2023
b1537c7
markdown formatting fix
oraqlle Mar 31, 2023
7070ffb
Added note to read challenges repo README
oraqlle Mar 31, 2023
eeb9292
finished everything except challenges
jasparm Apr 10, 2023
ad28d4e
added skeleton for challenges
jasparm Apr 10, 2023
aac2491
added refresher on parallelism slides
Apr 14, 2023
0e510ed
added subheadings
Apr 14, 2023
f7dcc3d
added distributed computing introduction
Apr 14, 2023
e646fd4
Added openMPI section
Apr 14, 2023
3610239
Added message passing section
Apr 14, 2023
f56b4c6
Added challenges
Apr 14, 2023
58f7892
Added outline
Apr 14, 2023
7120b06
fixed broken navigation links
Apr 15, 2023
c972aa6
updated order of content
Apr 15, 2023
5afa10c
implemented changes requested in review
jasparm Apr 16, 2023
a9eb21c
changed order of pages
jasparm Apr 16, 2023
c5cf0b8
Merge branch 'dev' into chapter/m3
jasparm Apr 16, 2023
610e9d5
added link to script for challenge
jasparm Apr 16, 2023
8675fca
Merge pull request #14 from MonashDeepNeuron/chapter/c-intro
oraqlle Apr 16, 2023
a1ba767
updated relevant bits based on pr feedback
Apr 16, 2023
fd77aca
Formatting
oraqlle Apr 16, 2023
13da6b1
Warning in challenges
oraqlle Apr 16, 2023
b05ec49
Merge pull request #16 from MonashDeepNeuron/chapter/distributed-comp…
oraqlle Apr 16, 2023
a6f7f4f
Updated acknowledgement links
oraqlle Apr 16, 2023
6c695a9
fixed shared fs and updated challenges
jasparm Apr 16, 2023
97c5e98
fixed inconsistencies in formatting and some spelling issues
jasparm Apr 16, 2023
edac7a6
Merge pull request #15 from MonashDeepNeuron/chapter/m3
oraqlle Apr 16, 2023
46e1072
Added description of parallel computing chapter.
oraqlle Apr 16, 2023
8be06b1
manual-20230416-184253
isoyuki Apr 16, 2023
e859708
Merge pull request #20 from MonashDeepNeuron/chapter/parallel-computing
oraqlle Apr 16, 2023
eaee053
Update description of pragma
isoyuki Apr 16, 2023
6118e50
Merge branch 'main' into dev
oraqlle Apr 16, 2023
b404480
Merge branch 'dev' into chapter/parallel-computing
isoyuki Apr 16, 2023
8b26100
merge
isoyuki Apr 16, 2023
cb802e6
Add back deleted contents
isoyuki Apr 16, 2023
cfa8d88
Fixed ellipsis
oraqlle Apr 16, 2023
0daf1a0
Merge pull request #21 from MonashDeepNeuron/chapter/parallel-computing
oraqlle Apr 16, 2023
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
23 changes: 12 additions & 11 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,47 +2,48 @@

[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)
- [Header & Source Files](./chapter2/files.md)
- [Compilers & Linkers](./chapter2/compiler.md)
- [Compilation](./chapter2/compilation.md)
- [Types & Variables](./chapter2/vars.md)
- [Printing](./chapter2/printing.md)
- [Arrays & Strings](./chapter2/array.md)
- [Control Flow](./chapter2/ctrl-flow.md)
- [Loops](./chapter2/loops.md)
- [Functions](./chapter2/functions.md)
- [Arrays & Strings](./chapter2/array.md)
- [Pointers & Memory](./chapter2/memory.md)
- [Pointers](./chapter2/pointers.md)
- [Dynamic Memory](./chapter2/memory.md)
- [Structures](./chapter2/structs.md)
- [Macros & The Preprocessor](./chapter2/macros.md)
- [The Standard Library](./chapter2/stdlib.md)
- [Challenges](./chapter2/challenges.md)

- [M3](./chapter3/chapter3.md)
- [Getting Started](./chapter3/start.md)
- [Logging In](./chapter3/login.md)
- [Linux Commands](./chapter3/linux-cmds.md)
- [Compiling](./chapter3/compiling.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)

- [Parallel Computing](./chapter4/chapter4.md)
- [What is Parallel Computing?](./chapter4/parallel-computing.md)
- [Shared Memory Resources](./chapter4/shared-memory.md)
- [Multithreading](./chapter4/multithreading.md)
- [OpenMP](./chapter4/openmp.md)
- [Challenges](./chapter4/challenges.md)

- [Distributed Computing](./chapter5/chapter5.md)
- [What is Distributed Computing](./chapter5/distrubuted-computing.md)
- [Refresher on Parallelism](./chapter5/parallel-refresher.md)
- [What is Distributed Computing](./chapter5/distributed-computing.md)
- [Message Passing](./chapter5/message-passing.md)
- [OpenMPI](./chapter5/openmpi.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/Ozzywap)
- [Yuki Kume](https://github.com/UnciaBit)
- [Jaspar Martin](https://github.com/jasparm)

## Contributors

- [Mitchell Mibus](https://github.com/mmib0001)
- [Ankita Gosavi](https://github.com/ankitaagosavi)
35 changes: 35 additions & 0 deletions src/chapter1/challenges.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# 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 go 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
```

> **Note:** Look at the README.md of the repo for the for more instructions.

## 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.
Loading