Set the IR's valid worlds to only the interpreter world#832
Conversation
|
Mooncake.jl documentation for PR #832 is available at: |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
|
Performance Ratio: |
|
Here are some 1.12 benchmark results: (with only the Mooncake backend) So this looks reasonable |
|
Just ran the same benchmarks as above, but on both this branch and the base branch of base: Seems good to me. |
mhauru
left a comment
There was a problem hiding this comment.
Looks all good as far as I can see.
47e383a
into
copilot/fix-521d0edf-b6f3-4f8f-810a-9b67505eccca
* 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>
Hopefully means that we don't need the optimize_OC workaround.