See upcoming classes on the Google Calendar on the sidebar.

Introduction to ARC Systems

Class type: Introduction
Class date: 2018-02-21

This two hour NLI class was presented on February 21 by ARC computational scientist Ahmed Ibrahim.
It presented an overview:
* what system are available
* how to request an account and allocations
* how to login and transfer files
* how to prepare a job script

PDF version of slides

CMDA3634: Working on the NewRiver Cluster

Class type: Introduction
Class date: 2018-02-22

This presentation introduces the ARC cluster NewRiver, and explains how a new user can log in, set up the environment, transfer files, and write scripts to request that a program be executed in a particular queue. Brief examples are given of job scripts for sequential, OpenMP, MPI, and CUDA programs.

The presentation was prepared for the CMDA3634 class, and the students are expected to use the allocation associated with the class. Other interested users may find the presentation helpful. The example scripts using open_q will work as given, but those that specify an allocation would have to be changed to the user’s own allocation.

Note that ARC staff are available to give similar presentations to classes which involve high performance computing.

The 8-page PDF handout;

The TAR file of examples

Parallel R

Class type: Introduction
Class date: 2018-02-14

“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.Parallel-R-2018

Numerical Computing in Julia

Class type: Programming Language
Class date: 2018-02-12

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_2018Feb12
Code: Julia_2018Feb12_Examples

Faster Code for Free: Linear Algebra Libraries

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

Many scientific programmers write all of their own code. But many common programming operations amount to linear algebra operations (e.g. matrix multiplication or factorization). Linear algebra libraries such as MKL or ATLAS provide linear algebra implementations optimized for given CPU architectures and the promise of code that is faster to both write and execute.

This session will provide an overview of linear algebra libraries, the routines they provide, and how to use them in code. An overview of higher-level packages and solvers, such as PETSc and Trilinos, will also be provided.

Slides: LA_Libraries_2017Oct27
Hands On Instructions: LA_Libraries_2017Oct27_HandsOn_Instructions
Examples and Hands On Materials: LA_Libraries_2017Oct27_Codes

Parallel Matlab Workshop

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

This workshop will describe how to use Matlab to leverage the parallel computing capabilities of modern CPU architectures, including those of Virginia Tech’s supercomputers. Users will learn how to use parfor, spmd, and distributed array constructs to parallelize Matlab code, best practices for doing so, how to run parallel jobs locally, and how to run them on Virginia Tech’s supercomputers.

A variety of example codes will be provided for student use.

*Attendees are expected to be familiar with Matlab basics, but will not need any experience with parallel programming.

Slides: ARC_Matlab_2017Oct25
Parfor Codes: ARC_Matlab_2017Oct25_parfor_codes
SPMD Codes: ARC_Matlab_2017Oct25_spmd_codes

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