Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Wct/refactor api and ad implementation (#121)
* Separate forwards- and reverse-data * Move low level maths rules over to new system * Extend tuple_map to handle named tuples * Get most builtins working * Fix low_level_maths rules * Excise register-related code * Excise more register-related code * Include interpreter code for now * Single block code works + remove redundant stacks * Add function to get phi nodes from bbcode * Add online type checking functionality * Improve safety error messages * Remove redundant stack code * Fix phi_nodes bbcode function * Safety checks in test utils * Add reflection to utils * Some work * Tweaks * Improve cos and sin rules * Incorporate test from slack * Move generic functionality from tangnets to utils and document * Add tests to code move to utils from tangents * Remove redundant function * Don't run performance tests in s2s tests * Remove redundant code * Remove redundant code * Remove commented out code * Remove redundant code * Reorganise tangents file * Move generic functionality to utils from tangents * Move generic functionality to utils from tangents * Start tidying up tangent test cases * Simplify tangent testing * Test perf for all tangents and fix perf bug * Unify all type testing * Remove redundant test info * Remove redundant alias * Fix comment * Enable more correctness tests * Tidy up test_utils further * Add more tuple tests * Add more tuple test cases * Run fwds_rvs_data tests on all types * Improve fwds and rvs implementation and get all related tests passing * Simplify function names * Rename zero_reverse_data_from_type to zero_rdata_from_type * Rename zero_reverse_data to zero_rdata * Remove redundant code * Get NamedTuples working * Add tests for structs in new * Remove arbitrary limit on number of arguments to _new_ * Formatting * Formatting * Get all existing _new_ tests passing * Newline at end of file * Add remainder of standard tangent test cases to _new_ * Add triangular test cases to new * Remove unused code * Enable more integration tests * Check number of cotangents in safe mode * Tweak error message * Rename safety to safe_mode * Improve comment * Rename safety to safe_mode in runtests * Fix bug in new for partially initialised structs * Require same lengths of args to tuple_map * Improve docstring for tuple_map * Improve docstring * Fix vararg bug * Fix typo in cglobal rule * Split out test types construction * Fix edge case for _new_ rrule * Improve some builtin rules slightly * Use alias for block stack * Active more integration tests * All existing lgetfield tests pass * Support order keyword * Fix up lsetfield * Active more integration tests * Add more test cases to lgetfield * Tidy up lgetfield rrule implementation * Reenable getfield and setfield rules * Fix avoiding_non_diff_code rules * Enable foreigncall stuff * Enable more tests and fix increment perf * Improve arrayref and set -- fix pointerref and set * Sort out more things * Enable all foreigncall tests * Fix safe_mode recursion * Fix safe mode compilation times * Refactor combine_data to binary tangent and tangent_type * Fix increment inference bug * Fix deprecations in benchmarks script * combine_data to tangent and tangent_type * Name zero_rdata_from_type to zero_like_rdata_from_type * Fix dynamic rrule safe mode * Move zero_like_rdata to its own files * Fix zerordata and friends * Include IdDict tests * Move tuple_fill to utils * Fix gemv * Update chainrules macro * Update trmv * Update remainder of blas rules * Update lapack rules * Add additional builtins test * Add NoPullback rule to misc * Add additional options to test utils * Make DimensionMismatch tangent NoTangent * Turn safety off for misc tests * Minor codegen performance tweaks * Reactivate remainder of tests * Fix abstract types * Bump patch * Tweak contributor list * Try running the GC before benchmarking * Update performance bounds * Tweak plotting range * Rename functions * Tidy up safe mode implementation * Improve safe mode * Improve safe mode error messages * Fix rrule for arrayset * Fix pointer fdata type bug * Fix safe_mode tests * Add increment_rdata functionality * Simplify arrayref and pointerref implementations * Simplify lgetfield rrule implementation * Use lazy rdata in getfield * Simplify lsetfield implementation * Remove some specialisation to reduce compile times * Improve codual * Fix tangent_type for Tuple * Fix up iddict tests * Remove GC calls * Loosen performance bounds on some type unstable tests * Hopefully fix allocations in CI * Fix typo * Remove intrinsic test case * Remove redundant code * Fix performance of rdata creation * Remove redundant code and tidy up variable naming * Fix peformance of zero_rdata_from_type * Add regression tests * Fix performance bug * Remove allocation tests which don't make sense * Fix randn_tangent perf and improve test reliability * Add pprof code to turing integration tests * Force inline rules for getfield and setfield * Increased stability for non-literal getfield and setfield * Add signature to type of LazyDerivedRule * Add unique predecessor computation * Reduce block usage * Revert flawed performance fix * Enable all tests * Fix performance regression * Improve arrayref and arrayset performance * Add erfcx rule to special functions ext * Specialised getfield rules for nondifferentiable stuff * Make eltypes non-differentiable * Test type with LazyRZero * Improve pullback codegen for unreachable blocks * Fix test cases * Tangent type for Method is NoTangent * Revert Turing performance test again * Add more lsetfield tests * More tests for lgetfield and bug fix * Add comment noting choice of code layout * Optimise safe mode compile times * Import more things during testing * Make NoPullback use lazy rdata * Support NoRData in instantiate * Preserve NoPullback in RRuleZeroWrapper * Update NoPullback uses to use new version * Reduce problem sizes to make CI happier * Bump Turing compat * Add fast increment_field for homogeneous Tuple types * Optimise for homogeneous tuples * Optimise homogeneous named tuples increment_field * Optimise getfield for homogeneously-typed NamedTuples * Reduce test problem sizes further to reduce CI burden * Add TemporalGPs integration test * Force-inline more things * Ensure to_benchmark is compiled before running the profiler * Check that getfield works with tuple of types * Fix test utils for tuple of types * Add functionality to determine if a node is used * Do not AD getfield when not used * Optimise safe mode * Add getfield regression integration test * Force-inling forwards-pass IR for calls and invokes * Add additional small-union test * Optimise for un-used ssa nodes and things with NoPullback pullbacks * Improve documentation for ADInfo * Document BlockStack const * Improve documentation for ADInfo outer constructors * Improve documentation of misc functions in reverse mode ad transformations * Tidy up RRuleZeroWrapper and ReturnNode * Tidy up gotoifnot implementation * Remove commented-out line of code * Tidy up reverse-mode code further * Explain special handling for unused getfield calls carefully * Add directions to bbcode file * More documentation for reverse-mode * Improve transformation documentation further * Improve fwds_rvs documentation * More informative name than __convert * Improve comment * Rename fwds_codual_type to fcodual_type * Improve unique pred characterisation documentation
- Loading branch information
965b98b
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@JuliaRegistrator register()
965b98b
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Registration pull request created: JuliaRegistries/General/105808
Tip: Release Notes
Did you know you can add release notes too? Just add markdown formatted text underneath the comment after the text
"Release notes:" and it will be added to the registry PR, and if TagBot is installed it will also be added to the
release that TagBot creates. i.e.
To add them here just re-invoke and the PR will be updated.
Tagging
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via: