50291B - Version: 1 02 May 2018 Microsoft Windows HPC Server 2008 R2 for the Cluster Developer
Microsoft Windows HPC Server 2008 R2 for the Cluster Developer 50291B - Version: 1 5 days Course Description: This five-day instructor-led course provides students with the knowledge and skills to develop high-performance computing (HPC) applications for Microsoft Windows HPC Server 2008 R2. Students learn how to design, debug, tune and run high-performance computing applications under Windows HPC Server 2008 R2. Students also learn the most compelling technologies for building HPC applications, including parametric sweep, multi-threading, MPI, SOA, and Excel. Students program in Visual C++ as well as C#, and work with both managed and unmanaged code. Intended audience: This course is intended for software developers who need to develop long-running, compute-intensive, or data-intensive apps targeting multi-core and cluster-based hardware. No experience in the field of high-performance computing is required. Prerequisites: Before attending this course, students must have: Basic experience using the Windows platform. Basic programming experience on Windows using Visual Studio. 2 or more years of programming experience in C++ or C#. Objectives: Understand the goals of the high-performance computing (HPC) field. Measure and evaluate the performance of HPC apps. Design HPC apps using the a variety of technologies: parametric sweep, tasks, MPI, and SOA.
Design HPC apps targeting a variety of hardware: from single-core to multi-core to cluster-based. Implement HPC apps using C++ or C#. Integrate HPC apps with Windows HPC Server 2008 R2, including a client-friendly front-end. Performance tune HPC applications under Windows HPC Server 2008. Design HPC apps that take advantage of Azure compute resources. Design HPC apps that take advantage of HPC Services for Excel 2010. Topics: Module 1: Introduction to High-Performance Computing and HPC Server 2008 R2 Motivation for HPC Brief product history of CCS, HPCS, and HPCS 2008 R2 Brief overview of HPC Server 2008 R2 components, job submission, scheduler Product differentiators Measuring performance linear speedup Predicting performance Amdahl s law Lab : Introduction to HPC And Windows HPC Server 2008 º Submitting and monitoring jobs º Running an HPC app º Measuring performance º Measuring the importance of data locality Module 2: Developing Software for HPC Server 2008 R2 Design challenges Design patterns Common problem decompositions Common communication patterns Computation vs. communication Available HPC technologies: multi-threading, GPUs, MPI, SOA, etc. Data-mining and Parametric Sweep
Module 3: The HPCS Job Scheduler Throughput vs. performance Nodes vs. sockets vs. cores Jobs vs. Tasks Job and task states Default scheduling policies The impact of job priorities and job preemption Job resources and dynamic growing / shrinking Submission and activation filters Lab : Working with the Job Scheduler º Environment variables in HPC Server 2008 R2 º Exit codes and denoting success / failure º Checkpointing in case of failure º Multi-task jobs and task dependences Module 4: Multicore for Performance Parallel, multicore programming for responsiveness and performance Structured, fork-join parallelism Multicore in C# using the Task Parallel Library in.net 4 Multicore in VC++ using OpenMP and the Parallel Patterns Library Scheduling parallel, multicore apps on Windows HPC Server Lab : OPTIONAL: Multicore Programming in C# using Task Parallel Library º Creating a parallel, multicore app in C# and.net 4 º Running and measuring performance locally º Running and measuring performance on the cluster Module 5: Interfacing with HPCS-based Clusters Cluster Manager Job Manager Job Description Files clusrun Console window
PowerShell Scripts Programmatic access via HPCS API v2.0 Showing job progress Implementing job fault tolerance Lab : Interfacing with Windows HPC Server 2008 º Clusrun is your friend º Scripting º Using the HPCS API to submit and monitor a job Module 6: Introduction to MPI Shared-memory vs. distributed-memory The essence of MPI programming message-passing SPMD Microsoft MPI Using MSMPI in Visual Studio with VC++ Execution model MPI Send and Receive mpiexec Scheduling MPI apps on Windows HPC Server Lab : Introduction to MPI º Creating a simple MPI app using Send and Receive º Running and measuring performance locally º Running and measuring performance on the cluster Module 7: MPI on the Microsoft Platform MSMPI: Microsoft MPI Data parallelism in MPI A real world example Broadcast Scatter Gather Barriers Reductions Defining your own reduction operator
Common pitfalls Lab : Data Parallelism with MPI s Collective Operations º Parallelizing an existing MPI application º Mapping Sends and Receives to Broadcast, Scanner, Gather, and All_reduce º Running and measuring performance locally º Running and measuring performance on the cluster Module 8: MPI Debugging, Tracing, and Performance Tuning Local MPI debugging with Visual Studio 2010 Remote MPI debugging with Visual Studio 2010 General MPI tracing Tracing with ETW (Event Tracing for Windows) Trace visualization Other tools for MPI developers: perfmon, resmon, and xperf Common performance problems in MPI Module 9: MPI Application Design Hiding latency by overlapping computation and communication Non-blocking communication Safety: detecting and avoiding deadlock MPI.NET Hybrid designs involving both MPI and OpenMP Buffering, error handling, I/O, and large datasets Remote memory access Module 10: Intro to SOA with HPC Server 2008 R2 Service-oriented architectures SOA and WCF Mapping SOA onto Jobs and the Job Scheduler Private vs. shared sessions Secure vs. insecure sessions Volatile vs. durable sessions Lab : Consuming a HPC-based SOA Service
º Deploying a SOA service º Building a desktop client to communicate with a SOA service º Working with volatile SOA sessions º Working with durable SOA sessions Module 11: Create SOA-based Apps with HPC Server 2008 R2 Service-side programming Service configuration Client-side programming options Proxies: Async WCF vs. HPC BrokerClient, Enumeration vs. Callback Lab : SOA-based HPC with HPCS and WCF º Creating a SOA service from scratch º Deploying a SOA service º Develop a client-side app to communicate using WCF proxy º Develop a client-side app to communicate using HPC BrokerClient proxy º Call a service with multiple entry points, concurrently Module 12: SOA Debugging, Tracing, and Performance Tuning Local SOA debugging with Visual Studio 2010 Remote SOA debugging with Visual Studio 2010 Low-level tracing with WCF Enabling WCF tracing via HPC Cluster Manager Common performance problems with SOA-based HPC apps Troubleshooting SOA services Module 13: HPC Services for Excel 2010 Excel as a computation engine Performing Excel computations on Windows HPC Server 2008 R2 Using HPC Services for Excel 2010 to run workbooks on the cluster Using Excel UDFs to run parallel computations on the cluster Module 14: Designing for Workstation and Azure nodes
Additional compute resources: on-premise workstations and off-premise Azure nodes Taking advantage of Workstation nodes Taking advantage of Azure nodes Module 15: Supporting and Emerging Technologies GPU computing with CUDA and HPC Server 2008 R2 Virtual Shared Memory with AppFabric Caching Large data processing with Dryad and DryadLINQ Cluster data reporting via the HPC Server API