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.

https://github.com/JuliaPackaging/Requires.jl

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 https://juliagpu.gitlab.io/CUDA.jl/installation/conditional/

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 https://github.com/JuliaLang/julia/issues/41463. 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])