• Stars
    star
    435
  • Rank 100,085 (Top 2 %)
  • Language
    Julia
  • License
    Other
  • Created almost 6 years ago
  • Updated about 2 months 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
867
star
2

BlueStyle

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

Diffractor.jl

Next-generation AD
Julia
433
star
4

ReverseDiff.jl

Reverse Mode Automatic Differentiation for Julia
Julia
348
star
5

TaylorSeries.jl

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

FiniteDifferences.jl

High accuracy derivatives, estimated via numerical finite differences (formerly FDM.jl)
Julia
299
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
255
star
8

FiniteDiff.jl

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

SparseDiffTools.jl

Fast jacobian computation through sparsity exploitation and matrix coloring
Julia
237
star
10

AbstractDifferentiation.jl

An abstract interface for automatic differentiation.
Julia
136
star
11

DualNumbers.jl

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

DiffRules.jl

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

TaylorDiff.jl

Taylor-mode automatic differentiation for higher-order derivatives
Julia
67
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
50
star
16

HyperDualNumbers.jl

Julia implementation of HyperDualNumbers
Julia
42
star
17

DiffResults.jl

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

PolyesterForwardDiff.jl

Julia
29
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
8
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