60 likes | 193 Vues
This document discusses innovative programming techniques essential for harnessing the power of exascale computing. It covers concepts including dynamic parallelism, composability, and productivity, emphasizing the importance of locality and synchronization in designing scalable systems. The role of various libraries, domain-specific languages, and compiler techniques such as AVX and CUDA are explored for their impact on performance and flexibility. Key challenges in error checking, workload redistribution, and resilience in multi-threaded environments are addressed to improve efficiency in high-performance computing.
E N D
ProgrammingatExascale Michael Wolfe The Portland Group, Inc. April 2011
Node Socket Core Vector Pipeline Instruction SSE AVX LRB IF IF ID ID RF RF EX EX EX EX EX EX WB WB IF ID RF EX EX WB IF ID RF EX EX EX EX WB
Now Exascale coarrays, PGAS MPI Application Cilk OpenMP Compiler CUDA AVX IF IF ID ID RF RF EX EX EX EX EX EX WB WB IF ID RF EX EX WB IF ID RF EX EX EX EX WB
Performance Flexibility • Scalability • Dynamic parallelism • Composability • Productivity • Load balancing Parallelismexposeexpressexploit Locality Synchronization The Creative vs The Mechanical
Insufficient • Library implementation • Class libraries • Domain-specificlanguage • OpenCL
Requirements • Parallelism, Locality, Synchronization • Expressing the parallelism • Productivity • Error checking • Performance feedback • Scalability, up and down • multiple threads one thread • vector scalar • multicore vector • Dynamic parallelism • at every level • Composability • language definition, compiler analysis and optimizations • Self-Balancing • runtime introspection, workload redistribution • Resilience • redistributing the data and the computation • 5 • 4 • 7 • 7 • 8 • 6 • 3 • 4 • 3 • 0