Summary and Schedule
This is a new lesson built with The Carpentries Workbench.
The HPC-user Software Carpentry module is aimed at researchers with some background in using scientific computing. This lesson will teach scientists to understand and deal with performance issues that arise when moving from a personal computer to a High-Performance Computing (HPC) environment (a SuperComputer). The basic concepts that affect performance are covered in a general manner, then a survey of the capabilities and performance of many languages commonly used in scientific computations are discussed along with example codes illustrating the performance concerns of each language. Each person who completes this module should have a good general overview of what each computer language can do and what performance bottlenecks to avoid.
Prerequisites
Each user must begin with some knowledge of Linux and at least one of the languages that this module covers (Python, R, C/C++, Fortran, Matlab). The examples in the first part of this module are currently only in Python but will eventually be adjustable to display in any of these languages. Each user may also need to know how to run jobs in an HPC environment. These prerequisites may all be covered by having an HPC Unix Shell carpentry module taught right before this one.
If there is no preceeding HPC Unix Shell module presented then there should be a more in depth discussion of what an HPC system is and how it is used.
- One or more head nodes where you log in and do code setup.
- Many compute nodes where the jobs actually get run, each having multiple cores.
- The Linux operating system with a command line interface (CLI).
- Possibly a more graphical interface like OnDemand.
- A batch queue system that scheduled jobs to compute nodes.
- A common file system available on all head nodes and compute nodes.
- Possibly some GPU cards for accelerating some scientific codes.
- A module system for loading compilers and scientific applications.
The user logs into a head node, edits code, input files, and job scripts, then submits the job script to the batch queue where it gets scheduled to run on the compute nodes when there is space available.
Setup Instructions | Download files required for the lesson | |
Duration: 00h 00m | 1. Introduction | What should I expect to learn from the HPC User module? |
Duration: 00h 20m | 2. Profiling Code for Performance |
How to measure performance? How to measure memory usage? |
Duration: 00h 40m | 3. Performance Concepts |
What does performance mean in programming? How do I take advantage of optimized libraries? |
Duration: 01h 20m | 4. Parallel Computing Concepts |
Now that we can profile programs to find where the time is being
spent, how do we speed the code up? What is parallel computing, and what are the underlying concepts that make it work? |
Duration: 02h 00m | 5. Multi-Threaded Programs | What is the multi-threaded shared-memory programming model? |
Duration: 02h 30m | 6. Message-Passing Programs | What is the distributed-memory programming model? |
Duration: 03h 00m | 7. Language Survey | What are the strengths and weaknesses of each computer language? |
Duration: 03h 10m | 8. C and C++ Languages | What are the strengths and weaknesses of programming in C and C++? |
Duration: 03h 40m | 9. The Fortran Language | What are the strengths and weaknesses of Fortran? |
Duration: 04h 00m | 10. The Python Language | What are the strengths and weaknesses of programming with Python? |
Duration: 04h 40m | 11. The R Language | What are the strengths and weaknesses of the R programming language? |
Duration: 05h 30m | 12. The Matlab Language | What are the strengths and weaknesses of the Matlab language? |
Duration: 06h 00m | 13. Array Jobs | What do array jobs have to do with high-performance computing? |
Duration: 06h 15m | 14. Accelerating Scientific Computing with GPUs | What differences are there in handling applications that can use a GPU? |
Duration: 06h 30m | 15. High-Throughput Computing | What is the difference between high-throughput computing and cluster computing? |
Duration: 06h 45m | 16. HPC Resources | How do I get access to HPC resources? |
Duration: 07h 00m | Finish |
The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.
Data Sets
Download the code examples zip file and unzip it to your Desktop.
Software Setup
Details
Your instructor should provide you with information on how to access a Linux system or Supercomputer. You will need to use the directions below to access that system using a terminal window so you can use the command line interface. You will also need to transfer the code files to the Linux system, again by following the directions for your operating system below. Once the code files are copied over, you may edit them on the Linux side with vim or nano, or if you are more comfortable you may edit the code files on your personal computer and transfer them to the Linux system instead.
Programming Language for Example Code
Your instructor will direct you to click on the tab of a particular programming language below. This will select the language for all example codes and diagrams for the first few chapters of this workshop. As you go through each lesson, you may always click on the other tabs to see how each code is implemented in the different programming languages.
NOTE - Example programs for sections 2-6 are currently only available in Python and C. I’m looking volunteers to program the R, Matlab, and modern Fortran example programs.