Skip to content

Simple GEMM fails with oneAPI.jl #504

@foglienimatteo

Description

@foglienimatteo

I get a segmentation fault from a simple matrix multiplication.
I'm working on a PVC, and I tried both with julia 1.10.9 and 1.11.5, same error. Here the MWE:

using oneAPI, Test
const DevFloat=Float64         # I also tried with Float32, same problem
const DevArray=oneAPI.oneArray          # I use this Dev* syntax for portability; same issue without it.
const DevLibrary=oneAPI

###

MLD= 32 # =2^5       # Matrix Linear Dimension

# Attempted MLD numbers that already failed:
#128    # =2^7
#8192   # =2^13
#32768  # =2^15
#21000

m, n, k = MLD, MLD, MLD
α, β = 1.0, 0.0

A = rand(DevFloat, m, k);  #ones(DevFloat, m, k)
B = rand(DevFloat, k, n);  #ones(DevFloat, k, n)
C = rand(DevFloat, m, n);  #zeros(DevFloat, m, n)

dev_A = DevArray(A);
dev_B = DevArray(B);
dev_C = DevArray(C);

dev_R = α * (dev_A * dev_B) + β * dev_C
DevLibrary.synchronize()
R = Array(dev_R)

###

local_R = α * (A * B) + β * C
@test all([isapprox(a, b) for (a,b) in zip(local_R,R)])

and here the complete logs:

Module loaded and MWE complete logs (julia 1.11.5)
di75tom@login22:> module list
Currently Loaded Modulefiles:
 1) stack/24.1.1{arch=auto}   4) intel-mkl/2024.2.1         7) intel-itac/2022.1.0  10) intel-dal/2024.6.0     13) intel-dpct/2024.2.1
 2) intel/2024.2.1            5) intel-inspector/2024.1.0   8) intel-tbb/2021.13.1  11) intel-ippcp/2021.12.1  14) intel-toolkit/2024.2.1
 3) intel-mpi/2021.13.1       6) intel-dnn/2024.2.1         9) intel-ipp/2021.12.1  12) intel-dpl/2022.6.1     15) julia/1.11.5

Key:
auto-loaded  default-version  {variant=value}
di75tom@login22:> julia MWE-crash-oneAPI_modifications.jl

