| |
|
Introduction to High-Performance Computing with Microsoft Windows HPC Server 2008 |
- What is HPC
- What is Microsoft Windows HPC Server 2008
- Clusters vs. Grids
- Common types of parallelism: task, data, and pipeline
- Developing and running cluster applications
- Measuring and predicting performance: speedup, Amdahl's law
- Examples, examples, examples
|
|
| |
|
Introduction to Concurrent Programming on Windows |
- Anatomy of processes and threads
- Fork-join parallelism
- Multi-threading use-cases
- Multi-threading using the Windows API
- Working with threads
- Multi-threading caveats
|
|
| |
|
Concurrency and Synchronization |
- Why we need synchronization
- Critical sections and race conditions
- Atomic updates
- Locking
- Barriers
- Deadlock and deadlock avoidance
|
|
| |
|
Working and Interfacing with Windows HPC Server |
- Architecture of HPC Server
- Executive summary of cluster setup
- Working with HPC Server
- Scheduling jobs and tasks
- Security and manageability
- HPC Server API
- Interfacing with HPC Server via the API
|
|
| |
|
Introduction to OpenMP --- Open Multi-Processing |
- What is OpenMP?
- Shared-memory programming
- Using OpenMP in Visual Studio
- Parallel regions
- Execution model
- Task, loop and data parallelism
- Scheduling OpenMP apps with HPC Server
|
|
| |
|
Using OpenMP Effectively in HPC Applications |
- Performance considerations
- Optimizations
- Synchronization approaches
- Data reductions
- Scheduling options
- Data coherence and flushing
|
|
| |
|
Using .NET to Develop HPC Applications |
- Introduction to PFx: Parallel .NET Framework
- Using PFx to develop shared-memory parallel programs
- Cluster-wide, distributed-memory HPC applications
- SOA-based applications and the Windows Communication Foundation
- Using WCF and HPC Server to develop cluster-wide, SOA-based HPC applications
- Developing interactive HPC applications
|
|
| |
|
Introduction to MPI --- the Message Passing Interface |
- What is MPI?
- The architecture of MPI programs
- Developing MPI programs in Visual Studio
- Running MPI programs on your local workstation
- Scheduling MPI apps with HPC Server
|
|
| |
|
MPI Send and Receive |
- Send and receive: the fundamental operations of MPI
- Message-passing basics
- Semantics of send and receive
- Writing complete MPI programs
- Error handling
- Task parallelism in MPI
|
|
| |
|
Data Parallelism and MPI's Collective Operations |
- Unsafe MPI programs
- Safe, efficient and readable programs
- MPI's collective operations
- Data parallelism in MPI
- Image processing
|
|
| |
|
Working with MPI |
- The practical realities of working with MPI
- Local and remote debugging
- Tracing with ETW
- Profiling
- Performance tuning
- Tools, tools, tools
|
|
| |
|
Designing MPI Applications |
- What are your design goals?
- Data parallelism
- Task parallelism
- Functional parallelism
- Pipelining
- Map-reduce
- Hybrid OpenMP + MPI designs
- Other considerations
- Foster's method
|
|
| |
|
MSMPI, MPI.NET and MPI-2 |
- Important features for the advanced MPI developer
- Groups
- Topologies
- User-defined datatypes
- MPI I/O
- Dynamic process management
- Remote memory access
- MPI programming in .NET with MPI.NET
|
|
| |
|
The HPC Server API |
- Interfacing with HPC Server to improve the user's experience
- HPC Server description files
- Console access
- PowerShell access
- Programming against the API
- Developing a client-side front-end to HPC Server
- Automating deployment, execution, and aggregation of results
|
|
| |
|
Excel and Excel Services with HPC Service |
- Excel and HPC are natural partners
- Architecting parallel execution of Excel workbooks
- Excel Services and HPC Server
- Excel UDFs and HPC Server
|
|
| |
|
Porting Applications to HPC Server 2008 |
- Common porting problems and their solutions
- Moving from 32-bit to 64-bit
- Moving from UNIX-based systems to Windows
- Microsoft SUA --- Sub-system for UNIX Applications
- Tool support
|
|
| |
|
Setup and Administration of HPC Server 2008 |
- The scope of HPC Server
- A workable script for setting up an HPC Server cluster
- Ongoing administrative of an HPC Server cluster
- Tools, techniques, and suggestions
|
|