Published February 17, 2023 | Version v1
Presentation Open

Design Patterns for Multithreaded Algorithm Design and Implementation

  • 1. Kitware

Description

Modern computing hardware typically provides multiple cores and high-performance memory systems well suited to parallel computing, especially shared memory approaches. Yet despite these ubiquitous resources, much scientific computing software is still implemented using sequential approaches or is in dire need of a performance makeover. We believe that part of the reason for this is a perception that parallel algorithms are hard to design and implement. We are of the view that instead, a wealth of opportunities exists to reimagine classic and emerging algorithms, to better address the large-data challenges facing us as a community. The key is to become familiar with basic parallel computing design patterns, enabling algorithm developers to readily create performant software.
In this panel presentation, two developers with long experience developing parallel algorithms will describe common parallel design patterns by working through two classic algorithms: iso-contouring and surface extraction from volume. Topics addressed include removing bottlenecks; using multiple passes to configure data output, process data, and produce output; and compositing methods to avoid costly mutexes and other synchronization mechanisms. Also, simple but powerful techniques using functions like prefix sums and sorting algorithms, in conjunction with parallel for loops and atomic variables will be described. The emphasis will be on high-level conceptual approaches, and not the details of a particular implementation language / framework.

Notes

Recording: https://www.youtube.com/watch?v=gTwq3ib3qyA

Files

Design Patterns for Multithreaded Algorithm Design and Implementation.pdf

Files (885.3 kB)