[5070] signal 11 (1): Segmentation fault
in expression starting at /hppfs/work/pr28fa/di75tom/julia_on_phase2/Conference-PASC25_2025-06-16/PASC25_CODE-DPCPP/MWE-crash-oneAPI_modifications.jl:27
_ZN9ur_loader16urAdapterGetInfoEP20ur_adapter_handle_t_17ur_adapter_info_tmPvPm at /dss/dsshome1/08/di75tom/.julia/artifacts/4a18fb08eef19534a609707234107ea4ab173392/lib/./libur_loader.so.0 (unknown line)
urAdapterGetInfo at /dss/dsshome1/08/di75tom/.julia/artifacts/4a18fb08eef19534a609707234107ea4ab173392/lib/./libur_loader.so.0 (unknown line)
_ZZSt9call_onceIZN4sycl3_V16detail2ur12initializeUrEP26ur_loader_config_handle_t_E3$_0JEEvRSt9once_flagOT_DpOT0_ENUlvE0_8__invokeEv at /dss/dsshome1/08/di75tom/.julia/artifacts/4a18fb08eef19534a609707234107ea4ab173392/lib/libsycl.so.8 (unknown line)
__pthread_once_slow at /lib64/libpthread.so.0 (unknown line)
_ZN4sycl3_V16detail2ur9getPluginILNS0_7backendE2EEERKSt10shared_ptrINS1_6pluginEEv at /dss/dsshome1/08/di75tom/.julia/artifacts/4a18fb08eef19534a609707234107ea4ab173392/lib/libsycl.so.8 (unknown line)
_ZN4sycl3_V16detail13make_platformEmNS0_7backendE at /dss/dsshome1/08/di75tom/.julia/artifacts/4a18fb08eef19534a609707234107ea4ab173392/lib/libsycl.so.8 (unknown line)
make_platform<(sycl::_V1::backend)2> at /workspace/x86_64-linux-gnu-libgfortran5-cxx11/destdir/include/sycl/backend.hpp:312 [inlined]
syclPlatformCreate at /workspace/srcdir/oneAPI.jl/deps/src/sycl.cpp:10
syclPlatformCreate at /dss/dsshome1/08/di75tom/.julia/packages/oneAPI/c7eAo/lib/support/liboneapi_support.jl:8 [inlined]
syclPlatform at /dss/dsshome1/08/di75tom/.julia/packages/oneAPI/c7eAo/lib/sycl/SYCL.jl:16 [inlined]
#14 at /dss/dsshome1/08/di75tom/.julia/packages/oneAPI/c7eAo/src/context.jl:75 [inlined]
get! at ./iddict.jl:171
unknown function (ip: 0x153b0b2b091d)
sycl_platform at /dss/dsshome1/08/di75tom/.julia/packages/oneAPI/c7eAo/src/context.jl:74
unknown function (ip: 0x153b0b2b06b2)
sycl_platform at /dss/dsshome1/08/di75tom/.julia/packages/oneAPI/c7eAo/src/context.jl:74
#16 at /dss/dsshome1/08/di75tom/.julia/packages/oneAPI/c7eAo/src/context.jl:81
get! at ./iddict.jl:171
unknown function (ip: 0x153b0b2b048d)
sycl_device at /dss/dsshome1/08/di75tom/.julia/packages/oneAPI/c7eAo/src/context.jl:80 [inlined]
#18 at /dss/dsshome1/08/di75tom/.julia/packages/oneAPI/c7eAo/src/context.jl:87
get! at ./iddict.jl:171
unknown function (ip: 0x153b0b2aff0d)
sycl_context at /dss/dsshome1/08/di75tom/.julia/packages/oneAPI/c7eAo/src/context.jl:86 [inlined]
#20 at /dss/dsshome1/08/di75tom/.julia/packages/oneAPI/c7eAo/src/context.jl:93
get! at ./iddict.jl:171
unknown function (ip: 0x153b0b2af37d)
sycl_queue at /dss/dsshome1/08/di75tom/.julia/packages/oneAPI/c7eAo/src/context.jl:92
unknown function (ip: 0x153b0b2ae9d2)
gemm! at /dss/dsshome1/08/di75tom/.julia/packages/oneAPI/c7eAo/lib/mkl/wrappers_blas.jl:1212
generic_matmatmul! at /dss/dsshome1/08/di75tom/.julia/packages/oneAPI/c7eAo/lib/mkl/linalg.jl:148
generic_matmatmul! at /dss/dsshome1/08/di75tom/.julia/packages/oneAPI/c7eAo/lib/mkl/linalg.jl:123 [inlined]
_mul! at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/LinearAlgebra/src/matmul.jl:287 [inlined]
mul! at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/LinearAlgebra/src/matmul.jl:285 [inlined]
mul! at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/LinearAlgebra/src/matmul.jl:253 [inlined]
* at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/LinearAlgebra/src/matmul.jl:124
unknown function (ip: 0x153b0b2ae706)
jl_apply at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/src/julia.h:2157 [inlined]
do_call at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/src/interpreter.c:126
eval_value at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/src/interpreter.c:223
eval_stmt_value at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/src/interpreter.c:174 [inlined]
eval_body at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/src/interpreter.c:666
jl_interpret_toplevel_thunk at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/src/interpreter.c:824
jl_toplevel_eval_flex at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/src/toplevel.c:943
jl_toplevel_eval_flex at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/src/toplevel.c:886
ijl_toplevel_eval_in at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/src/toplevel.c:994
eval at ./boot.jl:430 [inlined]
include_string at ./loading.jl:2734
_include at ./loading.jl:2794
include at ./Base.jl:557
jfptr_include_46879.1 at /dss/lrzsys/sys/tools/julia_base/julia-1.11.5/lib/julia/sys.so (unknown line)
exec_options at ./client.jl:323
_start at ./client.jl:531
jfptr__start_73430.1 at /dss/lrzsys/sys/tools/julia_base/julia-1.11.5/lib/julia/sys.so (unknown line)
jl_apply at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/src/julia.h:2157 [inlined]
true_main at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/src/jlapi.c:900
jl_repl_entrypoint at /cache/build/tester-amdci5-12/julialang/julia-release-1-dot-11/src/jlapi.c:1059
main at julia (unknown line)
__libc_start_main at /lib64/libc.so.6 (unknown line)
unknown function (ip: 0x4010b8)
Allocations: 6181787 (Pool: 6181487; Big: 300); GC: 7
Segmentation fault

Is this a SYCL problem?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions