• Stars
    star
    409
  • Rank 102,508 (Top 3 %)
  • Language
    Julia
  • License
    Other
  • Created over 5 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

forward and reverse mode automatic differentiation primitives for Julia Base + StdLibs

ChainRules

CI Travis Coveralls PkgEval Code Style: Blue ColPrac: Contributor's Guide on Collaborative Practices for Community Packages DOI

Docs:

The ChainRules package provides a variety of common utilities that can be used by downstream automatic differentiation (AD) tools to define and execute forward-, reverse-, and mixed-mode primitives.

The core logic of ChainRules is implemented in ChainRulesCore.jl. To add ChainRules support to your package, by defining new rrules or frules, you only need to depend on the very light-weight package ChainRulesCore.jl. This repository contains ChainRules.jl, which is what people actually use directly. ChainRules reexports all the ChainRulesCore functionality, and has all the rules for the Julia standard library.

Here are some of the core features of the package:

  • Mixed-mode composability without being coupled to a specific AD implementation.
  • Extensible rules: package authors can add rules (and thus AD support) to the functions in their packages, without needing to make a PR to ChainRules.jl .
  • Control-inverted design: rule authors can fully specify derivatives in a concise manner that supports computational efficiencies, so we will only compute as much as the user requests.
  • Propagation semantics built-in, with default implementations that allow rule authors to easily opt-in to common optimizations (fusion, increment elision, memoization, etc.).

More Repositories

1

ForwardDiff.jl

Forward Mode Automatic Differentiation for Julia
Julia
844
star
2

BlueStyle

A Julia style guide that lives in a blue world
469
star
3

Diffractor.jl

Next-generation AD
Julia
427
star
4

ReverseDiff.jl

Reverse Mode Automatic Differentiation for Julia
Julia
333
star
5

TaylorSeries.jl

Taylor polynomial expansions in one and several independent variables.
Julia
308
star
6

FiniteDifferences.jl

High accuracy derivatives, estimated via numerical finite differences (formerly FDM.jl)
Julia
282
star
7

ChainRulesCore.jl

AD-backend agnostic system defining custom forward and reverse mode rules. This is the light weight core to allow you to define rules for your functions in your packages, without depending on any particular AD system.
Julia
243
star
8

SparseDiffTools.jl

Fast jacobian computation through sparsity exploitation and matrix coloring
Julia
232
star
9

FiniteDiff.jl

Fast non-allocating calculations of gradients, Jacobians, and Hessians with sparsity support
Julia
227
star
10

AbstractDifferentiation.jl

An abstract interface for automatic differentiation.
Julia
135
star
11

DualNumbers.jl

Julia package for representing dual numbers and for performing dual algebra
Julia
78
star
12

DiffRules.jl

A simple shared suite of common derivative definitions
Julia
73
star
13

TaylorDiff.jl

Taylor-mode automatic differentiation for higher-order derivatives
Julia
62
star
14

Capstan.jl

A Cassette-based automatic differentiation package for the Julia language
Julia
56
star
15

ChainRulesTestUtils.jl

Utilities for testing custom AD primitives.
Julia
48
star
16

HyperDualNumbers.jl

Julia implementation of HyperDualNumbers
Julia
40
star
17

DiffResults.jl

A package which provides an API for querying differentiation results at multiple orders simultaneously
Julia
33
star
18

PolyesterForwardDiff.jl

Julia
27
star
19

DiffTests.jl

A common suite of test functions for stressing the robustness of differentiation tools.
Julia
12
star
20

juliadiff.github.io

JavaScript
11
star
21

DocThemeIndigo.jl

The Documenter Theme for the ChainRules family of packages. But you can use it too
SCSS
7
star
22

ChainRulesOverloadGeneration.jl

Tools to help generate operator overloads based on ChainRules
Julia
4
star
23

ChainRulesDeclarationHelpers.jl

Helpers for declaring ChainRules
Julia
1
star