See upcoming classes on the Google Calendar on the sidebar.

Introduction to HPC and ARC Resources

Class type: Introduction
Class date: 2017-10-06

This class will provide an overview of high-performance computing from a beginner’s perspective. It will cover the following topics:

1) What is supercomputing?
2) Why is supercomputing or parallel computing important
3) Key terminology and concepts in parallel and supercomputing
4) What do modern supercomputers look like?
5) Theoretical background for parallel computing Any or all interested parties are welcome.

Participants are not expected to have any background or familiarity with supercomputing or even programming to attend this session.

This session provides an overview of the high-performance computing (HPC) resources managed by Advanced Research Computing(ARC) followed by a hands-on introduction to the user environment. This session also provides an excellent opportunity for less experienced HPC users to acquaint themselves with the systems available at Virginia Tech and become more comfortable with their use.

Slides: Intro_HPC_ARC_2017Oct06.pdf
Example: Intro_HPC_ARC_2017Oct06.zip

Numerical Computing in Julia

Class type: Programming Language
Class date: 2017-10-06

Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library. Julia’s LLVM-based just-in-time (JIT) compiler combined with the language’s design allow it to approach and often match the performance of C. This short course will provide an overview of the language, including comparisons with Matlab, R, and Python. No prior familiarity with Julia is required.

Slides: Julia_2017Oct06
Code: julia_example.tar

A gentle introduction to Hadoop (using R)

Class type: Introduction
Class date: 2017-04-24

Distributed computing is becoming more of a commodity skill for our workforce.  Knowledge of Hadoop use and is one key component to building out the core distributed computing skill set.  To ease the learning curve, we present Hadoop use via the R terminal and re-package and present three use cases.

 

Hadoop_R_Workshop_2017_slidy

MPI Test Drive

Class type: Programming Language
Class date: 2017-04-10

Come with me for an hour, and take a test drive on one of ARC’s shiny new computer clusters, called NewRiver.  I’ll show you how to drive a program that runs in parallel, using MPI.  For our test drive, MPI is all under the hood, making the parallel engine run super-fast, without us worrying about the details of programming.  Taking MPI for granted, we’ll concentrate on how you can get access to ARC, what sort of MPI programs are available, how they are run, and how you give them input and collect the output.

Many of our most satisfied customers use the ARC cluster in this way, without having to do any programming.

If you like what you see, you may be able to drive home with an MPI program that solves problems in your research area.

slides: mpi_test_drive_2017_vt

ARC: Hands on GPU-R

Class type: Programming Language
Class date: 2017-04-14

As clock speeds plateau, we are relying more on parallelism to achieve code speed improvements.  Here we will introduce GPU computing through the R interface.  This is meant really as a demystification session with our CUDA classes the followup in-depth discussions of full and optimal GPU programming.

GPU_R_Workshop_2017_slidy

Parallel R

Class type: Programming Language
Class date: 2017-04-12

“R” is a statistical programming language that has become increasingly popular in data analysis and statistical applications. This tutorial will describe how an R user can leverage the parallel computing capabilities of modern supercomputers to speed up large computations and/or run large numbers of similar operations, such as Monte Carlo simulations, at the same time. Packages covered in this class will include snow, Rmpi, and pbdR (“Programming with Big Data in R”).

Slides: NLI_Parallel_R_2017Apr12

Note: For example codes, please see the Examples section of our R page.

Numerical Computing in Julia

Class type: Programming Language
Class date: 2017-03-15

Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library. Julia’s LLVM-based just-in-time (JIT) compiler combined with the language’s design allow it to approach and often match the performance of C. This short course will provide an overview of the language, including comparisons with Matlab, R, and Python. No prior familiarity with Julia is required.

Slides: Julia_2017Mar15.pdf
Code: Julia_2017Mar15.zip

Introduction to OpenMP Programming

Class type: Introduction
Class date: 2017-03-17

OpenMP is an extension that allows C, C++ and Fortran programs to run in parallel on a single shared-memory processor. This course shows the kinds of scientific problems that involve parallelism, discusses the idea of shared memory and threads, shows how the loops in a user program can be modified with OpenMP directives, how to run a modified program on your laptop or on an ARC cluster, and how to use timing to verify that your performance has improved.

Slides: Download

Experiments in Matlab: Iterations

Class type: Introduction
Class date: 2017-03-01

This presentation is an informal introduction to iteration and Matlab.
It shows how the idea of iteration is used in computing, and how Matlab
can implement iteration using for and while loops.

Slides: Download

HokieSpeed, a cluster for Parallel Computing

Class type: Programming Language
Class date: 2017-02-23

This class demonstrates how to use HokieSpeed, one of the ARC cluster machines, including the use of ssh to login, scp to copy files, the module command to customize the environment, and the use of batch files to submit jobs.  Also discussed is the use of the special MPE environment to collect information about MPI calls that can be displayed with JUMPSHOT.

Handouts: Download
Demo Files: Download