Dynamically Bypass CUDA.jl for non-gpu machine

Hello,

I have different src files which I collect them inside a single module by calling include(../src/X.jl.). The problem is that one of the src files is using CUDA.jl and when a non gpu machine tries to call that src file, by calling using .MyModule, the compiler yells for obvious reasons.

I wonder if there is a way to dynamically by pass the using CUDA on a non gpu machine.

B.R.

p.s. By the way the functions are parametric so they can accept both CuArrays, and CPU arrays.

You shouldn’t be performing CUDA operations globally, then this isn’t a problem. CUDA.jl is loadable on machines without a GPU. You can inspect CUDA.functional() to make a run-time decision, see Conditional use · CUDA.jl

Thank you for the docs. I think that the problem raises because of the computer that I am using which is M1 based MacBook. I cannot import the CUDA.jl hence I cannot check the CUDA.functional() method.

Am I right ?

Why not? Please post an error, or additional details.

This is the error that I am getting : Failed to precompile CUDA:

 Info: Precompiling CUDA [052768ef-5323-5732-b1bb-66c8b64840ba]
ERROR: LoadError: InitError: could not load symbol "LLVMExtraInitializeAllTargets":
dlsym(RTLD_DEFAULT, LLVMExtraInitializeAllTargets): symbol not found
Stacktrace:
  [1] LLVMInitializeAllTargets
    @ ~/.julia/packages/LLVM/srSVa/lib/libLLVM_extra.jl:10 [inlined]
  [2] InitializeAllTargets
    @ ~/.julia/packages/LLVM/srSVa/src/init.jl:58 [inlined]
  [3] __init__()
    @ GPUCompiler ~/.julia/packages/GPUCompiler/XwWPj/src/GPUCompiler.jl:50
  [4] _include_from_serialized(path::String, depmods::Vector{Any})
    @ Base ./loading.jl:768
  [5] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String)
    @ Base ./loading.jl:854
  [6] _require(pkg::Base.PkgId)
    @ Base ./loading.jl:1097
  [7] require(uuidkey::Base.PkgId)
    @ Base ./loading.jl:1013
  [8] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:997
  [9] include
    @ ./Base.jl:417 [inlined]
 [10] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::Nothing)
    @ Base ./loading.jl:1318
 [11] top-level scope
    @ none:1
 [12] eval
    @ ./boot.jl:373 [inlined]
 [13] eval(x::Expr)
    @ Base.MainInclude ./client.jl:453
 [14] top-level scope
    @ none:1
