# Dynamically Bypass CUDA.jl for non-gpu machine

**URL:** <https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608>\
**Category:** New to Julia\
**Tags:** question, cuda\
**Created:** [August 18, 2021, 3:42pm UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608 "2021-08-18T15:42:52Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![kadir-gunel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kadir-gunel/32/35790_2.png) [@kadir-gunel](https://discourse.julialang.org/u/kadir-gunel)\
**Post date:** [August 18, 2021, 3:42pm UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/1 "2021-08-18T15:42:52Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [August 18, 2021, 3:47pm UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/2 "2021-08-18T15:47:35Z")

</div>

[https://github.com/JuliaPackaging/Requires.jl](https://github.com/JuliaPackaging/Requires.jl)

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [August 19, 2021, 6:04am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/3 "2021-08-19T06:04:24Z")

</div>

> [@kadir-gunel](#):
>
> when a non gpu machine tries to call that src file, by calling ` using .MyModule` , the compiler yells for obvious reasons.

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

---

<div class="post-metadata">

**Author:** ![kadir-gunel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kadir-gunel/32/35790_2.png) [@kadir-gunel](https://discourse.julialang.org/u/kadir-gunel)\
**Post date:** [August 19, 2021, 7:26am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/4 "2021-08-19T07:26:56Z")

</div>

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 ?

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [August 19, 2021, 7:28am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/5 "2021-08-19T07:28:19Z")

</div>

> [@kadir-gunel](#):
>
> I cannot import the CUDA.jl

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

---

<div class="post-metadata">

**Author:** ![kadir-gunel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kadir-gunel/32/35790_2.png) [@kadir-gunel](https://discourse.julialang.org/u/kadir-gunel)\
**Post date:** [August 19, 2021, 7:33am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/6 "2021-08-19T07:33:56Z")

</div>

This is the error that I am getting : _Failed to precompile CUDA_:

```nohighlight
 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

```

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [August 19, 2021, 7:36am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/7 "2021-08-19T07:36:11Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![kadir-gunel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kadir-gunel/32/35790_2.png) [@kadir-gunel](https://discourse.julialang.org/u/kadir-gunel)\
**Post date:** [August 19, 2021, 7:50am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/8 "2021-08-19T07:50:15Z")

</div>

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 ?

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [August 19, 2021, 7:52am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/9 "2021-08-19T07:52:28Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![kadir-gunel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kadir-gunel/32/35790_2.png) [@kadir-gunel](https://discourse.julialang.org/u/kadir-gunel)\
**Post date:** [August 19, 2021, 7:54am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/10 "2021-08-19T07:54:37Z")

</div>

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

```nohighlight
(@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

```

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [August 19, 2021, 7:55am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/11 "2021-08-19T07:55:25Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![kadir-gunel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kadir-gunel/32/35790_2.png) [@kadir-gunel](https://discourse.julialang.org/u/kadir-gunel)\
**Post date:** [August 19, 2021, 7:58am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/12 "2021-08-19T07:58:09Z")

</div>

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

```nohighlight
(@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

```

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [August 19, 2021, 7:58am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/13 "2021-08-19T07:58:45Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![kadir-gunel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kadir-gunel/32/35790_2.png) [@kadir-gunel](https://discourse.julialang.org/u/kadir-gunel)\
**Post date:** [August 19, 2021, 7:59am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/14 "2021-08-19T07:59:14Z")

</div>

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 )

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [August 19, 2021, 8:00am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/15 "2021-08-19T08:00:49Z")

</div>

```julia
(@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

```

---

<div class="post-metadata">

**Author:** ![kadir-gunel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kadir-gunel/32/35790_2.png) [@kadir-gunel](https://discourse.julialang.org/u/kadir-gunel)\
**Post date:** [August 19, 2021, 8:02am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/16 "2021-08-19T08:02:24Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [August 19, 2021, 8:03am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/17 "2021-08-19T08:03:13Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![kadir-gunel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kadir-gunel/32/35790_2.png) [@kadir-gunel](https://discourse.julialang.org/u/kadir-gunel)\
**Post date:** [August 19, 2021, 8:08am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/18 "2021-08-19T08:08:11Z")

</div>

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

```nohighlight
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 

```

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [August 19, 2021, 8:09am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/19 "2021-08-19T08:09:47Z")

</div>

That might be [https://github.com/JuliaLang/julia/issues/41463](https://github.com/JuliaLang/julia/issues/41463). It probably doesn’t affect execution.

---

<div class="post-metadata">

**Author:** ![kadir-gunel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kadir-gunel/32/35790_2.png) [@kadir-gunel](https://discourse.julialang.org/u/kadir-gunel)\
**Post date:** [August 19, 2021, 8:13am UTC](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608/20 "2021-08-19T08:13:12Z")

</div>

It seems not actually 🙂 But throws :libarpack error

```nohighlight
 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])

```

[Next page](https://discourse.julialang.org/t/dynamically-bypass-cuda-jl-for-non-gpu-machine/66608.md?page=2)
