

Mini-courses
Fall 2012
Geographic Information Systems Mini-Courses/Workshops
Each semester, Library and Research Computing staff offer short training sessions on Geographic Information Systems and related technologies. Princeton University faculty, staff and students may register for these sessions by going to the Digital Map and Geospatial Information Center site ( http://www.princeton.edu/~geolib/gis/ ) and clicking on ‘GIS Workshops.’
Scientific Visualization with VisIt
Eliot Feibush, Computational Scientist, PPPL
Wednesday, November 28, 2012 ∙ 4:30-6:00 pm
New Media Center, 130 Lewis Science Library
This mini-course will introduce participants to scientific visualization techniques in the VisIt software package.
Scientific visualization combines computer graphics with data generated by simulations and acquired from experiments. It enables insight, verification, and is very valuable for presentations and publications. VisIt has a graphical user interface for exploring and displaying data. It connects to a rendering engine that can run in parallel to handle large amounts of data. VisIt can produce animation to represent complex behavior of variables over time. The software is freely available for Mac, Windows, and Linux platforms and is installed on the Princeton University High Performance Computing Systems and in the PICSciE Visualization Laboratory.
The course assumes no prior experience with visualization tools. It is intended for researchers interested in developing visual representations of their data. The session features hands-on lab exercises in the New Media Center.
Eliot Feibush is a Computational Scientist in the Computational Plasma Physics Group at the Princeton Plasma Physics Laboratory. He specializes in developing visualizations and graphics software. His experience covers modeling, rendering, programming graphics algorithms, animation scripting, and creating workflows. Prior to PPL, he has worked on applying visualization and interactive graphics to other fields, including medical imaging, architectural design, and geospatial analysis.
GPU Computing Workshop with NVIDIA
December 11-12, 2012 from 9:00 am - 4:30 pm
New Media Center, 130 Lewis Library
The free GPU computing workshop will address topics such as why hybrid computing with GPUs is important to sustaining and advancing the state of the art in scientific and research computing, both in terms of performance and energy efficiency. The workshop will survey the broad range of GPU accelerated applications across all domains of scientific research and engineering. Participants will learn how to program GPUs via the use of libraries, OpenACC compiler directives, and CUDA programming. Users will engage in a broad range of hands-on exercises intended to familiarize them with GPU programming concepts. Topics range from introductory concepts to intermediate discussions on performance optimizations, use of profiling tools and the like.
Dr. Jonathan Bentz is a Solution Architect with NVIDIA, focusing on Higher Education and Research customers. In this role he works as a technical resource to customers and OEMs to support and enable adoption of GPU computing. He delivers GPU training such as workshops to train users and help raise awareness of GPU computing. He also works with ISV and customer applications to assist in optimization for GPUs through the use of benchmarking and targeted code development efforts. Prior to NVIDIA Jonathan worked for Cray as a software engineer where he developed and optimized high performance scientific libraries such as BLAS, LAPACK, and FFT specifically for the Cray platform. Jonathan obtained a PhD in physical chemistry and an MS in computer science from Iowa State University.
Registration is now available on the Princeton training website. Once you are on the site, click on “All Training”. The GPU workshop is event # 31.
Workshop Schedule
Day 1
8:30-9am Continental breakfast, PICSciE reception, 300 Lewis Library
9am-10am Intro to GPU Computing (Lecture) [Intro]
What is a GPU? How is it important in HPC? How to utilize GPU Computing.
10am-11am Programming GPUs (Lecture) [Intro]
Discussion of GPU libraries, OpenACC directives and CUDA programming.
11am-12pm Using OpenACC (Hands-on) [Intro]
Intro to OpenACC with examples.
1pm-2pm CUDA 101 (Lecture) [Intro]
Basics of CUDA programming, CUDA syntax, memory allocation, kernel constructs, kernel launching.
2pm-3:30pm CUDA programming (Hands-on) [Intro]
Test/Verify CUDA driver and CUDA toolkit installations
Write and launch simple kernels such as “Hello World”.
Use Grids and blocks.
Using shared memory in stencil codes.
3:30pm-4:30pm CUDA optimizations (Lecture) [Intermediate]
Memory coalescing, shared memory banks, occupancy, etc.
Day 2
8:30-9am Continental breakfast, PICSciE reception, 300 Lewis Library
9am-10:30am CUDA programming (Hands-on) [Intermediate]
Matrix transpose example
§ Use shared memory
§ Use the Visual Profiler
10:30am-3:30pm CUDA programming (Hands-on) [Intermediate] (1hr for lunch at noon)
Matrix multiply example (Visual profiler usage included throughout, as well as discussion of various performance optimization techniques.)
§ Using CPU-only
§ Using CUBLAS
§ Using OpenACC
§ Using CUDA and various optimizations such as shared memory.
3:30pm-4pm Basics of Thrust (Hands-on) [Intermediate]
Intro to Thrust, vectors, etc.
Spring 2012
Geographic Information Systems Mini-Courses/Workshops
Each semester, Library and Research Computing staff offer short training sessions on Geographic Information Systems and related technologies. Princeton University faculty, staff and students may register for these sessions by going to the Digital Map and Geospatial Information Center site ( http://www.princeton.edu/~geolib/gis/ ) and clicking on ‘GIS Workshops.’
Introduction to Parallel Debugging
Instructor: Dr. Stephane Ethier, Computational Scientist, PPPL
This mini-course will introduce the participants to different approaches in tackling the task of parallel debugging, including the use of advanced parallel debuggers, such as Totalview and DDT.
Overview: Debugging single processor code is already a daunting task that usually consumes a lot of development time. Luckily, many debugging tools are available to help the developer pinpoint the problem by controlling the state of execution. When dealing with large multi-processor code, however, this task becomes a true challenge for which the usual tools sometimes fail to provide a satisfactory solution when used exclusively.
Audience: Graduate students, researchers and technical staff
Location: E-Classroom, 225 Lewis Science Library
Date/Time: 03/22/12 at 4:30 pm - 03/22/12 at 6:30 pm
Fall 2011
Title: Introduction to mixed parallel programming using MPI and OpenMP
Instructor: Stephane Ethier, Computational Scientist, PPPL
When: December 7th and 8th, 4:30-6:30pm
Where: E-Classroom, 225 Lewis Science Library
Instructor: Michael Chupa, Visualization Analyst
When: November 10th from 11 AM - 1:00 PM
Instructor: Michael Chupa, Visualization Analyst
When: November 9th from 11 AM - 1:00 PM
Instructor: Michael Chupa, Visualization Analyst
When: October 6th from 4:30 PM - 6:00 PM
Where: New Media Center, Level 1, Lewis Science Library
Title: Introduction to VisIt (Part 1- Lecture/Presentation)
Instructor: Michael Chupa, Visualization Analyst
When: September 28, 2011 from 4:30 PM - 6:00 PM
Where: Visualization Lab, 346 Lewis Science Library
Description: This two-day mini-course will introduce participants to scientific visualization techniques using the interactive parallel visualization package VisIt, developed under the Advanced Simulation and Computing Initiative (ASCI) of the U.S. Department of Energy. It is widely recognized as a tool of choice for terascale datasets at the national shared supercomputing centers. VisIt is also available on several of the TIGRESS HPC resources at Princeton University.
Title: Introduction to VisIt (Part 2 - Hands-on)
Instructor: Michael Chupa, Visualization Analyst
When: September 29, 2011 from 4:30 PM - 6:00 PM
Where: E-Classroom, 225 Lewis Science Library
Description: This two-day mini-course will introduce participants to scientific visualization techniques using the interactive parallel visualization package VisIt, developed under the Advanced Simulation and Computing Initiative (ASCI) of the U.S. Department of Energy. It is widely recognized as a tool of choice for terascale datasets at the national shared supercomputing centers. VisIt is also available on several of the TIGRESS HPC resources at Princeton University.
Title: Introduction to Good Object-Oriented Design in C++ (Parts 1 & 2)
Instructor: Dennis McRitchie, Lead High Performance Computing Analyst, OIT
When: September 21 & 22, 2011 from 4:00 PM - 5:30 PM
Where: Visualization Lab, Room 346 Lewis Science Library
This two-day mini-course will introduce some design elements needed to write elegant, maintainable, and debuggable object oriented code.
Overview: Many who write code in C++ treat it as a procedural language, and are not sure how to write code using an object-oriented paradigm. Thus you end up with programs with just one or two classes filled with procedural code, or programs where classes are simply used as containers for semi-related functions. This mini-course will introduce you to the very different mind-set needed for the proper use of classes, and how they help through information hiding and object inheritance to produce more reliable and readable code. In addition, this mini-course will lightly touch on some common design patterns, as well as a few debuggers and profilers.It is assumed that the student already knows how to write procedural code in an algebraic language (preferably in C or C++).
Recommended Reading:
1) For good general software development design, including good object-oriented design: "Code Complete", Steve McConnell, 2nd Ed., 2004.
2) To learn C++: "Effective C++", Scott Meyers, 3rd Ed., 2005.
3) C++ reference manual by the creator of C++ (do *not* use to learn C++): "The C++ Programming Language", Bjarne Stroustrup, 3rd Ed., 1997. [4th Ed. coming out on 2012].
