Fix from #44 to work with CUDA arrays Does Not Work in Latest Version
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Riproduci l'MWE con Julia 1.11.3, TaylorDiff v0.3.1 e CUDA v5.6.1, quindi ispeziona derivative.jl di TaylorDiff nell'area di make_seed e derivatives. Confronta il comportamento attuale con PR #44 e determina perché il broadcast di CUDA raggiunge una chiamata dinamica non supportata. Il lavoro è completato quando la derivata direzionale mostrata funziona con input CuArray.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Issue: Regression – Fix from #44 Does Not Work in Latest Version
Description
The fix implemented in PR #44 appears to no longer work in the latest version of TaylorDiff.jl.
This MWE:
v, direction = CuArray([0f0, 0f0]), CuArray([1.0f0, 0.0f0])
derivative(x -> sum(exp.(x)), v, direction, 2) # directional derivative
gives:
ERROR: InvalidIRError: compiling MethodInstance for (::GPUArrays.var"#gpu_broadcast_kernel_linear#38")(::KernelAbstractions.CompilerMetadata{…}, ::CuDeviceVector{…}, ::Base.Broadcast.Broadcasted{…}) resulted in invalid LLVM IR
Reason: unsupported dynamic function invocation (call to make_seed)
Stacktrace:
[1] _broadcast_getindex_evalf
@ ./broadcast.jl:678
[2] _broadcast_getindex
@ ./broadcast.jl:651
[3] getindex
@ ./broadcast.jl:610
[4] macro expansion
@ ~/.julia/packages/GPUArrays/Mot2g/src/host/broadcast.jl:54
[5] gpu_broadcast_kernel_linear
@ ~/.julia/packages/KernelAbstractions/mD0Rj/src/macros.jl:97
[6] gpu_broadcast_kernel_linear
@ ./none:0
Hint: catch this exception as `err` and call `code_typed(err; interactive = true)` to introspect the erronous code with Cthulhu.jl
Stacktrace:
[1] check_ir(job::GPUCompiler.CompilerJob{GPUCompiler.PTXCompilerTarget, CUDA.CUDACompilerParams}, args::LLVM.Module)
@ GPUCompiler ~/.julia/packages/GPUCompiler/Nxf8r/src/validation.jl:167
[2] macro expansion
@ ~/.julia/packages/GPUCompiler/Nxf8r/src/driver.jl:382 [inlined]
[3] macro expansion
@ ~/.julia/packages/TimerOutputs/6KVfH/src/TimerOutput.jl:253 [inlined]
[4] macro expansion
@ ~/.julia/packages/GPUCompiler/Nxf8r/src/driver.jl:381 [inlined]
[5]
@ GPUCompiler ~/.julia/packages/GPUCompiler/Nxf8r/src/utils.jl:108
[6] emit_llvm
@ ~/.julia/packages/GPUCompiler/Nxf8r/src/utils.jl:106 [inlined]
[7]
@ GPUCompiler ~/.julia/packages/GPUCompiler/Nxf8r/src/driver.jl:100
[8] codegen
@ ~/.julia/packages/GPUCompiler/Nxf8r/src/driver.jl:82 [inlined]
[9] compile(target::Symbol, job::GPUCompiler.CompilerJob; kwargs::@Kwargs{})
@ GPUCompiler ~/.julia/packages/GPUCompiler/Nxf8r/src/driver.jl:79
[10] compile
@ ~/.julia/packages/GPUCompiler/Nxf8r/src/driver.jl:74 [inlined]
[11] #1147
@ ~/.julia/packages/CUDA/1kIOw/src/compiler/compilation.jl:250 [inlined]
[12] JuliaContext(f::CUDA.var"#1147#1150"{GPUCompiler.CompilerJob{…}}; kwargs::@Kwargs{})
@ GPUCompiler ~/.julia/packages/GPUCompiler/Nxf8r/src/driver.jl:34
[13] JuliaContext(f::Function)
@ GPUCompiler ~/.julia/packages/GPUCompiler/Nxf8r/src/driver.jl:25
[14] compile(job::GPUCompiler.CompilerJob)
@ CUDA ~/.julia/packages/CUDA/1kIOw/src/compiler/compilation.jl:249
[15] actual_compilation(cache::Dict{…}, src::Core.MethodInstance, world::UInt64, cfg::GPUCompiler.CompilerConfig{…}, compiler::typeof(CUDA.compile), linker::typeof(CUDA.link))
@ GPUCompiler ~/.julia/packages/GPUCompiler/Nxf8r/src/execution.jl:237
[16] cached_compilation(cache::Dict{…}, src::Core.MethodInstance, cfg::GPUCompiler.CompilerConfig{…}, compiler::Function, linker::Function)
@ GPUCompiler ~/.julia/packages/GPUCompiler/Nxf8r/src/execution.jl:151
[17] macro expansion
@ ~/.julia/packages/CUDA/1kIOw/src/compiler/execution.jl:380 [inlined]
[18] macro expansion
@ ./lock.jl:273 [inlined]
[19] cufunction(f::GPUArrays.var"#gpu_broadcast_kernel_linear#38", tt::Type{…}; kwargs::@Kwargs{…})
@ CUDA ~/.julia/packages/CUDA/1kIOw/src/compiler/execution.jl:375
[20] macro expansion
@ ~/.julia/packages/CUDA/1kIOw/src/compiler/execution.jl:112 [inlined]
[21] (::KernelAbstractions.Kernel{…})(::CuArray{…}, ::Vararg{…}; ndrange::Tuple{…}, workgroupsize::Nothing)
@ CUDA.CUDAKernels ~/.julia/packages/CUDA/1kIOw/src/CUDAKernels.jl:103
[22] _copyto!
@ ~/.julia/packages/GPUArrays/Mot2g/src/host/broadcast.jl:71 [inlined]
[23] copyto!
@ ~/.julia/packages/GPUArrays/Mot2g/src/host/broadcast.jl:44 [inlined]
[24] copy
@ ~/.julia/packages/GPUArrays/Mot2g/src/host/broadcast.jl:29 [inlined]
[25] materialize
@ ./broadcast.jl:872 [inlined]
[26] broadcast(::typeof(TaylorDiff.make_seed), ::CuArray{…}, ::CuArray{…}, ::Int64)
@ Base.Broadcast ./broadcast.jl:810
[27] make_seed
@ ~/.julia/packages/TaylorDiff/hFSFr/src/derivative.jl:5 [inlined]
[28] derivatives
@ ~/.julia/packages/TaylorDiff/hFSFr/src/derivative.jl:41 [inlined]
[29] derivative(f::Function, x::CuArray{Float32, 1, CUDA.DeviceMemory}, l::CuArray{Float32, 1, CUDA.DeviceMemory}, p::Int64)
@ TaylorDiff ~/.julia/packages/TaylorDiff/hFSFr/src/derivative.jl:17
[30] top-level scope
@ REPL[4]:1
Some type information was truncated. Use `show(err)` to see complete types.
Additional Information
Julia Version: 1.11.3
TaylorDiff Version: v0.3.1
Zygote Version: v0.6.75
CUDA Version v5.6.1
- Lingua principale
- Julia
- Stelle
- 83
- Fork
- 12
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di JuliaDiff/TaylorDiff.jl
-
Ambiguity with forwarddiff ?Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
JuliaDiff/TaylorDiff.jl#103 · 6 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
JuliaDiff/TaylorDiff.jl#102 · 3 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
JuliaDiff/TaylorDiff.jl#99 · 3 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
JuliaDiff/TaylorDiff.jl#95 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
JuliaDiff/TaylorDiff.jl#92 · 1 commento ·
Tutte le issue di JuliaDiff/TaylorDiff.jl
Issue simili
-
enhancement good first issue help wanted
Difficoltà 2/5 Mezza giornata Idoneità per principianti 82/100
-
authority-vechtstromen ready-for-agent
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
Deltares/Ribasim-NL#890 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Precompilation fails on Julia 1.14 nightly: HessenbergQ lmul! methods overwrite LinearAlgebra'sAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
JuliaLinearAlgebra/GenericLinearAlgebra.jl#183 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
JuliaGPU/KernelAbstractions.jl#897 ·
I maintainer di solito rispondono entro 1 giorno