Differentiable Programming in C++ - Vassil Vassilev & William Moses - CppCon 2021
https://cppcon.org/ https://github.com/CppCon/CppCon2021 --- Mathematical derivatives are vital components of many computing algorithms including: neural networks, numerical optimization, Bayesian inference, nonlinear equation solvers, physics simulations, sensitivity analysis, and nonlinear inverse problems. Derivatives track the rate of change of an output parameter with respect to an input parameter, such as how much reducing an individuals’ carbon footprint will impact the Earth’s temperature. Derivatives (and generalizations such as gradients, jacobians, hessians, etc) allow us to explore the properties of a function and better describe the underlying process as a whole. In recent years, the use of gradient-based optimizations such as training neural networks have become widespread, leading to many languages making differentiation a first-class citizen. Derivatives can be computed numerically, but unfortunately the accumulation of floating-point errors and high-computational complexity presents several challenges. These problems become worse with higher order derivatives and more parameters to differentiate. Many derivative-based algorithms require gradients, or the computation of the derivative of an output parameter with respect to many input parameters. As such, developing techniques for computing gradients that are scalable in the number of input parameters is crucial for the performance of such algorithms. This paper describes a broad set of domains where scalable derivative computations are essential. We make an overview of the major techniques in computing derivatives, and finally, we introduce the flagman of computational differential calculus -- algorithmic (also known as automatic) differentiation (AD). AD makes clever use of the ‘nice’ mathematical properties of the chained rule and generative programming to solve the scalability issues by inverting the dependence on the number of input variables to the number of output variables. AD provides mechanisms to augment the regular function computation with instructions calculating its derivatives. Differentiable programming is a programming paradigm in which the programs can be differentiated throughout, usually via automatic differentiation. This talk introduces the differentiable programming paradigm in terms of C++. It shows its applications in science as applicable for data science and industry. The authors make an overview of the existing tools in the area and the two common implementation approaches -- template metaprogramming and custom parsers. We demonstrate implementation pros and cons and propose compiler toolchain-based implementation either in clang AST or LLVM IR. We would like to briefly outline our current efforts in standardization of that feature. --- Vassil Vassilev & William Moses --- Work at Hudson River Trading (HRT): https://tinyurl.com/safxfctf --- Videos Streamed & Edited by Digital Medium: http://online.digital-medium.co.uk *--*

Code Analysis++ - Anastasia Kazakova - CppCon 2021

If Prime Numbers Become Increasingly Rare, Then Why Do They Keep Showing Up In Pairs?

Your New Mental Model of constexpr - Jason Turner - CppCon 2021

Back to Basics: Lambdas - Nicolai Josuttis - CppCon 2021

Why Aliens Would NEVER Invade Africa

C++ cache locality and branch predictability

Andrej Karpathy: From Vibe Coding to Agentic Engineering w/ Stephanie Zhan

Man with suspended licence joins court call while driving

FIFA World Cup Uncut | 8 Minutes of Unforgettable Madness | Brazil vs Germany (2014 Semi-Final)

You're Doing Push-Ups Wrong... This Is Why You're Not Getting Stronger

Why The Russian Accent Terrifies Everyone

Ex-Google Recruiter Explains Why "Lying" Gets You Hired

EEVblog 1752 - Texas Instruments SCREWED UP the NE5532!

How to Answer ANY Question (Even If You Don't Know The Answer!)

Conan O’Brien Delivers the Commencement Address | Harvard Commencement 2026

Branchless Programming in C++ - Fedor Pikus - CppCon 2021

Back to Basics: Designing Classes (part 1 of 2) - Klaus Iglberger - CppCon 2021

Learn How Your Brain Works in 10 Minutes

Modern CMake Modules - Bret Brown - CppCon 2021