during initialization of module GPUCompiler
in expression starting at /Users/kadirgunel/.julia/packages/CUDA/M4jkK/src/CUDA.jl:1
ERROR: Failed to precompile CUDA [052768ef-5323-5732-b1bb-66c8b64840ba] to /Users/kadirgunel/.julia/compiled/v1.7/CUDA/jl_6puxtK.
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:33
 [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
   @ Base ./loading.jl:1466
 [3] compilecache(pkg::Base.PkgId, path::String)
   @ Base ./loading.jl:1410
 [4] _require(pkg::Base.PkgId)
   @ Base ./loading.jl:1120
 [5] require(uuidkey::Base.PkgId)
   @ Base ./loading.jl:1013
 [6] require(into::Module, mod::Symbol)
   @ Base ./loading.jl:997

Try upgrading your packages. Julia 1.7 requires LLVM.jl 4.0 or higher.

1 Like

There was a conflict between UMAP.jl and CUDA.jl. UMAP requires to use llvm 3.9.0 which automatically downgrades the CUDA.jl to v2.6.3. After removing UMAP it is now working.

Thank you.

But what should I do if I have to use both UMAP and CUDA.jl in the same file ? Is there any solution ?

Great! Could you post the actual conflict? I don’t immediately see a dependency that should hold CUDA or LLVM back.

Sure. When I try to add UMAP after CUDA.jl. It automatically downgrades CUDA

(@v1.7) pkg> add UMAP
    Updating registry at `~/.julia/registries/General.toml`
   Resolving package versions...
    Updating `~/.julia/environments/v1.7/Project.toml`
  [052768ef] ↓ CUDA v3.4.1 ⇒ v2.6.3
  [c4f8c510] + UMAP v0.1.8
    Updating `~/.julia/environments/v1.7/Manifest.toml`
  [ec485272] + ArnoldiMethod v0.1.0
  [7d9fca2a] + Arpack v0.4.0
  [052768ef] ↓ CUDA v3.4.1 ⇒ v2.6.3
  [bbf7d656] + CommonSubexpressions v0.3.0
  [163ba53b] + DiffResults v1.0.3
  [b552c78f] + DiffRules v1.3.0
  [31c24e10] + Distributions v0.23.11
  [1a297f60] + FillArrays v0.9.7
  [6a86dc24] + FiniteDiff v2.8.1
  [f6369f11] + ForwardDiff v0.10.19
  [0c68f7d7] ↓ GPUArrays v8.0.2 ⇒ v6.4.1
  [61eb1bfa] ↓ GPUCompiler v0.12.9 ⇒ v0.10.0
  [d25df0c9] + Inflate v0.1.2
  [92d709cd] - IrrationalConstants v0.1.0
  [929cbde3] ↓ LLVM v4.2.0 ⇒ v3.9.0
  [093fc24a] + LightGraphs v1.3.5
  [2ab3a3ac] ↓ LogExpFunctions v0.3.0 ⇒ v0.2.5
  [2fda8390] + LsqFit v0.11.0
  [c03570c3] + Memoize v0.4.4
  [d41bc354] + NLSolversBase v7.8.1
  [872c559c] + NNlib v0.7.28
  [77ba4419] + NaNMath v0.3.5
  [dd2c4c9e] + NearestNeighborDescent v0.3.4
  [87e2bd06] + OptimBase v2.0.2
  [90014a1f] + PDMats v0.10.1
  [1fd47b50] + QuadGK v2.4.1
  [74087812] - Random123 v1.4.2
  [e6cf234a] - RandomNumbers v1.5.3
  [79098fc4] + Rmath v0.7.0
  [6c6a2e73] + Scratch v1.1.0
  [699a6c99] + SimpleTraits v0.9.4
  [276daf66] ↓ SpecialFunctions v1.6.1 ⇒ v0.10.3
  [90137ffa] + StaticArrays v1.2.12
  [4c63d2b9] + StatsFuns v0.9.8
  [c4f8c510] + UMAP v0.1.8
  [68821587] + Arpack_jll v3.5.0+3
  [dad2f222] - LLVMExtra_jll v0.0.9+0
  [f50d1b31] + Rmath_jll v0.3.0+0
  [4607b0f0] + SuiteSparse
Precompiling project...
  ✗ CUDA
  13 dependencies successfully precompiled in 10 seconds (117 already precompiled)
  1 dependency errored. To see a full report either run `import Pkg; Pkg.precompile()` or load the package

What if you then to an ] add CUDA@3.4.1? That should show an error.

You mean installing first CUDA then UMAP? Or vice versa ?
For both cases it still downgrades.

(@v1.7) pkg> add UMAP
   Resolving package versions...
    Updating `~/.julia/environments/v1.7/Project.toml`
  [052768ef] ↓ CUDA v3.4.1 ⇒ v2.6.3
  [c4f8c510] + UMAP v0.1.8
    Updating `~/.julia/environments/v1.7/Manifest.toml`
  [ec485272] + ArnoldiMethod v0.1.0
  [7d9fca2a] + Arpack v0.4.0
  [4fba245c] ↓ ArrayInterface v3.1.23 ⇒ v3.1.17
  [052768ef] ↓ CUDA v3.4.1 ⇒ v2.6.3
  [bbf7d656] + CommonSubexpressions v0.3.0
  [163ba53b] + DiffResults v1.0.3
  [b552c78f] + DiffRules v1.3.0
  [31c24e10] + Distributions v0.23.11
  [1a297f60] + FillArrays v0.9.7
  [6a86dc24] + FiniteDiff v2.8.1
  [f6369f11] + ForwardDiff v0.10.19
  [0c68f7d7] ↓ GPUArrays v8.0.2 ⇒ v6.4.1
  [61eb1bfa] ↓ GPUCompiler v0.12.9 ⇒ v0.10.0
  [d25df0c9] + Inflate v0.1.2
  [92d709cd] - IrrationalConstants v0.1.0
  [929cbde3] ↓ LLVM v4.2.0 ⇒ v3.9.0
  [093fc24a] + LightGraphs v1.3.5
  [2ab3a3ac] ↓ LogExpFunctions v0.3.0 ⇒ v0.2.5
  [2fda8390] + LsqFit v0.11.0
  [c03570c3] + Memoize v0.4.4
  [d41bc354] + NLSolversBase v7.8.1
  [872c559c] + NNlib v0.7.28
  [77ba4419] + NaNMath v0.3.5
  [dd2c4c9e] + NearestNeighborDescent v0.3.4
  [87e2bd06] + OptimBase v2.0.2
  [90014a1f] + PDMats v0.10.1
  [1fd47b50] + QuadGK v2.4.1
  [74087812] - Random123 v1.4.2
  [e6cf234a] - RandomNumbers v1.5.3
  [189a3867] ↓ Reexport v1.1.0 ⇒ v0.2.0
  [79098fc4] + Rmath v0.7.0
  [6c6a2e73] + Scratch v1.1.0
  [699a6c99] + SimpleTraits v0.9.4
  [276daf66] ↓ SpecialFunctions v1.6.1 ⇒ v0.10.3
  [aedffcd0] ↓ Static v0.3.0 ⇒ v0.2.5
  [90137ffa] + StaticArrays v1.2.12
  [4c63d2b9] + StatsFuns v0.9.8
  [c4f8c510] + UMAP v0.1.8
  [68821587] + Arpack_jll v3.5.0+3
  [dad2f222] - LLVMExtra_jll v0.0.9+0
  [f50d1b31] + Rmath_jll v0.3.0+0
  [4607b0f0] + SuiteSparse
