Skip to content

Reported cycles are inaccurate #6

@topolarity

Description

@topolarity

In an environment with AMDGPU and Tracker, this package reports strange cycles where a parent depends on its extension instead of the other way around:

julia> using EnvironmentGraph

julia> g = EnvironmentGraph.environment_graph("/var/folders/n6/98_7bm0j0hb57zv3l3tj8sxh0000gn/T/jl_Wpb9Xm/");

julia> EnvironmentGraph.print_cycles(g)
StrideArraysCore -> LayoutPointers -> ArrayInterface -> ArrayInterfaceTrackerExt -> Tracker -> NNlib -> NNlibAMDGPUExt -> AMDGPU -> AcceleratedKernels -> Polyester
StrideArraysCore -> LayoutPointers -> StaticArrayInterface -> ArrayInterface -> ArrayInterfaceTrackerExt -> Tracker -> NNlib -> NNlibAMDGPUExt -> AMDGPU -> AcceleratedKernels -> Polyester
StrideArraysCore -> ArrayInterface -> ArrayInterfaceTrackerExt -> Tracker -> NNlib -> NNlibAMDGPUExt -> AMDGPU -> AcceleratedKernels -> Polyester
StrideArraysCore -> StaticArrayInterface -> ArrayInterface -> ArrayInterfaceTrackerExt -> Tracker -> NNlib -> NNlibAMDGPUExt -> AMDGPU -> AcceleratedKernels -> Polyester
StrideArraysCore -> CloseOpenIntervals -> StaticArrayInterface -> ArrayInterface -> ArrayInterfaceTrackerExt -> Tracker -> NNlib -> NNlibAMDGPUExt -> AMDGPU -> AcceleratedKernels -> Polyester
ArrayInterface -> ArrayInterfaceTrackerExt -> Tracker -> NNlib -> NNlibAMDGPUExt -> AMDGPU -> AcceleratedKernels -> Polyester
ArrayInterface -> ArrayInterfaceTrackerExt -> Tracker -> NNlib -> NNlibAMDGPUExt -> AMDGPU -> AcceleratedKernels -> Polyester -> StaticArrayInterface

None of these "cycles" are the one reported by Base:

┌ Warning: Circular dependency detected. Precompilation will be skipped for:
│   Base.PkgId(Base.UUID("eb0c05c4-6780-5852-a67e-5d31d2970b9a"), "ArrayInterfaceTrackerExt")
│   Base.PkgId(Base.UUID("f517fe37-dbe3-4b94-8317-1923a5111588"), "Polyester")
│   Base.PkgId(Base.UUID("0d7ed370-da01-4f52-bd93-41d350b8b718"), "StaticArrayInterface")
│   Base.PkgId(Base.UUID("6a4ca0a5-0e36-4168-a932-d9be78d558f1"), "AcceleratedKernels")
│   Base.PkgId(Base.UUID("244f68ed-b92b-5712-87ae-6c617c41e16a"), "NNlibAMDGPUExt")
│   Base.PkgId(Base.UUID("06b0261c-7a9b-5753-9bdf-fd6840237b4a"), "StaticArrayInterfaceStaticArraysExt")
│   Base.PkgId(Base.UUID("21141c5a-9bdb-4563-92ae-f87d6854732e"), "AMDGPU")
│   Base.PkgId(Base.UUID("9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c"), "Tracker")
└ @ Base.Precompilation precompilation.jl:511

The real "cycle" seen by Base (which is also a bug, see JuliaLang/julia#55910 (comment)) is Tracker → NNlibAMDGPUExt → AMDGPU → AcceleratedKernels → Polyester → StaticArrayInterface → ArrayInterfaceTrackerExt → Tracker

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions