Skip to content

EFFECTIVE CONCURRENCY
with HERB SUTTER

Online C++ Training – 22-25th April, 2024

REGISTER
COURSE CONTENT

Experience a unique LIVE online C++ training with one of the people shaping the evolution of the C++ language!

Herb Sutter is making a rare appearance with this live online public course. Participants in this intensive course will acquire the knowledge and skills required to write high-performance and low-latency code on today’s modern systems using modern C++.

This is a rare chance to access the insights and expertise of one of the most influential figures in the C++ community. Herb Sutter has been involved in the design and evolution of the language for over two decades and is a renowned expert and author on C++ and concurrency.

This unique LIVE online course will be held on 22-25th April 2024 from 14:00 – 18:00 CEST (1 PM – 5 PM BST).

COURSE GOALS

This intensive course with 4 daily sessions, will provide developers with the knowledge and skills required to write high-performance and low-latency code on today’s modern systems using modern C++.

During the course, you’ll learn how to get the highest performance and the lowest latency on modern hardware in ways that are unique to C++, including how to arrange data to use hardware caches effectively and how to use standard and your own custom-written parallel algorithms to harness high-performance parallel and vector processor hardware to compute results faster.

You’ll also learn how to manage latency for responsive apps and real-time systems and techniques to hide the underlying latencies we have to deal with and cannot remove, such as disk and network latency, and to make your code responsive by not introducing needless latencies in your code.

HERB SUTTER

Herb Sutter has served as chair of the ISO C++ standards committee since 2002, is the designer or co-designer of a number of ISO C++ features. As a software architect at Microsoft, he led the language extension design of C++/CLI, C++/CX, C++ AMP, and other technologies

He is the best-selling author of several books, including Exceptional C++ and C++ Coding Standards, co-editor of the C++ Code Guidelines, and has published hundreds of technical papers and articles. He wrote the landmark essay “The Free Lunch Is Over” on the fundamental turn toward concurrency in hardware and software, and its sequel “Welcome to the Jungle” on the end of Moore’s Law and the turn to mainstream heterogeneous supercomputing from the cloud to ‘smartphones.’

Herb Sutter

COURSE DESCRIPTION

Performance and efficiency are C++’s bread and butter, and they matter more than ever on modern hardware:

  • In processors, single-threaded performance improvements are slowing down (unless your code is parallel).
  • In the Internet of Things, we are often asked to do more work with less hardware.
  • In cloud computing, processor/hardware time is often the major cost component, so making code twice as efficient usually means saving close to half the processing cost.

Today, getting the highest performance and the lowest latency on modern hardware often means being aware of the hardware in ways that most other programming languages can’t – from hardware caches where simply arranging our data in the correct order can give 50x speedups with otherwise identical code, to hardware parallelism where using parallel algorithms turns on high-performance parallel and vector processor hardware that otherwise sits idle.

Additionally, low latency increasingly matters at all scales:

  • In user interfaces, low latency means responsive apps and productive users without the dreaded “wait…” donut.
  • In financial trading, low latency regularly saves large amounts of cash.
  • In embedded real-time systems, low latency is crucial to meeting deadlines and can even save lives.


This makes concurrency more critical than ever because it delivers two things: It hides latencies we have to deal with and cannot remove, from disk I/O latency to speed-of-light network latency, and it makes our code responsive by not introducing needless latencies of our own even when we’re not hiding someone else’s latency.

This intensive course will provide you with the knowledge and skills required to write high-performance and low-latency code on today’s modern systems using modern C++.

There will be a mix of theoretical teaching and practical exercises throughout the course. The course material is written in English and will be distributed to all participants in advance. The course is held in English.

Herb Sutter is a fantastic teacher – not only one of the world’s leading experts in his field, but an entertaining and engaging speaker.

The material and teaching was excellent, a good balance of broader concepts and concrete examples.

Reviews

Content

COURSE CONTENT

