Techniques and Tools to Start with HPC
ORNL Badged and Interns Only Event
Description
This hands-on event is designed to introduce users with little or no High Performance Computing (HPC) experience to the core concepts and tools necessary to be productive on a Linux environment.
Topics
- GNU/Linux Commands
- GIT Control Version
- Parallelism and OpenMP
- Python Programming
- Containers
- Deep Learning
Who Should Attend
In this workshop, we will conduct introductory sessions on several tools and technologies that are required to begin doing HPC. This workshop is a good starting point for those who want to do HPC for their work. This workshop is intended for those with modest command line experience and are new to using Linux commands to manage files, parallelism, python programming, containers such as docker and version control system, such as GIT.
[tw-toggle title=”Registration“] [/tw-toggle] [tw-toggle title=”Prerequisites“][tw-toggle title=”Agenda“]
Agenda:
9:00 am– 10:30 am Getting started with basic Linux commands
10:30 am – 11:30 am GIT basic commands
11:30 pm – 12:00 pm First look into Parallel Computing
12:00 pm – 1:00 pm Break for lunch (on your own)
1:00 pm – 2:30 pm Hands-on into Parallel Computing
2:30 pm – 3:25 pm Interact with Python for the first time
3:25 pm – 4:15 pm Introduction to containers in HPC
4:15 pm – 4:50 pm Diving into Deep Learning
[/tw-toggle] [tw-toggle title=”Detailed Outline“]GETTING STARTED WITH BASIC LINUX COMMANDS
Most of the computing clusters at ORNL are supported by the Linux open-source operating system. Linux is a powerful and robust platform that supports projects written in C, Fortran and other programming languages. Starting in Linux development can be daunting and time consuming for those who have not previously developed in a Linux environment. This workshop is targeted to students who have little (or possibly no) previous experience with Linux development. The prerequisite for this workshop is to have a Linux local or remote virtual machine.
Course outline:
- Overview
- Essential Commands
- The Use of vi
- Managing Files Commands
INTRODUCTION TO THE GIT VERSION CONTROL SYSTEM
This is intended to introduce users to version control systems and to one of the more popular version control systems, git. This covers the importance of version control systems, their history, and the history of git. It also has an interactive hands-on component for creating, manipulating, and interacting with a simple git repository. Finally, some git-related resources and some simple tips are shared.
Course outline:
- The importance of version control
- History of version control systems
- History of git
- Online git tutorial
- ORNL’s gitlab sites
- Other public git repositories
- Tips
- Git resources
FIRST LOOK INTO PARALLEL COMPUTING
In today’s world, we have different scales of machines from Raspberry pi to a Summit. In terms of parallelism, the ability to access all the resources possible on a machine is key. We will be introducing the basic concepts in parallel computing and define concepts that are ambiguous to the machine you’re working on. We will put a couple of these concepts to the test with a few hands-on examples using OpenMP.
Course outline:
- What is parallel computing?
- Why do we care?
- What is OpenMP?
- Hands-on examples:
Embarrassingly parallel
Reduction
Critical/barrier
INTERACT WITH PYTHON FOR THE FIRST TIME
Python is an Object oriented, High-level programming language. Its an interpreted language, i.e. it translates into machine readable format during runtime. Python can be used for Text processing, Numerical processing, Scientific computing, Computer vision applications, HPC and many more. Both desktop and web applications can be developed using Python. Hence, nowadays, it is used as a General purpose programming language. It boosts the application development cycle. This class is a short introduction to Python programming for those who want to start using it for their projects.
Course outline:
- Python’s history
- C vs. Python
- Syntax and Semantics
- Basic building blocks of any Python program
- Conditional statements, Looping structure, etc.
- Introduction to Anaconda python development environment
- Write basic Python program in Anaconda
INTRODUCTION TO CONTAINERS IN HPC
Are you interested in running your software on the fastest computers in the world? Perhaps you should attend “Containers in Research,” a 1 hour survey of how cutting edge software development is adapting containerized interfaces, which offer reliable, reproducible, and portable research. In this talk, Ben Liebersohn (GIST Post-Bachelor) will deliver technical and practical insights regarding software containers for research at ORNL.
Course outline:
- What is a container?
- Why use a container?
- How are containers used?
- How can one make and run a containerized application here at ORNL?
- What remains to be solved?
- Q&A
DIVING INTO DEEP LEARNING
Recently, Artificial Intelligence (AI) has been explosively popular. Among the techniques advancing AI, deep learning plays the most important role. In this talk, we will introduce deep learning, focus on computer vision problems, such as object recognition. Specifically, we will explain the model architecture of Convolutional Neural Networks (CNN) in details.
Course outline:
- Neural networks: perceptron, gradient descent, activation function
- Convolutional Neural Networks (CNNs)
- Deep learning framework library
- Brief guide to implementing simple neural networks and CNNs
- Cutting-edge research on a computer vision and deep learning