Expressing Parallel Patterns in Modern C++ Rahul V. Patil Microsoft C++ Parallel Computing Team Note: this is a simplified version of the deck used in.

Slides:



Advertisements
Similar presentations
Presenter MaxAcademy Lecture Series – V1.0, September 2011 Loops and cyclic graphs.
Advertisements

James Kolpack, InRAD LLC popcyclical.com. CodeStock is proudly partnered with: Send instant feedback on this session via Twitter: Send a direct message.
A Dataflow Programming Language and Its Compiler for Streaming Systems
{ async patterns } - or - using the asynchronous library in the.Net 4.5 Framework for more than keeping your UI responsive.
Presented by David Cravey 10/15/2011. About Me – David Cravey Started programming in 4 th grade Learned BASIC on a V-Tech “Precomputer 1000” and then.
Randal E. Bryant Carnegie Mellon University CS:APP2e CS:APP Chapter 4 Computer Architecture Overview CS:APP Chapter 4 Computer Architecture Overview
CS 584. A Parallel Programming Model We need abstractions to make it simple. The programming model needs to fit our parallel machine model. Abstractions.
Virtual techdays INDIA │ 9-11 February 2011 Parallelism in.NET 4.0 Parag Paithankar │ Technology Advisor - Web, Microsoft India.
Parallel Programming in Visual Studio 2010 Sasha Goldshtein Senior Consultant, Sela Group
Penn ESE535 Spring DeHon 1 ESE535: Electronic Design Automation Day 8: February 11, 2009 Dataflow.
Workflow patterns using BPMN 2.0
Center for Embedded Computer Systems University of California, Irvine and San Diego SPARK: A Parallelizing High-Level Synthesis.
 Rick Molloy Program Manager Microsoft Corporation TL25.
Parallel Processing (CS526) Spring 2012(Week 5).  There are no rules, only intuition, experience and imagination!  We consider design techniques, particularly.
PARALLEL PROGRAMMING ABSTRACTIONS 6/16/2010 Parallel Programming Abstractions 1.
Parallel Programming in.NET Kevin Luty.  History of Parallelism  Benefits of Parallel Programming and Designs  What to Consider  Defining Types of.
SEC(R) 2008 Intel® Concurrent Collections for C++ - a model for parallel programming Nikolay Kurtov Software and Services.
How do developers use parallel Libraries? Semih Okur & Danny Dig University of Illinois at Urbana- Champaign.
Rechen- und Kommunikationszentrum (RZ) Parallelization at a Glance Christian Terboven / Aachen, Germany Stand: Version 2.3.
Prospector : A Toolchain To Help Parallel Programming Minjang Kim, Hyesoon Kim, HPArch Lab, and Chi-Keung Luk Intel This work will be also supported by.
Topic #10: Optimization EE 456 – Compiling Techniques Prof. Carl Sable Fall 2003.
ET E.T. International, Inc. X-Stack: Programming Challenges, Runtime Systems, and Tools Brandywine Team May2013.
Steve Teixeira Director of Program Management, Visual C++ Microsoft Corporation Visual C++ and the Native Renaissance.
ICOM 5995: Performance Instrumentation and Visualization for High Performance Computer Systems Lecture 7 October 16, 2002 Nayda G. Santiago.
About Me Microsoft MVP Intel Blogger TechEd Israel, TechEd Europe Expert C++ Book
SIMPLE PARALLEL PROGRAMMING WITH PATTERNS AND OMNITHREADLIBRARY PRIMOŽ GABRIJELČIČ SKYPE: GABR42
Exascale Programming Models Lecture Series 06/12/2014 What is OCR? TG Team (presenter: Romain Cledat) June 12,
Work Replication with Parallel Region #pragma omp parallel { for ( j=0; j
1 Optimizing compiler tools and building blocks project Alexander Drozdov, PhD Sergey Novikov, PhD.
Virtual techdays INDIA │ august 2010 Parallelize applications using Intel Threading Building Blocks Om Sachan │ SSG, Intel Corporation.
09/24/2010CS4961 CS4961 Parallel Programming Lecture 10: Thread Building Blocks Mary Hall September 24,
Reactive pattern matching for F# Part of “Variations in F#” research project Tomáš Petříček, Charles University in Prague
LINQ & PLINQ (Parallel) Language Integrated Query.
9/22/2011CS4961 CS4961 Parallel Programming Lecture 9: Task Parallelism in OpenMP Mary Hall September 22,
Data Parallelism Task Parallel Library (TPL) The use of lambdas Map-Reduce Pattern FEN 20141UCN Teknologi/act2learn.
Auto-Vectorization Jim Hogg Program Manager Visual C++ Compiler Microsoft Corporation.
DEV303. Tiny Functions Why Does It Need a Name?
Async Made Simple with C++ PPL
1 Project 7: Looping. Project 7 For this project you will produce two Java programs. The requirements for each program will be described separately on.
Patterns of Parallel Programming with.NET 4 Stephen Toub Principal Architect Parallel Computing Platform Microsoft Corporation
Static Translation of Stream Program to a Parallel System S. M. Farhad The University of Sydney.
TOPICS WHAT YOU’LL LEAVE WITH WHO WILL BENEFIT FROM THIS TALK.NET developers: familiar with parallel programming support in Visual Studio 2010 and.NET.
Tuning Threaded Code with Intel® Parallel Amplifier.
Concurrent Revisions: A deterministic concurrency model. Daan Leijen & Sebastian Burckhardt Microsoft Research (OOPSLA 2010, ESOP 2011)
Apache Tez : Accelerating Hadoop Query Processing Page 1.
Parallel Programming Models EECC 756 David D. McGann 18 May, 1999.
Parallel Computing Chapter 3 - Patterns R. HALVERSON MIDWESTERN STATE UNIVERSITY 1.
TensorFlow– A system for large-scale machine learning
Support for Program Analysis as a First-Class Design Constraint in Legion Michael Bauer 02/22/17.
Asynchronous Programming with C# v.Next
Parallel Programming By J. H. Wang May 2, 2017.
ESE532: System-on-a-Chip Architecture
Eng Computation & Data Science.
Staying Afloat in the .NET Async Ocean
C++ Forever: Interactive Applications in the Age of Manycore
Mattan Erez The University of Texas at Austin
Presented by: Huston Bokinsky Ying Zhang 25 April, 2013
Physical Join Operators
Writing High Performance Delphi Application
F# for Parallel and Asynchronous Programming
Parallel Computation Patterns (Reduction)
Build /2/2019 © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks.
Your code is not just…your code
Implementation of Relational Operations
Rick Molloy Senior Developer Microsoft Startup Business Group
Patterns for Programming Shared Memory
Patterns for Programming Shared Memory
CSE P 501 – Compilers SSA Hal Perkins Autumn /31/2019
Mattan Erez The University of Texas at Austin
Your code is not just…your code
Presentation transcript:

