Host JIT segfaults compiling @oneapi in a loop over a tuple of functions
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
Start with the reproducer in the issue: compare the host function’s loop over (max, min) using @oneapi launch=false with the single-launch and top-level-loop cases that work. Then inspect the @oneapi expansion and host compilation path; the report identifies LLVM’s LazyCallGraph as the crash site. Done means the reproducer no longer segfaults, including with launch=false.
索引モデルが issue の本文から書いたものです。
説明
Compiling a host function that launches a kernel inside a loop over a tuple of functions segfaults Julia's JIT, in LLVM's LazyCallGraph while optimizing the host module. It happens with launch=false too, so it's the host code around @oneapi, not the kernel.
using oneAPI
k(dst, op) = (@inbounds dst[1] = op(dst[1], Int16(1)); return)
function f()
for op in (max, min)
d = oneArray(zeros(Int16, 1))
kern = @oneapi launch=false k(d, op)
println(kern)
end
end
f()
[3624266] signal 11 (1): Segmentation fault
in expression starting at seg7.jl:10
_ZN4llvm13LazyCallGraph4Node12populateSlowEv at .../libLLVM.so.18.1jl (unknown line)
_ZN4llvm13LazyCallGraph12buildRefSCCsEv at .../libLLVM.so.18.1jl (unknown line)
_ZN4llvm33ModuleToPostOrderCGSCCPassAdaptor3runERNS_6ModuleERNS_15AnalysisManagerIS1_JEEE at .../libLLVM.so.18.1jl (unknown line)
run at julia/src/pipeline.cpp:741
operator() at julia/src/jitlayers.cpp:1459
addModule at julia/src/jitlayers.cpp:2043
jl_compile_codeinst_now at julia/src/jitlayers.cpp:626
jl_compile_method_internal at julia/src/gf.c:3528
ijl_apply_generic at julia/src/gf.c:4214
- oneAPI 2.9.2 (registered), Julia 1.12.7; also with Julia 1.13.0 (LLVM 20).
- A single launch with
maxin the same kind of function works, as does the loop at top level. - The same code with CUDA.jl (
@cuda launch=false) works, so this looks specific to what@oneapiexpands to. - Iris Xe (i7-1165G7), Linux.
- 主要言語
- Julia
- スター
- 217
- フォーク
- 37
- 平均マージ
- 17時間 9分
- マージ済み PR(30日)
- 28
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
JuliaGPU/oneAPI.jl のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 30/100
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
JuliaGPU/oneAPI.jl#663 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 45/100
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
JuliaGPU/oneAPI.jl#607 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
JuliaGPU/oneAPI.jl の issue をすべて見る
似ている issue
-
documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
ohno/Antique.jl#165 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
grame-cncm/faust#1344 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
SciML/DiffEqNoiseProcess.jl#342 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100