University of Wisconsin–Madison

MSND 2017

2017 Summer School on Multibody Systems and Nonlinear Dynamics

July 24 – August 5, 2017

Organized and run by the ASME Technical Committee on Multibody Systems and Nonlinear Dynamics (TC-MSND)

Instructors: Professor Dan Negrut and Radu Serban – University of Wisconsin-Madison

Location: University of Wisconsin-Madison – Madison, Wisconsin, USA

Purpose: To expose talented students to MSND research topics, get students involved in TC-MSND activities, and encourage participation in yearly ASME MSNDC conference.

MSND group picture

Schedule

Morning sessions: 9:00 am – noon
Afternoon sessions: 1:30pm – 5:00pm

Day 1
Morning [Overview of Computational Dynamics]
• History of computational dynamics
• Motivation: Overview of problems and challenges in computational dynamics
-Classes of problems (FEA, CFD, MBD, DEM)
-Underlying mathematical models (PDE, ODE, DAE, DVI)
-Numerical techniques (linear and nonlinear solvers, time integration, optimization)

Afternoon
• Hands-on
o Building and using Chrono
o Multibody dynamics demos
o FEA demos
• Student research presentation

Day 2
Morning [Intro to Computing]
• Introduction: Example use of advanced computing in multibody dynamics
• Sequential computing, the hardware/software interface:
-The processor: the fetch-decode-execute cycle, registers, CU, ALU
-Memory issues: caches, virtual memory, cache coherence, memory models
• Quick overview of trends in parallel computing (multi-core and GPU computing); Top500 list

Afternoon
• Hands-on
-Accessing Euler
-Compiling and debugging on Euler
-Timing an Application
-Work on assignment (I/O operations)
• Student research presentation

Day 3
Morning [GPU computing with CUDA (1)]
• NVIDIA’s CUDA intro: computation model and execution configuration
• CUDA memory allocation
• CUDA Memory model: registers and global, constant, texture, shared, local memories
• CUDA execution scheduling; thread divergence

Afternoon
• Hands-on
-Timing a GPU application
-Vector addition and Dot product
-Large, tiled matrix-matrix multiplication with and without shared memory
-Work on assignment: Parallel reduce operation
• Student research presentation

Day 4
Morning [GPU computing with CUDA (2)]]
• Advanced CUDA features
-CUDA Streams
-CUDA Optimization rules of thumb
-CUDA profiling and debugging
• CUDA productivity tools
-CUDA library landscape
-thrust library

Afternoon
• Hands-on
-Reduction and prefix scan with thrust
-Profiling a dot product using nvpp
-Work on assignment: Array processing using thrust
• Student research presentation

Day 5
Morning [Multicore computing with OpenMP (1)]
• Introduction to OpenMP
• Parallel regions and work-sharing (parallel for, sections, tasks)
• Data environment and variable sharing
• Synchronization

Afternoon
• Hands-on
-Dot product
-Integral evaluation using OpenMP
-Work on assignment: Matrix Convolution, comparison w/ GPU implementation
• Student research presentation

Day 6
Morning [Multicore computing with OpenMP (2)]
• Advanced topics (performance)
• Profiling with Visual Studio and GCC
• Parallelization examples

Afternoon
• Hands-on
-Improving performance of Fibonacci code
-Monte-Carlo simulation
-Work on assignment: parallel scan with OpenMP
• Student research presentation

Day 7
Morning [Distributed parallel computing with MPI (1)]
• Introduction to message passing and MPI
• Point-to-point communication
• Collective communication

Afternoon
• Hands-on
-Ping-pong – estimate bandwidth
-Quadrature – Simpson’s rule
-Work on assignment: Simple Jacobi iteration (Laplace equation)
• Student research presentation

Day 8
Morning [Distributed parallel computing with MPI (2)]
• MPI derived types
• Other programming paradigms for distributed parallel computing
-Brief overview of Charm++

Afternoon
• Hands-on
-Determine the eager/rendezvous threshold
-Work on assignment: Scaling analysis for Jacobi iteration (Laplace equation)
• Student research presentation

Day 9
Morning [Parallel computational dynamics]
• Overview of Chrono::Parallel
-Design, features, validation studies, sample simulations
• Case study: parallel collision detection
-Binning approach for broad-phase collision detection
-Implementation using thrust algorithms
• Hybrid MPI-OpenMP in co-simulation of vehicle-terrain interaction
-Code design
-Sample analyses

Afternoon
• Student research presentations (two of them)

Day 10 (morning only)
Program wrap up, round table discussion (1 hour).