Another fundamental shift in Parallelism Paradigm?
summary
OpenMP 4.0 actually shows how to offload work and data to accelerators with concrete primitives: omp target and declare target for code offload, map(to: , from:) and target_data/target_update for explicit transfers, and teams/distribute plus parallel regions to express block/thread hierarchies. It supports asynchronous offload with task/taskwait, runs on multiple device kinds, and is implemented in GCC and Intel (with Clang work underway). Measured context: GPUs hit ~2,500 GFLOPS vs CPUs ~80–140 GFLOPS, and kernels like SAXPY/matrix multiply/Jacobi expose where performance wins and where data movement kills it.
AI-written summary · about
chapters (11)
- 0:00Start
- 15:58A brief history of OpenMP API by Kelvin Li
- 17:49Hello World with OpenMP Hello World
- 18:052-threaded Hello World with OpenMP threads
- 19:15Hello World with OpenMP tasks now run 3 times
- 34:10OpenMP 4.0 Device Constructs
- 36:26Execution Model and Data Environment
- 41:25Explicit Data Transfers: Target update Construct Example
- 52:12Compilers are here! Oracle/Sun Studio 12.4 Beta just announced full OpenMP 4.0 • GCC 4.9 shipped April 9, 2014 supports OpenMP 4.0
- 53:35Summary of upstream progress of OpenMP clan
- 54:52What did we accomplish in OpenMP 4.0?
related talks
01h 03mThe Landscape of Parallelism
59mC++ on its way to exascale and beyond
37mC++ for multi-accelerator, multi-vendor systems
01h 06mTrue parallelism, with no concept of threads
01h 02mC++ Performance Portability - A Decade of Lessons Learned
59mParallel Programming in Rust: Techniques for Blazing Speed
48mConsiderations for choosing the parallel computing strategy
01h 06mUtilize your CPU power