Fundamentals: Common Tools and Considerations

  • Overview of primitives: memory access order, threads/pools, lambdas, locks, atomics
  • Think in transactions: exclusive code blocks, safety, robustness
  • Prefer structured/bounded lifetimes: tasks; locks

Low Latency: Responsiveness Through Concurrency and Isolation

  • Basic tools: threads; messages
  • Prefer responsive objects: increase abstractions; avoid using raw threads; helper classes to automate
  • Using agents for performance: pipelining

Machine Architecture: Dealing with the Reality of Modern Hardware in Our Software

  • Bandwidth vs. latency; memory vs. CPU; Little’s Law; pipelining; cache; analyzing CPU profiles of cache misses
  • Effects on code performance: locality matters; access patterns matter even more; hardware considerations

Scalability: New “Free Lunch” by Using More Hardware to Get the Answer Faster

  • Choosing data structures: ones that are concurrency-friendly vs. concurrency-hostile
  • Coping with different semantics: parallelizing algorithms can change their meaning; how to gain stronger semantics when needed
  • Superlinear scalability

Performance Without Races (Corruption), Contention (Latency-Killing), or Deadlocks (Composition-Killing)

  • How to avoid race conditions: associate data with locks; helper classes to automate
  • How to avoid deadlocks: apply lock hierarchies and other lock ordering; helper classes to automate
  • How to avoid composability problems: combining modules/plugins/extensions safely

Writing Robust Lock-Free Code: When the Lowest Latency Matters, Consider Using the Highest Concurrency

  • The tools: atomic variables, transactional thinking
  • Double-Checked Locking pattern: example and analysis; why no longer broken
  • Producer/Consumer pattern variations: using locks; locks + lock-free for different phases; fully lock-free using mailboxes
  • Implementing a singly linked list: implementing find/insert_at_front/pop; problems and how to avoid them using standard C++20 features

Prerequisites

PREREQUISITES

Audience

C++ programmers, programmers working in performance- and efficiency-demanding application domains, programmers working in latency-sensitive domains, system designers, HPC experts, and data specialists.

Experience

Intermediate to advanced C++ programming experience required: at a minimum, participants should be comfortable with the C++ standard language (data structures, control flow, functions, modules, packages, file I/O, and so on).

Some experience with concurrency, parallelism, and/or multiprocessing in languages such as Java, C, C++, or another is recommended but not required.

FAQ

QUESTIONS AND ANSWERS

How is the course presented?

The course is online over four days, using a selected video conferencing platform. There will be a mix of theoretical teaching and practical exercises throughout the course. The course material is written in English and will be distributed to all participants in advance. The course is held in English.

What are the Terms and Conditions?

Course registration is binding. Upon cancellation more than 8 working days before the course start date, we invoice 50% of the course fee. We invoice the full course fee upon cancellation less than 8 working days before the course start date. Click here to read the full Terms and Conditions!

What payment options are available to pay for this course?

An invoice will be sent to the company or email you specify (post, electronic invoice (EHF) or PDF invoice per email). Your submitted details (company, address, reference numbers, etc.) will be entered in the invoice. For companies that prefers paying with credit card a payment link will be available to complete the purchase.

What are the payment terms?

Alfasoft payment terms for invoices are 21 calendar days.

Who is Alfasoft?

The Herb Sutter Effective Concurrency Training is arranged in cooperation with Alfasoft. Alfasoft has more than 25 years of experience offering licenses, customised trainings and support all over Europe. Alfasoft has arranged multiple trainings with Herb Sutter in the past.

DATE AND TIME

22-25th April 2024, between 14.00 – 18.00 CEST daily.

The Effective Concurrency with Herb Sutter course is online over four half-days, using a selected video conferencing platform.

PRICE

2,295.00 Euro/ 1,995.00 GBP / 2,495.00 USD +VAT

REGISTRATION FORM

Herb Sutter Event Registration Form