Circular dependency warning

Julia v1.10.7 and v1.11.1 shows circular dependency warning while adding CUDA.jl

┌ Warning: Circular dependency detected. Precompilation will be skipped for:
│   Base.PkgId(Base.UUID("85068d23-b5fb-53f1-8204-05c2aba6942f"), "SparseArraysExt")
│   Base.PkgId(Base.UUID("13011619-4c7c-5ef0-948f-5fc81565cd05"), "AtomixCUDAExt")
│   Base.PkgId(Base.UUID("66d79d19-2cc4-5b0b-ac7a-b340256d1ecd"), "LinearAlgebraExt")
│   Base.PkgId(Base.UUID("63c18a36-062a-441e-b654-da1e3ab1ce7c"), "KernelAbstractions")
│   Base.PkgId(Base.UUID("052768ef-5323-5732-b1bb-66c8b64840ba"), "CUDA")

How to know which package to blame for this and how to prevent that?

7 Likes

In principle you can use GitHub - KristofferC/EnvironmentGraph.jl for this kind of task, but I don’t know how well it works with extensions.

This issue started showing up after updating CUDA.jl.

1 Like

Same here, problem is with new CUDA.jl

1 Like

I’ve been squinting at the project files of the implied packages and can’t really figure out a circular dependency. It looks like these should load in this order ( < > being used to mean start and finish): CUDA< LinearAlgebra< >, SparseArrays< >, KernelAbstractions< Atomix > >, LinearAlgebraExt, SparseArraysExt, AtomixCUDAExt. Is it possible that Pkg misidentifies one in the extensions? Some notes, might be useful:

  • CUDA 5.5.2
    • LinearAlgebra = “1”
    • SparseArrays = “1”
    • KernelAbstractions = “0.9.2”
  • KernelAbstractions 0.9.30
    • Atomix = “0.1, 1”
    • LinearAlgebraExt = “LinearAlgebra”
      • LinearAlgebra = “1.6”
    • SparseArraysExt = “SparseArrays”
      • SparseArrays = “<0.0.1, 1.6”
  • Atomix 1.0.0
    • AtomixCUDAExt = “CUDA”
      • CUDA = “5”
1 Like

I can reply that it has this behaviour for julia-1.10.6 atm. also

This is fixed in Julia 1.11.2 and 1.10.8 (not released yet).

6 Likes

What was the problem, exactly? Just curious. If it’s easier to link the pull request, then that’s cool too.

1 Like

It might be this

2 Likes

Thanks for this quick response!

May I ask what are the plans for the release of 1.10.8?
Unfortunately at the moment (due to company requirements), I’m stuck to LTS Julia, and CUDA.jl is quite critical to my applications.

Alternatively, are there any workarounds to this?

1 Like

You can try reverting the upgrade to Atomix.jl 1.0, e.g., by adding a compat entry to your environment for Atomix 0.1.

2 Likes

Thank you so much, that worked. For the moment that’ll do for me!