Expressing Parallel Patterns in Modern C++ Rahul V. Patil Microsoft C++ Parallel Computing Team Note: this is a simplified version of the deck used in the video

Agenda Patterns (70%) Infrastructure (9%) Coordination Data Structures (1%) Tooling (20%)

Asynchrony Data Flow Fork-Join

Asynchrony Data Flow Fork-Join

Data Parallel Reduction Cancelation Nested fork-join Recursive fork-join parallel_for parallel_for_each parallel_invoke parallel_for fixed parallel_for simple parallel_transform parallel_reduce parallel_sort parallel_radixsort parallel_buffered_sort task_group.run(),.wait(),.cancel(),.run_and_wait() Constructs Patterns

Asynchrony Data Flow Fork-Join

Asynchrony Speculative background work If you block, you break Dynamic continuation graphs std::future std::async, std::promise task.then,.wait,.get,.cancel when_all, when_any task_completion_event.set Constructs Patterns

Asynchrony Data Flow Fork-Join

Data Flow Producer-Consumer Pipelines Blocks and operations call transformer join, multitype_join choice unbounded_buffer overwrite_buffer single_assignment timer Constructs Patterns

Recap Fork-Join Sequential code that needs to go faster Well defined input, transformation and output Data-Flow Either transformative or reactive Natural to express computation in phases Streaming inputs Order matters Async If you block you break Speculative background work Reactive Continuations

Infrastructure Composable Scalable Efficient

Conccurrent Data Structures concurrent_vector concurrent_queue concurrent_unordered_map concurrent_unordered_multimap concurrent_unordered_set concurrent_unordered_multiset concurrent_priority_queue

Tooling

Intel Advisor

Identify hot loops

Intel correctness tool Identify Write race when parallelizing inner loop

Add PPL tasks code

Add Synchronization

Launch Concurrency Visualizer

Add parallelism to middle loop

Q&A Blog Posts: C++ PPL and AMP blogC++ PPL and AMP blog Questions on PPL: Native parallelism forumNative parallelism forum me at: [r_ a_ h_ u_ l d o t p_ a_ t_ i_ l a t m_ i_ c_ r_ o_ s_ o_ f_ t_. c_ o_ m (delete all underscores and spaces; replace d o t with the character ".“; at ). ]