Precompiling project...
  ✓ Reexport
  ✓ GPUArrays
  ✓ LLVM
  ✓ GPUCompiler
  ✗ CUDA
  33 dependencies successfully precompiled in 28 seconds (97 already precompiled)
  4 dependencies precompiled but different versions are currently loaded. Restart julia to access the new versions
  1 dependency errored. To see a full report either run `import Pkg; Pkg.precompile()` or load the package

No, after installing UMAP trying to forcibly install a newer CUDA. That should report an error, since it can’t downgrade CUDA then.

Actually it downgrades CUDA.jl. I mean it does not permit . Then the latest version for the registry is converted to 2.6.3. And I cannot do anything. (Please see the next comment by @maleadt )

(@v1.7) pkg> activate --temp
  Activating new project at `/tmp/jl_oKOGwt`

(jl_oKOGwt) pkg> add UMAP

(jl_oKOGwt) pkg> add CUDA@3.4.1
   Resolving package versions...
ERROR: Unsatisfiable requirements detected for package Distributions [31c24e10]:
 Distributions [31c24e10] log:
 ├─possible versions are: 0.16.0-0.25.11 or uninstalled
 ├─restricted by compatibility requirements with LsqFit [2fda8390] to versions: 0.16.0-0.23.12
 │ └─LsqFit [2fda8390] log:
 │   ├─possible versions are: 0.5.0-0.12.1 or uninstalled
 │   └─restricted by compatibility requirements with UMAP [c4f8c510] to versions: 0.6.0-0.11.0
 │     └─UMAP [c4f8c510] log:
 │       ├─possible versions are: 0.1.0-0.1.8 or uninstalled
 │       └─restricted to versions * by an explicit requirement, leaving only versions 0.1.0-0.1.8
 └─restricted by compatibility requirements with SpecialFunctions [276daf66] to versions: 0.24.4-0.25.11 or uninstalled — no versions left
   └─SpecialFunctions [276daf66] log:
     ├─possible versions are: 0.7.0-1.6.1 or uninstalled
     └─restricted by compatibility requirements with CUDA [052768ef] to versions: 1.3.0-1.6.1
       └─CUDA [052768ef] log:
         ├─possible versions are: 0.1.0-3.4.1 or uninstalled
         └─restricted to versions 3.4.1 by an explicit requirement, leaving only versions 3.4.1

Sorry, you are right. I tried this one and forgot about the unsatisfiable requriments issue. Sorry again.

So UMAP should allow LsqFit 0.12 so that Distributions 0.25 can installed in order for SpecialFunctions 1.3+ to be installed which is required by CUDA 3.4. That’s already the case on UMAP#master, so it just needs a tag.

1 Like

I tried UMAP#master and it seems fine until trying to use it :frowning: But they are warnings… a long list of warnings which I cannot fit here.

