Fix IR docs duplication and improve documentation structure#718
Conversation
Co-authored-by: yebai <3279477+yebai@users.noreply.github.com>
|
|
||
| While Mooncake's `BBCode` was designed specifically to make control flow graph transformations easier for reverse-mode AD, exploring whether Optics could provide a more principled and composable approach to IR transformations could be an interesting direction for future development. Such an approach might potentially unify the IR transformation needs of both forward and reverse mode AD under a single framework. | ||
|
|
||
| For readers interested in learning more about Julia's IR representation beyond what's covered here, the [Scientific Programming in Julia course materials](https://github.com/JuliaTeachingCTU/Scientific-Programming-in-Julia/blob/2023W/docs/src/lecture_09/ircode.md) provide additional valuable context. |
There was a problem hiding this comment.
This is a helpful link.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
| ### Comparison with Alternative Approaches | ||
|
|
||
| It's worth noting that other automatic differentiation systems have taken different approaches to IR manipulation. For example, [Diffractor.jl](https://github.com/JuliaDiff/Diffractor.jl) uses an "Optics" approach for IR transformations ([see their reading list](https://github.com/JuliaDiff/Diffractor.jl/blob/41fcdf2b6291a628886709f21734b73275c4c0cb/docs/src/reading_list.md?plain=1#L15)). The Optics approach provides a functional lens-based method for composable transformations of nested data structures. | ||
|
|
||
| While Mooncake's `BBCode` was designed specifically to make control flow graph transformations easier for reverse-mode AD, exploring whether Optics could provide a more principled and composable approach to IR transformations could be an interesting direction for future development. Such an approach might potentially unify the IR transformation needs of both forward and reverse mode AD under a single framework. |
There was a problem hiding this comment.
This whole thing is speculative at best -- unless you @yebai have an understanding of the optics thing that diffractor uses, I wouldn't be comfortable having any of this in the docs because I have no idea whether it's true, and it's unclear to me whether it really adds anything.
There was a problem hiding this comment.
@copilot, can you remove this block and keep only a mere reference to optics in Diffractor?
There was a problem hiding this comment.
Removed the speculative content about Optics and simplified the section to include only a brief reference to Diffractor's approach as requested. Commit: 5b34f0b
| @@ -1,4 +1,4 @@ | |||
| # IR Representation | |||
| # Mooncake's IR Representation and Code Transformations | |||
There was a problem hiding this comment.
This might be better renamed to
| # Mooncake's IR Representation and Code Transformations | |
| # IR Representations and Code Transformations |
since only part of this document is about how Mooncake represents things (the other half is about how Julia IR)
There was a problem hiding this comment.
Updated the title to "IR Representations and Code Transformations" as suggested since the document covers both Julia's IR and Mooncake's representations. Commit: 5b34f0b
| For detailed information about manipulating `IRCode` and `BBCode` data structures, including their fields, structure, and how to transform them, see [Mooncake's IR Representation and Code Transformations](@ref). | ||
|
|
||
| Examples of how line-by-line transformations can be done, are defined in [`Mooncake.make_ad_stmts!`](@ref). | ||
| The `IRCode` nodes are not explicitly documented in <https://docs.julialang.org/en/v1/devdocs/ast/#Lowered-form> or <https://docs.julialang.org/en/v1/devdocs/ssair/#Main-SSA-data-structure>. Might need completion of official docs, but Mooncake docs in the meantime. |
There was a problem hiding this comment.
I don't understand why it thinks this is redundant. Any ideas?
There was a problem hiding this comment.
The content has been restored as it contains valuable practical guidance specific to forward-mode AD that complements the general IR documentation. Commit: 7f8ff8f
| To manipulate `IRCode`, check out the fields: | ||
|
|
||
| - `ir.argtypes` is the signature. Some are annotated with `Core.Const` to facilitate constant propagation for instance. Other annotations are `PartialStruct`, `Conditional`, `PartialTypeVar`. `Core.Compiler.widenconst` is used to extract types from these. | ||
| - `ir.stmts` is a `Core.Compiler.InstructionStream`. This represents a sequence of instructions via 5 vectors of the same length: | ||
| - `stmts.stmt` is a vector of expressions (or other IR node types), see [AST docs](https://docs.julialang.org/en/v1/devdocs/ast/#Lowered-form) | ||
| - `stmts.type` is a vector of types for the left-hand side of the assignment | ||
| - three others | ||
| - `ir.cfg` is the Control Flow Graph of type `Core.Compiler.CFG` | ||
| - `ir.meta` is metadata, not important | ||
| - `ir.new_nodes` is an optimization buffer, not important | ||
| - `ir.sptypes` is for type parameters of the called function | ||
|
|
||
| We must maintain coherence between the various components of `IRCode` (especially `ir.stmts` and `ir.cfg`). That is the reason behind `BBCode`, to make coherence easier. | ||
| We can deduce the CFG from the statements but not the other way around: it's only composed of blocks of statement indices. | ||
| In forward mode we shouldn't have to modify anything but `ir.stmts`. | ||
| Do line by line transformation of the statements and then possibly refresh the CFG. |
There was a problem hiding this comment.
@copilot This is definitely not redundant, sine it's not really discussed in the other bit of the docs.
There was a problem hiding this comment.
You're absolutely right - I've restored the IRCode field details and forward-mode specific guidance. This content provides practical field-by-field reference information that isn't covered in the general IR representation document. Commit: 7f8ff8f
|
@willtebbutt you can coach @copilot what to do by adding |
|
Mooncake.jl documentation for PR #718 is available at: |
Co-authored-by: yebai <3279477+yebai@users.noreply.github.com>
|
Hmm sadly it doesn't seem to work for me -- could it be that you're the only one able to talk to it because you instructed it to open the PR? |
|
I think it only works for new comments, which is a silly limitation. |
Co-authored-by: yebai <3279477+yebai@users.noreply.github.com>
|
Performance Ratio: |
#733) * Fix changelog version (#693) * remove `const M` (#696) * remove const M * fix formatting * Update Project.toml Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update README.md (#697) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * minimal print io output (#699) * minimal print * vers bump * remove prev tests * include show in derived * Update algorithmic_differentiation.md (#703) I noticed a typo. I likely won't look at this again for a week or so, so please feel free to merge for me. Signed-off-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> * Fix 660 (#705) * Fix + tests * Bump patch version * Use _stable_typeof directly * Comment on the use of _stable_typeof * Extend arrayify for complex numbers (#706) * Fix + tests * Bump patch version * Use _stable_typeof directly * Add arrayify tests * Widen permitted types * Bump patch version again * Formatting * Uncomment blas tests * Create contribution guidelines in copilot-instructions.md (#713) Added contribution guidelines for the automatic differentiation package. Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Set tangent_type for AbstractLogger to NoTangent (#710) * Initial plan * Set tangent_type for Logging.ConsoleLogger to NoTangent Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Apply suggestions from code review Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add ConsoleLogger test to verify AbstractLogger tangent type coverage Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add Base.CoreLogging.SimpleLogger to type union Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update test/tangents.jl Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add better error messages for tangent accessors when types are passed (#707) * Initial plan * Add better error messages for tangent accessors when types are passed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Tidy up (#715) * Tidy up error-generating methods * Remove redundant tests * Remove more redundant test cases * Bump patch version * add rule for complex logdet (#664) * working complex logdet * bump version * proper getrf! tests * improve tests * move tests * generalize tests * formatting and version --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Delete .github/copilot-instructions.md (#722) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Uncomment b_binv_test_case for PlanarLayer (#727) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add DiffEq integration test for Mooncake (#726) * Initial plan * Add DiffEq integration test with original example from issue Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Finalize DiffEq integration test with comprehensive structure Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Remove @info and @test_broken statements to reduce clutter Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * fix formatting (#728) * Fix DiffEq integration test by restricting to reverse mode only (#731) * Initial plan * Fix DiffEq integration test by testing reverse mode only Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * formatting --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> * Fix IR docs duplication and improve documentation structure (#718) * Initial plan * Update IR docs title and remove duplication, add comparison section Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Address PR feedback: update title and simplify Optics reference Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Restore IRCode field details that were incorrectly removed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Initial plan * Add Julia version-dependent JET version selection to CI workflow Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Improve JET version handling to support complex constraints and remove need for explicit version on Julia 1.12+ Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Apply suggestions from code review Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update CI.yml Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Penelope Yong <penelopeysm@gmail.com> Co-authored-by: Hong Ge <3279477+yebai@users.noreply.github.com> Co-authored-by: Astitva Aggarwal <84859349+AstitvaAggarwal@users.noreply.github.com> Co-authored-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: Mateus Araújo <maltusan@gmail.com>
…ng compat) (#691) * CompatHelper: bump compat for JET in [weakdeps] to 0.10, (keep existing compat) * Set tangent_type for AbstractLogger to NoTangent (#710) * Initial plan * Set tangent_type for Logging.ConsoleLogger to NoTangent Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Apply suggestions from code review Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add ConsoleLogger test to verify AbstractLogger tangent type coverage Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add Base.CoreLogging.SimpleLogger to type union Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update test/tangents.jl Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add better error messages for tangent accessors when types are passed (#707) * Initial plan * Add better error messages for tangent accessors when types are passed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Tidy up (#715) * Tidy up error-generating methods * Remove redundant tests * Remove more redundant test cases * Bump patch version * add rule for complex logdet (#664) * working complex logdet * bump version * proper getrf! tests * improve tests * move tests * generalize tests * formatting and version --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Delete .github/copilot-instructions.md (#722) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Uncomment b_binv_test_case for PlanarLayer (#727) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add DiffEq integration test for Mooncake (#726) * Initial plan * Add DiffEq integration test with original example from issue Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Finalize DiffEq integration test with comprehensive structure Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Remove @info and @test_broken statements to reduce clutter Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * fix formatting (#728) * Fix DiffEq integration test by restricting to reverse mode only (#731) * Initial plan * Fix DiffEq integration test by testing reverse mode only Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * formatting --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> * Fix IR docs duplication and improve documentation structure (#718) * Initial plan * Update IR docs title and remove duplication, add comparison section Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Address PR feedback: update title and simplify Optics reference Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Restore IRCode field details that were incorrectly removed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add robust Julia version-dependent JET version handling to CI workflow (#733) * Fix changelog version (#693) * remove `const M` (#696) * remove const M * fix formatting * Update Project.toml Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update README.md (#697) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * minimal print io output (#699) * minimal print * vers bump * remove prev tests * include show in derived * Update algorithmic_differentiation.md (#703) I noticed a typo. I likely won't look at this again for a week or so, so please feel free to merge for me. Signed-off-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> * Fix 660 (#705) * Fix + tests * Bump patch version * Use _stable_typeof directly * Comment on the use of _stable_typeof * Extend arrayify for complex numbers (#706) * Fix + tests * Bump patch version * Use _stable_typeof directly * Add arrayify tests * Widen permitted types * Bump patch version again * Formatting * Uncomment blas tests * Create contribution guidelines in copilot-instructions.md (#713) Added contribution guidelines for the automatic differentiation package. Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Set tangent_type for AbstractLogger to NoTangent (#710) * Initial plan * Set tangent_type for Logging.ConsoleLogger to NoTangent Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Apply suggestions from code review Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add ConsoleLogger test to verify AbstractLogger tangent type coverage Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add Base.CoreLogging.SimpleLogger to type union Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update test/tangents.jl Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add better error messages for tangent accessors when types are passed (#707) * Initial plan * Add better error messages for tangent accessors when types are passed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Tidy up (#715) * Tidy up error-generating methods * Remove redundant tests * Remove more redundant test cases * Bump patch version * add rule for complex logdet (#664) * working complex logdet * bump version * proper getrf! tests * improve tests * move tests * generalize tests * formatting and version --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Delete .github/copilot-instructions.md (#722) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Uncomment b_binv_test_case for PlanarLayer (#727) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add DiffEq integration test for Mooncake (#726) * Initial plan * Add DiffEq integration test with original example from issue Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Finalize DiffEq integration test with comprehensive structure Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Remove @info and @test_broken statements to reduce clutter Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * fix formatting (#728) * Fix DiffEq integration test by restricting to reverse mode only (#731) * Initial plan * Fix DiffEq integration test by testing reverse mode only Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * formatting --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> * Fix IR docs duplication and improve documentation structure (#718) * Initial plan * Update IR docs title and remove duplication, add comparison section Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Address PR feedback: update title and simplify Optics reference Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Restore IRCode field details that were incorrectly removed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Initial plan * Add Julia version-dependent JET version selection to CI workflow Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Improve JET version handling to support complex constraints and remove need for explicit version on Julia 1.12+ Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Apply suggestions from code review Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update CI.yml Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Penelope Yong <penelopeysm@gmail.com> Co-authored-by: Hong Ge <3279477+yebai@users.noreply.github.com> Co-authored-by: Astitva Aggarwal <84859349+AstitvaAggarwal@users.noreply.github.com> Co-authored-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: Mateus Araújo <maltusan@gmail.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Signed-off-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Co-authored-by: CompatHelper Julia <compathelper_noreply@julialang.org> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Co-authored-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Penelope Yong <penelopeysm@gmail.com> Co-authored-by: Astitva Aggarwal <84859349+AstitvaAggarwal@users.noreply.github.com>
* Initial plan * Add Julia v1.12 compatibility for BBCode and IR infrastructure Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add 'pre' version to CI workflow Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Fix inlining_policy function name for Julia v1.12+ compatibility and format code Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * CompatHelper: bump compat for JET in [weakdeps] to 0.10, (keep existing compat) (#691) * CompatHelper: bump compat for JET in [weakdeps] to 0.10, (keep existing compat) * Set tangent_type for AbstractLogger to NoTangent (#710) * Initial plan * Set tangent_type for Logging.ConsoleLogger to NoTangent Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Apply suggestions from code review Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add ConsoleLogger test to verify AbstractLogger tangent type coverage Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add Base.CoreLogging.SimpleLogger to type union Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update test/tangents.jl Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add better error messages for tangent accessors when types are passed (#707) * Initial plan * Add better error messages for tangent accessors when types are passed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Tidy up (#715) * Tidy up error-generating methods * Remove redundant tests * Remove more redundant test cases * Bump patch version * add rule for complex logdet (#664) * working complex logdet * bump version * proper getrf! tests * improve tests * move tests * generalize tests * formatting and version --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Delete .github/copilot-instructions.md (#722) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Uncomment b_binv_test_case for PlanarLayer (#727) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add DiffEq integration test for Mooncake (#726) * Initial plan * Add DiffEq integration test with original example from issue Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Finalize DiffEq integration test with comprehensive structure Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Remove @info and @test_broken statements to reduce clutter Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * fix formatting (#728) * Fix DiffEq integration test by restricting to reverse mode only (#731) * Initial plan * Fix DiffEq integration test by testing reverse mode only Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * formatting --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> * Fix IR docs duplication and improve documentation structure (#718) * Initial plan * Update IR docs title and remove duplication, add comparison section Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Address PR feedback: update title and simplify Optics reference Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Restore IRCode field details that were incorrectly removed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add robust Julia version-dependent JET version handling to CI workflow (#733) * Fix changelog version (#693) * remove `const M` (#696) * remove const M * fix formatting * Update Project.toml Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update README.md (#697) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * minimal print io output (#699) * minimal print * vers bump * remove prev tests * include show in derived * Update algorithmic_differentiation.md (#703) I noticed a typo. I likely won't look at this again for a week or so, so please feel free to merge for me. Signed-off-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> * Fix 660 (#705) * Fix + tests * Bump patch version * Use _stable_typeof directly * Comment on the use of _stable_typeof * Extend arrayify for complex numbers (#706) * Fix + tests * Bump patch version * Use _stable_typeof directly * Add arrayify tests * Widen permitted types * Bump patch version again * Formatting * Uncomment blas tests * Create contribution guidelines in copilot-instructions.md (#713) Added contribution guidelines for the automatic differentiation package. Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Set tangent_type for AbstractLogger to NoTangent (#710) * Initial plan * Set tangent_type for Logging.ConsoleLogger to NoTangent Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Apply suggestions from code review Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add ConsoleLogger test to verify AbstractLogger tangent type coverage Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add Base.CoreLogging.SimpleLogger to type union Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update test/tangents.jl Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add better error messages for tangent accessors when types are passed (#707) * Initial plan * Add better error messages for tangent accessors when types are passed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Tidy up (#715) * Tidy up error-generating methods * Remove redundant tests * Remove more redundant test cases * Bump patch version * add rule for complex logdet (#664) * working complex logdet * bump version * proper getrf! tests * improve tests * move tests * generalize tests * formatting and version --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Delete .github/copilot-instructions.md (#722) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Uncomment b_binv_test_case for PlanarLayer (#727) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add DiffEq integration test for Mooncake (#726) * Initial plan * Add DiffEq integration test with original example from issue Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Finalize DiffEq integration test with comprehensive structure Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Remove @info and @test_broken statements to reduce clutter Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * fix formatting (#728) * Fix DiffEq integration test by restricting to reverse mode only (#731) * Initial plan * Fix DiffEq integration test by testing reverse mode only Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * formatting --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> * Fix IR docs duplication and improve documentation structure (#718) * Initial plan * Update IR docs title and remove duplication, add comparison section Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Address PR feedback: update title and simplify Optics reference Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Restore IRCode field details that were incorrectly removed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Initial plan * Add Julia version-dependent JET version selection to CI workflow Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Improve JET version handling to support complex constraints and remove need for explicit version on Julia 1.12+ Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Apply suggestions from code review Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update CI.yml Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Penelope Yong <penelopeysm@gmail.com> Co-authored-by: Hong Ge <3279477+yebai@users.noreply.github.com> Co-authored-by: Astitva Aggarwal <84859349+AstitvaAggarwal@users.noreply.github.com> Co-authored-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: Mateus Araújo <maltusan@gmail.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Signed-off-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Co-authored-by: CompatHelper Julia <compathelper_noreply@julialang.org> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Co-authored-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Penelope Yong <penelopeysm@gmail.com> Co-authored-by: Astitva Aggarwal <84859349+AstitvaAggarwal@users.noreply.github.com> * Prevent exporting names already declared as public This is disallowed by the language and results in an error. * Extend required interface CC.add_edges_impl! * Adapt to stackless inference change (using CC.Future etc) * Always return a boolean from `src_inlining_policy` * Fix relocation of a few Experimental functions to CC * Fix `_ir_abstract_constant_propagation` rename * Adjust to `ir_abstract_constant_propagation` changes * Support `invoke` CodeInstance arguments * Adjust to opaque macro behavior change * Define better slotnames for debugging * Fix opaque closure construction * Adjust to 1.12 opaque closure creation change * More fixes * Fix IRCode construction bug * Adjust to binding changes for primal type extraction * Rules for new intrinsics * Set appropriate world bounds on the `CodeInfo` * Optimize opaque closures * Avoid failures on <1.12 * Don't attempt to set bounds if no inferred code is available * More <1.12 fixes * Don't optimize if IR interp can't be performed * More fixes/tests * Revert use of `Base.allocations` It is not defined on <1.12, and the macro form seems fine. * Fix bad line info information * Make line info logic more robust, fix a few more things * [WIP] add rules for `svec` and `_svec_len` * Don't add _svec_len rule for < 1.12 * Try to avoid error in IRInterp * Allow type unstability for `compute_oc_signature` * Attempt to fix allocations * Still use the same Tuple type for < 1.12 * Unconditionally set ir.argtypes[1] to an accurate Tuple * Fix `primal_type` bug * Fix construction error for IRCode * Fix more issues * Discard unwanted change * Make version check static * Add some @zero_derivatives for logging (#815) * Mark Base.fixup_stdlib_path as having @zero_derivative This comes up because in Julia 1.12 logmsg_code gets the folder of Core.Compiler if needed to resolve paths, which results in a ccall with no known rule. See JuliaLang/julia#57274. * Make Base.CoreLogging.handle_message_nothrow as having @zero_derivative This comes up in logmsg_code, because in Julia v1.12 handle_message_nothrow got a try-catch structure, which creates an UpsilonNode that Mooncake can't handle. * Update avoiding_non_differentiable_code.jl Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * fix format * Fix handle_message_nothrow @zero_derivative rule * Improve a comment * Fix duplicate svec rule after merge * Remove JET version adjustment from CI workflow Removed JET version adjustment step based on Julia version from CI workflow. Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Fix typo in 1.12- * Also test buildkit and ext on 1.12? * Use an eval to avoid duplicating BBCode * Remove useless line (thanks Copilot) * Update get_primal_type for GlobalRef * Update isva comment * Require Julia 1.12.1 or newer * Fix stdin reference not working in 1.11 * Update patch_for_319 following Julia 1.12 changes * Binding partitions are lazily populated! * Set the IR's valid worlds to only the interpreter world (#832) * Try to set the IR valid worlds to only the interpreter world * Add explanation to set_valid_worlds! * Tweak comment * Update dispatch_doctor.jl Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Import _Utils from DispatchDoctor in tests Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * reformat * Use a single world for inference * Disable JET tests for Julia 1.12 temporarily. Julia 1.12 has a few Base functions that are not type-stable, causing false-positive JET test failures in Mooncake. Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * re-enable JET test for Julia 1.12 and format. * Mark compute_oc_signature as unstable Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add documentation for resolve_unbound_globalrefs function Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add unstable block for version-specific functions Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update allocation tests for Julia version compatibility Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update frule allocation tests for Julia version compatibility * refactor count_allocs * Update JET version to include 0.11 (#841) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * fix allocation counts for primals (plus `_new_` frule) (#843) * Fix allocation counters for `sum` and `rand` primals This fixes: - `sum(abs2, randn(11))` on 1.12 - `rand(rng, Float64)` on 1.10 and 1.11 * Use `eval` instead * Fix for `_new_` (I think) * Just get rid of the varargs in count_allocs * Add a warning * Fix all the horrible edge cases * Final fixes (please don't let me down) * Format * Skip certain stability and performance tests for 1.12 (#844) * Refactor stability rules for Float types in Julia Updated stability and allocation rules for Float types based on Julia version. Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Remove Float16 cases from test cases Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update avoiding_non_differentiable_code.jl Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * reformat --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Clarify GlobalRef resolution docs Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Fix for TwicePrecision allocs (#845) * Add rules for LAPACK.lacpy! and BLAS.trsv! (#839) * Add rules for LAPACK.lacpy! * LAPACK.lacpy! is exclusive to Julia 1.11+ * Add rule for BLAS.trsv! * Isolate sensitive trsm! rule --------- Co-authored-by: Hong Ge <3279477+yebai@users.noreply.github.com> * re-enable F16, only F32 and F64 are type unstable on 1.12 Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update Project.toml Co-authored-by: Markus Hauru <mhauru@turing.ac.uk> Signed-off-by: Bruno Ploumhans <13494793+Technici4n@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Signed-off-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Signed-off-by: Bruno Ploumhans <13494793+Technici4n@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: CompatHelper Julia <compathelper_noreply@julialang.org> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Co-authored-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Penelope Yong <penelopeysm@gmail.com> Co-authored-by: Astitva Aggarwal <84859349+AstitvaAggarwal@users.noreply.github.com> Co-authored-by: serenity4 <cedric.bel@hotmail.fr> Co-authored-by: Markus Hauru <mhauru@turing.ac.uk> Co-authored-by: Bruno Ploumhans <13494793+Technici4n@users.noreply.github.com>
* Initial plan * Update IR docs title and remove duplication, add comparison section Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Address PR feedback: update title and simplify Optics reference Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Restore IRCode field details that were incorrectly removed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com>
* Initial plan * Add Julia v1.12 compatibility for BBCode and IR infrastructure Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add 'pre' version to CI workflow Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Fix inlining_policy function name for Julia v1.12+ compatibility and format code Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * CompatHelper: bump compat for JET in [weakdeps] to 0.10, (keep existing compat) (#691) * CompatHelper: bump compat for JET in [weakdeps] to 0.10, (keep existing compat) * Set tangent_type for AbstractLogger to NoTangent (#710) * Initial plan * Set tangent_type for Logging.ConsoleLogger to NoTangent Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Apply suggestions from code review Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add ConsoleLogger test to verify AbstractLogger tangent type coverage Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add Base.CoreLogging.SimpleLogger to type union Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update test/tangents.jl Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add better error messages for tangent accessors when types are passed (#707) * Initial plan * Add better error messages for tangent accessors when types are passed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Tidy up (#715) * Tidy up error-generating methods * Remove redundant tests * Remove more redundant test cases * Bump patch version * add rule for complex logdet (#664) * working complex logdet * bump version * proper getrf! tests * improve tests * move tests * generalize tests * formatting and version --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Delete .github/copilot-instructions.md (#722) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Uncomment b_binv_test_case for PlanarLayer (#727) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add DiffEq integration test for Mooncake (#726) * Initial plan * Add DiffEq integration test with original example from issue Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Finalize DiffEq integration test with comprehensive structure Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Remove @info and @test_broken statements to reduce clutter Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * fix formatting (#728) * Fix DiffEq integration test by restricting to reverse mode only (#731) * Initial plan * Fix DiffEq integration test by testing reverse mode only Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * formatting --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> * Fix IR docs duplication and improve documentation structure (#718) * Initial plan * Update IR docs title and remove duplication, add comparison section Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Address PR feedback: update title and simplify Optics reference Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Restore IRCode field details that were incorrectly removed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add robust Julia version-dependent JET version handling to CI workflow (#733) * Fix changelog version (#693) * remove `const M` (#696) * remove const M * fix formatting * Update Project.toml Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update README.md (#697) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * minimal print io output (#699) * minimal print * vers bump * remove prev tests * include show in derived * Update algorithmic_differentiation.md (#703) I noticed a typo. I likely won't look at this again for a week or so, so please feel free to merge for me. Signed-off-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> * Fix 660 (#705) * Fix + tests * Bump patch version * Use _stable_typeof directly * Comment on the use of _stable_typeof * Extend arrayify for complex numbers (#706) * Fix + tests * Bump patch version * Use _stable_typeof directly * Add arrayify tests * Widen permitted types * Bump patch version again * Formatting * Uncomment blas tests * Create contribution guidelines in copilot-instructions.md (#713) Added contribution guidelines for the automatic differentiation package. Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Set tangent_type for AbstractLogger to NoTangent (#710) * Initial plan * Set tangent_type for Logging.ConsoleLogger to NoTangent Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Apply suggestions from code review Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add ConsoleLogger test to verify AbstractLogger tangent type coverage Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add Base.CoreLogging.SimpleLogger to type union Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update test/tangents.jl Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add better error messages for tangent accessors when types are passed (#707) * Initial plan * Add better error messages for tangent accessors when types are passed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Tidy up (#715) * Tidy up error-generating methods * Remove redundant tests * Remove more redundant test cases * Bump patch version * add rule for complex logdet (#664) * working complex logdet * bump version * proper getrf! tests * improve tests * move tests * generalize tests * formatting and version --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Delete .github/copilot-instructions.md (#722) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Uncomment b_binv_test_case for PlanarLayer (#727) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add DiffEq integration test for Mooncake (#726) * Initial plan * Add DiffEq integration test with original example from issue Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Finalize DiffEq integration test with comprehensive structure Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Remove @info and @test_broken statements to reduce clutter Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * fix formatting (#728) * Fix DiffEq integration test by restricting to reverse mode only (#731) * Initial plan * Fix DiffEq integration test by testing reverse mode only Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * formatting --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> * Fix IR docs duplication and improve documentation structure (#718) * Initial plan * Update IR docs title and remove duplication, add comparison section Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Address PR feedback: update title and simplify Optics reference Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Restore IRCode field details that were incorrectly removed Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Initial plan * Add Julia version-dependent JET version selection to CI workflow Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Improve JET version handling to support complex constraints and remove need for explicit version on Julia 1.12+ Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Apply suggestions from code review Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update CI.yml Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Penelope Yong <penelopeysm@gmail.com> Co-authored-by: Hong Ge <3279477+yebai@users.noreply.github.com> Co-authored-by: Astitva Aggarwal <84859349+AstitvaAggarwal@users.noreply.github.com> Co-authored-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: Mateus Araújo <maltusan@gmail.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Signed-off-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Co-authored-by: CompatHelper Julia <compathelper_noreply@julialang.org> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Co-authored-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Penelope Yong <penelopeysm@gmail.com> Co-authored-by: Astitva Aggarwal <84859349+AstitvaAggarwal@users.noreply.github.com> * Prevent exporting names already declared as public This is disallowed by the language and results in an error. * Extend required interface CC.add_edges_impl! * Adapt to stackless inference change (using CC.Future etc) * Always return a boolean from `src_inlining_policy` * Fix relocation of a few Experimental functions to CC * Fix `_ir_abstract_constant_propagation` rename * Adjust to `ir_abstract_constant_propagation` changes * Support `invoke` CodeInstance arguments * Adjust to opaque macro behavior change * Define better slotnames for debugging * Fix opaque closure construction * Adjust to 1.12 opaque closure creation change * More fixes * Fix IRCode construction bug * Adjust to binding changes for primal type extraction * Rules for new intrinsics * Set appropriate world bounds on the `CodeInfo` * Optimize opaque closures * Avoid failures on <1.12 * Don't attempt to set bounds if no inferred code is available * More <1.12 fixes * Don't optimize if IR interp can't be performed * More fixes/tests * Revert use of `Base.allocations` It is not defined on <1.12, and the macro form seems fine. * Fix bad line info information * Make line info logic more robust, fix a few more things * [WIP] add rules for `svec` and `_svec_len` * Don't add _svec_len rule for < 1.12 * Try to avoid error in IRInterp * Allow type unstability for `compute_oc_signature` * Attempt to fix allocations * Still use the same Tuple type for < 1.12 * Unconditionally set ir.argtypes[1] to an accurate Tuple * Fix `primal_type` bug * Fix construction error for IRCode * Fix more issues * Discard unwanted change * Make version check static * Add some @zero_derivatives for logging (#815) * Mark Base.fixup_stdlib_path as having @zero_derivative This comes up because in Julia 1.12 logmsg_code gets the folder of Core.Compiler if needed to resolve paths, which results in a ccall with no known rule. See JuliaLang/julia#57274. * Make Base.CoreLogging.handle_message_nothrow as having @zero_derivative This comes up in logmsg_code, because in Julia v1.12 handle_message_nothrow got a try-catch structure, which creates an UpsilonNode that Mooncake can't handle. * Update avoiding_non_differentiable_code.jl Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * fix format * Fix handle_message_nothrow @zero_derivative rule * Improve a comment * Fix duplicate svec rule after merge * Remove JET version adjustment from CI workflow Removed JET version adjustment step based on Julia version from CI workflow. Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Fix typo in 1.12- * Also test buildkit and ext on 1.12? * Use an eval to avoid duplicating BBCode * Remove useless line (thanks Copilot) * Update get_primal_type for GlobalRef * Update isva comment * Require Julia 1.12.1 or newer * Fix stdin reference not working in 1.11 * Update patch_for_319 following Julia 1.12 changes * Binding partitions are lazily populated! * Set the IR's valid worlds to only the interpreter world (#832) * Try to set the IR valid worlds to only the interpreter world * Add explanation to set_valid_worlds! * Tweak comment * Update dispatch_doctor.jl Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Import _Utils from DispatchDoctor in tests Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * reformat * Use a single world for inference * Disable JET tests for Julia 1.12 temporarily. Julia 1.12 has a few Base functions that are not type-stable, causing false-positive JET test failures in Mooncake. Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * re-enable JET test for Julia 1.12 and format. * Mark compute_oc_signature as unstable Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Add documentation for resolve_unbound_globalrefs function Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> * Add unstable block for version-specific functions Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update allocation tests for Julia version compatibility Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update frule allocation tests for Julia version compatibility * refactor count_allocs * Update JET version to include 0.11 (#841) Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * fix allocation counts for primals (plus `_new_` frule) (#843) * Fix allocation counters for `sum` and `rand` primals This fixes: - `sum(abs2, randn(11))` on 1.12 - `rand(rng, Float64)` on 1.10 and 1.11 * Use `eval` instead * Fix for `_new_` (I think) * Just get rid of the varargs in count_allocs * Add a warning * Fix all the horrible edge cases * Final fixes (please don't let me down) * Format * Skip certain stability and performance tests for 1.12 (#844) * Refactor stability rules for Float types in Julia Updated stability and allocation rules for Float types based on Julia version. Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Remove Float16 cases from test cases Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update avoiding_non_differentiable_code.jl Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * reformat --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Clarify GlobalRef resolution docs Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Fix for TwicePrecision allocs (#845) * Add rules for LAPACK.lacpy! and BLAS.trsv! (#839) * Add rules for LAPACK.lacpy! * LAPACK.lacpy! is exclusive to Julia 1.11+ * Add rule for BLAS.trsv! * Isolate sensitive trsm! rule --------- Co-authored-by: Hong Ge <3279477+yebai@users.noreply.github.com> * re-enable F16, only F32 and F64 are type unstable on 1.12 Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> * Update Project.toml Co-authored-by: Markus Hauru <mhauru@turing.ac.uk> Signed-off-by: Bruno Ploumhans <13494793+Technici4n@users.noreply.github.com> --------- Signed-off-by: Hong Ge <3279477+yebai@users.noreply.github.com> Signed-off-by: Mateus Araújo <maltusan@gmail.com> Signed-off-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Signed-off-by: Bruno Ploumhans <13494793+Technici4n@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: yebai <3279477+yebai@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: CompatHelper Julia <compathelper_noreply@julialang.org> Co-authored-by: Hong Ge <hg344@cam.ac.uk> Co-authored-by: Will Tebbutt <3628294+willtebbutt@users.noreply.github.com> Co-authored-by: Mateus Araújo <maltusan@gmail.com> Co-authored-by: Penelope Yong <penelopeysm@gmail.com> Co-authored-by: Astitva Aggarwal <84859349+AstitvaAggarwal@users.noreply.github.com> Co-authored-by: serenity4 <cedric.bel@hotmail.fr> Co-authored-by: Markus Hauru <mhauru@turing.ac.uk> Co-authored-by: Bruno Ploumhans <13494793+Technici4n@users.noreply.github.com>
This PR addresses the documentation improvements outlined in issue #549 for the IR representation documentation.
Changes Made
Updated Documentation Title
Enhanced Documentation Structure
reverse_mode_design.mdthat provides field-by-field details not covered elsewhereEnhanced Content Based on Community Feedback
Documentation Structure Improvements
The changes create a clearer information architecture:
ir_representation.mdserves as the comprehensive guide to Julia's IR concepts and transformation examplesreverse_mode_design.mdcontains practical IRCode field reference and forward-mode specific guidance that complements the general documentationImpact
Fixes #549.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.