diff --git a/README.md b/README.md index b84b877..b6d7e8d 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/src/SUMMARY.md b/src/SUMMARY.md index ead2775..8977551 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -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) diff --git a/src/acknowledgements.md b/src/acknowledgements.md index de67a3a..f9e95f7 100644 --- a/src/acknowledgements.md +++ b/src/acknowledgements.md @@ -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) diff --git a/src/chapter1/challenges.md b/src/chapter1/challenges.md new file mode 100644 index 0000000..7299469 --- /dev/null +++ b/src/chapter1/challenges.md @@ -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 +code +``` + +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. + + diff --git a/src/chapter1/chapter1.md b/src/chapter1/chapter1.md deleted file mode 100644 index bad5562..0000000 --- a/src/chapter1/chapter1.md +++ /dev/null @@ -1 +0,0 @@ -# Getting Started diff --git a/src/chapter1/getting-started.md b/src/chapter1/getting-started.md new file mode 100644 index 0000000..c956017 --- /dev/null +++ b/src/chapter1/getting-started.md @@ -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. diff --git a/src/chapter1/github.md b/src/chapter1/github.md index c27f953..73536d3 100644 --- a/src/chapter1/github.md +++ b/src/chapter1/github.md @@ -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. diff --git a/src/chapter1/linux.md b/src/chapter1/linux.md index fc7d8aa..7d96946 100644 --- a/src/chapter1/linux.md +++ b/src/chapter1/linux.md @@ -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 "" +git config --global user.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. diff --git a/src/chapter1/m3.md b/src/chapter1/m3.md deleted file mode 100644 index 3152926..0000000 --- a/src/chapter1/m3.md +++ /dev/null @@ -1 +0,0 @@ -# M3 diff --git a/src/chapter1/mac.md b/src/chapter1/mac.md index 3f37b3a..40f17b4 100644 --- a/src/chapter1/mac.md +++ b/src/chapter1/mac.md @@ -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. diff --git a/src/chapter1/taskmanager.png b/src/chapter1/taskmanager.png new file mode 100644 index 0000000..4e70467 Binary files /dev/null and b/src/chapter1/taskmanager.png differ diff --git a/src/chapter1/windows.md b/src/chapter1/windows.md index 3e7d02a..10a27a9 100644 --- a/src/chapter1/windows.md +++ b/src/chapter1/windows.md @@ -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 "" +git config --global user.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. diff --git a/src/chapter1/wsl.md b/src/chapter1/wsl.md index c161cd4..58969aa 100644 --- a/src/chapter1/wsl.md +++ b/src/chapter1/wsl.md @@ -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 "" +git config --global user.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. diff --git a/src/home.md b/src/home.md index 573707c..7111a29 100644 --- a/src/home.md +++ b/src/home.md @@ -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 S. 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. + +---