WARNING: Method definition Type##kw(Any, Type{Base.MPFR.BigFloat}, Base.Irrational{:sqrt2π}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition Type##kw(Any, Type{Base.MPFR.BigFloat}, Base.Irrational{:sqrthalfπ}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition Type##kw(Any, Type{Base.MPFR.BigFloat}, Base.Irrational{:sqrt4π}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition Type##kw(Any, Type{Base.MPFR.BigFloat}, Base.Irrational{:sqrt2}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition Type##kw(Any, Type{Base.MPFR.BigFloat}, Base.Irrational{:fourπ}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition Type##kw(Any, Type{Base.MPFR.BigFloat}, Base.Irrational{:quartπ}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition Type##kw(Any, Type{Base.MPFR.BigFloat}, Base.Irrational{:fourinvπ}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:quartπ}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:inv2π}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:inv4π}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:twoπ}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:sqrtπ}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:invsqrt2π}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:fourinvπ}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:loghalf}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:halfπ}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:log4π}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:log2π}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:invπ}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:twoinvπ}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:invsqrt2}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:sqrt3}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:logtwo}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:logπ}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:sqrt2π}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:sqrthalfπ}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:sqrt4π}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:sqrt2}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Float64})(Base.Irrational{:fourπ}) in module IrrationalConstants at irrationals.jl:191 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:twoπ}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:inv4π}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:loghalf}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:inv2π}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:sqrtπ}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:invsqrt2π}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:log4π}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:halfπ}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:invsqrt2}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:log2π}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:invπ}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:twoinvπ}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:sqrt3}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:logtwo}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:logπ}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:sqrt2π}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:sqrthalfπ}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:sqrt4π}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:sqrt2}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:fourπ}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:quartπ}) in module IrrationalConstants at irrationals.jl:182 overwritten in module StatsFuns on the same line (check for duplicate calls to `include`).
  ** incremental compilation may be fatally broken for this module **

WARNING: Method definition (::Type{Base.MPFR.BigFloat})(Base.Irrational{:fourinvπ}) in module 


That might be WARNING: Method definition overwritten on the same line · Issue #41463 · JuliaLang/julia · GitHub. It probably doesn’t affect execution.

It seems not actually :slight_smile: But throws :libarpack error

 model = UMAP_(X, 2)
┌ Info: UndefVarError(:libarpack)
└ Error encountered in spectral_layout; defaulting to random layout
UMAP_{Float64, SparseArrays.SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Matrix{Float64}, Matrix{Int64}, Matrix{Float64}}
(sparse([4, 12, 20, 23, 30, 31, 35, 45, 48, 51  …  28, 41, 46, 51, 53, 58, 59, 62, 72, 86], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1  …  100, 100, 100, 100, 100, 100, 100, 100, 100, 100], [0.9630385103605522, 
0.4185114855082633, 0.22886969633646517, 1.0, 0.3605469021195221, 0.12499198923361883, 0.28751862097003483, 0.5122382678438262, 0.8276845672568386, 0.17940730515075667  …  
0.19009824361868283, 0.11617434711779781, 0.7255051572015395, 0.33784431565286327, 0.11087022129402012, 0.07600870346717767, 0.07601003265757324, 1.0, 0.09665183796175732, 0.9736304780058742], 100, 100), [-3.116806842083979 -2.294093021226346 … -3.403302029175394 -0.2782654531132853; 0.27439384505102105 0.8319499198361535 … 1.568519192940466 2.2784591626583444], [0.15719896845561554 0.6506349530940057 … 0.019043941337944514 0.8039315468522632; 0.9688838728116816 0.29053419281007853 … 0.46522976484659284 0.1918192953515161; … ; 0.7007534510922573 0.42292878211163343 … 0.7996354640189274 0.8237230536024235; 0.0914999889373036 0.5596758540078647 … 0.6446195449495695 0.5690312724538823], [66 91 … 45 62; 77 84 … 85 86; … ; 48 15 … 77 6; 90 12 … 69 14], [1.0499151394273702 1.3395767079919159 … 1.2753260964195485 1.3982071006478856; 1.1346705119613134 1.5069449698849802 … 1.3353806176953993 1.4014881183396164; … ; 1.490243347891485 1.6234858955225095 … 1.4855675485142983 1.6879755329003454; 1.511826313347642 1.6306690933221684 … 1.5053405520740075 1.6961309398895679])