“SPMD Programming Using C++ and ISPC"
summary
Shows how SPMD maps to real SIMD: uses ISPC and a small header-only prototype called cbps spmd that implements varying/uniform types, masks and lambda-based control flow, plus explicit masked loads/stores. Built the prototype and benchmarked examples: noise went from 45.5s (plain C++) to 10s (cbps), with ISPC fastest until hand-tuned C++ reached parity and up to ~9x (11x on newer CPU) over scalar; Mandelbrot: ~100s → 53s (cbps) → 16s (ISPC) → 15s (tuned C++). Works but needs explicit loads/stores, heavy lambdas and is proof‑of‑concept, not production ready.
AI-written summary · about
chapters (10)
- 0:00Introduction
- 1:03SIMD fundamentals
- 8:41SIMD intrinsics pros and cons
- 10:03SPMD explained
- 12:12Case study ISPC
- 18:30Case study AMD GCN shaders
- 27:04C++ SPMD library
- 35:49Performance benchmarks
- 41:48Quirks and limitations
- 49:28Conclusion and Q&A
related talks
43mWhat Every Programmer Should Know about How CPUs Work
19mHow NOT To Program an Out-of-order Vector Processor
35mSQUIP or Why We Need to Study Processors Like Nature
45mHackathon Presentations
17mRISC-V is Ready for Powering the Era of Intelligent General Computing
01h 16mA New Golden Age for Computer Architecture
01h 28mProcessing-in-Memory: Theory and Practice
26mPrincipled algorithm, data structure and system design for Processing-in-Memory (PIM)”
