JuliaGPU / oneAPI.jl

Julia support for the oneAPI programming toolkit.
https://juliagpu.org/oneapi/
Other
179 stars 21 forks source link

Windows: first call to `using oneAPI` errors, terminates testing; second call succeeds #448

Closed BenjaminRemez closed 1 month ago

BenjaminRemez commented 1 month ago

The following occurs in an empty environment:

import Pkg; Pkg.status(); # empty package
Pkg.add("oneAPI") # Completes successfully
using oneAPI # fails
using oneAPI # succeeds
A = oneArray(rand(Float32, 10^8));
A .+= 1;
sum(A); # returns ~1.5f8 

Even though the oneAPI seems usable, that the first using oneAPI fails makes ] test oneAPI instantly fail and stop, so I cannot run the remainder of the tests to assess the exact functionality.

The error I obtain during the first using oneAPI is the following:

ERROR: InitError: UndefVarError: `NEO_jll` not defined
Stacktrace:
  [1] __init__()
    @ oneAPI C:\Users\breme\.julia\packages\oneAPI\1GTs3\src\oneAPI.jl:87
  [2] run_module_init(mod::Module, i::Int64)
    @ Base .\loading.jl:1134
  [3] register_restored_modules(sv::Core.SimpleVector, pkg::Base.PkgId, path::String)
    @ Base .\loading.jl:1122
  [4] _include_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String, depmods::Vector{Any})
    @ Base .\loading.jl:1067
  [5] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128)
    @ Base .\loading.jl:1581
  [6] _require(pkg::Base.PkgId, env::String)
    @ Base .\loading.jl:1938
  [7] __require_prelocked(uuidkey::Base.PkgId, env::String)
    @ Base .\loading.jl:1812
  [8] #invoke_in_world#3
    @ .\essentials.jl:926 [inlined]
  [9] invoke_in_world
    @ .\essentials.jl:923 [inlined]
 [10] _require_prelocked(uuidkey::Base.PkgId, env::String)
    @ Base .\loading.jl:1803
 [11] macro expansion
    @ .\loading.jl:1790 [inlined]
 [12] macro expansion
    @ .\lock.jl:267 [inlined]
 [13] __require(into::Module, mod::Symbol)
    @ Base .\loading.jl:1753
 [14] #invoke_in_world#3
    @ .\essentials.jl:926 [inlined]
 [15] invoke_in_world
    @ .\essentials.jl:923 [inlined]
 [16] require(into::Module, mod::Symbol)
    @ Base .\loading.jl:1746
during initialization of module oneAPI

My setup (Intel IRIS integrated graphics):

julia> versioninfo(); oneAPI.versioninfo()
Julia Version 1.10.3
Commit 0b4590a550 (2024-04-30 10:59 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: 8 × Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, icelake-client)
Threads: 1 default, 0 interactive, 1 GC (on 8 virtual cores)
Toolchain:
- Julia: 1.10.3
- LLVM: 15.0.7

1 driver:
- 00000000-0000-0000-003d-229501030000 (v1.3.0, API v1.3.0)

1 device:
- Intel(R) Graphics [0x8a52]
BenjaminRemez commented 1 month ago

Ah, I see this was fixed in the most recent commit fad0f52ad.