# ERROR: UndefVarError: parameters not defined

**URL:** <https://discourse.julialang.org/t/error-undefvarerror-parameters-not-defined/81385>\
**Category:** GPU\
**Created:** [May 20, 2022, 4:55pm UTC](https://discourse.julialang.org/t/error-undefvarerror-parameters-not-defined/81385 "2022-05-20T16:55:25Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Hupdup](https://avatars.discourse-cdn.com/v4/letter/h/7ba0ec/32.png) [@Hupdup](https://discourse.julialang.org/u/Hupdup)\
**Post date:** [May 20, 2022, 4:55pm UTC](https://discourse.julialang.org/t/error-undefvarerror-parameters-not-defined/81385/1 "2022-05-20T16:55:26Z")

</div>

Hi,  
I want to do some reinforcement learning in Julia, but when I want to perform my action, it always gives me this error. do you know what i should do? I already downloaded the latest version of the packages.

function action(s\_norm)

```
    println("greedy Action")

    act_values = model(s_norm |> gpu)

    a = Flux.onecold(act_values)

```

end

the “model” is my neural network.

greedy Action  
ERROR: UndefVarError: parameters not defined  
Stacktrace:  
[1] classify\_arguments(job::GPUCompiler.CompilerJob, codegen\_f::LLVM.Function)  
@ GPUCompiler C:\Users\aetan.julia\packages\GPUCompiler\XwWPj\src\irgen.jl:312  
[2] lower\_byval(job::GPUCompiler.CompilerJob, mod::LLVM.Module, entry\_f::LLVM.Function)  
@ GPUCompiler C:\Users\aetan.julia\packages\GPUCompiler\XwWPj\src\irgen.jl:354  
[3] process\_entry!(job::GPUCompiler.CompilerJob{GPUCompiler.PTXCompilerTarget, CUDA.CUDACompilerParams, GPUCompiler.FunctionSpec{GPUArrays.var"#broadcast\_kernel#16", Tuple{CUDA.CuKernelContext, CuDeviceVector{Float32, 1}, Base.Broadcast.Broadcasted{Nothing, Tuple{Base.OneTo{Int64}}, typeof(relu), Tuple{Base.Broadcast.Broadcasted{CUDA.CuArrayStyle{1}, Nothing, typeof(+), Tuple{Base.Broadcast.Extruded{CuDeviceVector{Float32, 1}, Tuple{Bool}, Tuple{Int64}}, Base.Broadcast.Extruded{CuDeviceVector{Float32, 1}, Tuple{Bool}, Tuple{Int64}}}}}}, Int64}}}, mod::LLVM.Module, entry::LLVM.Function)  
@ GPUCompiler C:\Users\aetan.julia\packages\GPUCompiler\XwWPj\src\ptx.jl:84  
[4] irgen(job::GPUCompiler.CompilerJob, method\_instance::Core.MethodInstance, world::UInt64)  
@ GPUCompiler C:\Users\aetan.julia\packages\GPUCompiler\XwWPj\src\irgen.jl:62  
[5] macro expansion  
@ C:\Users\aetan.julia\packages\GPUCompiler\XwWPj\src\driver.jl:130 [inlined]  
[6] macro expansion  
@ C:\Users\aetan.julia\packages\TimerOutputs\LDL7n\src\TimerOutput.jl:252 [inlined]  
[7] macro expansion  
@ C:\Users\aetan.julia\packages\GPUCompiler\XwWPj\src\driver.jl:129 [inlined]  
[8] emit\_llvm(job::GPUCompiler.CompilerJob, method\_instance::Any, world::UInt64; libraries::Bool, deferred\_codegen::Bool, optimize::Bool, only\_entry::Bool)  
@ GPUCompiler C:\Users\aetan.julia\packages\GPUCompiler\XwWPj\src\utils.jl:62  
[9] emit\_llvm  
@ C:\Users\aetan.julia\packages\GPUCompiler\XwWPj\src\utils.jl:60 [inlined]  
[10] cufunction\_compile(job::GPUCompiler.CompilerJob)  
@ CUDA C:\Users\aetan.julia\packages\CUDA\M4jkK\src\compiler\execution.jl:305  
[11] check\_cache  
@ C:\Users\aetan.julia\packages\GPUCompiler\XwWPj\src\cache.jl:44 [inlined]  
[12] cached\_compilation  
@ C:\Users\aetan.julia\packages\GPUArrays\Z5nPF\src\host\broadcast.jl:57 [inlined]  
[13] cached\_compilation(cache::Dict{UInt64, Any}, job::GPUCompiler.CompilerJob{GPUCompiler.PTXCompilerTarget, CUDA.CUDACompilerParams, GPUCompiler.FunctionSpec{GPUArrays.var"#broadcast\_kernel#16", Tuple{CUDA.CuKernelContext, CuDeviceVector{Float32, 1}, Base.Broadcast.Broadcasted{Nothing, Tuple{Base.OneTo{Int64}}, typeof(relu), Tuple{Base.Broadcast.Broadcasted{CUDA.CuArrayStyle{1}, Nothing, typeof(+), Tuple{Base.Broadcast.Extruded{CuDeviceVector{Float32, 1}, Tuple{Bool}, Tuple{Int64}}, Base.Broadcast.Extruded{CuDeviceVector{Float32, 1}, Tuple{Bool}, Tuple{Int64}}}}}}, Int64}}}, compiler::typeof(CUDA.cufunction\_compile), linker::typeof(CUDA.cufunction\_link))  
@ GPUCompiler C:\Users\aetan.julia\packages\GPUCompiler\XwWPj\src\cache.jl:0  
[14] cufunction(f::GPUArrays.var"#broadcast\_kernel#16", tt::Type{Tuple{CUDA.CuKernelContext, CuDeviceVector{Float32, 1}, Base.Broadcast.Broadcasted{Nothing, Tuple{Base.OneTo{Int64}}, typeof(relu), Tuple{Base.Broadcast.Broadcasted{CUDA.CuArrayStyle{1}, Nothing, typeof(+), Tuple{Base.Broadcast.Extruded{CuDeviceVector{Float32, 1}, Tuple{Bool}, Tuple{Int64}}, Base.Broadcast.Extruded{CuDeviceVector{Float32, 1}, Tuple{Bool}, Tuple{Int64}}}}}}, Int64}}; name::Nothing, kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})  
@ CUDA C:\Users\aetan.julia\packages\CUDA\M4jkK\src\compiler\execution.jl:294  
[15] cufunction  
@ C:\Users\aetan.julia\packages\CUDA\M4jkK\src\compiler\execution.jl:288 [inlined]  
[16] macro expansion  
@ C:\Users\aetan.julia\packages\CUDA\M4jkK\src\compiler\execution.jl:102 [inlined]  
[17] #launch\_heuristic#280  
@ C:\Users\aetan.julia\packages\CUDA\M4jkK\src\gpuarrays.jl:17 [inlined]  
[18] launch\_heuristic  
@ C:\Users\aetan.julia\packages\CUDA\M4jkK\src\gpuarrays.jl:17 [inlined]  
[19] copyto!  
@ C:\Users\aetan.julia\packages\GPUArrays\Z5nPF\src\host\broadcast.jl:63 [inlined]  
[20] copyto!  
@ .\broadcast.jl:936 [inlined]  
[21] copy  
@ C:\Users\aetan.julia\packages\GPUArrays\Z5nPF\src\host\broadcast.jl:47 [inlined]  
[22] materialize  
@ .\broadcast.jl:883 [inlined]  
[23] (::Dense{typeof(relu), CuArray{Float32, 2}, CuArray{Float32, 1}})(x::CuArray{Float32, 1})  
@ Flux C:\Users\aetan.julia\packages\Flux\qp1gc\src\layers\basic.jl:147  
[24] applychain  
@ C:\Users\aetan.julia\packages\Flux\qp1gc\src\layers\basic.jl:36 [inlined]  
[25] (::Chain{Tuple{Dense{typeof(relu), CuArray{Float32, 2}, CuArray{Float32, 1}}, Dense{typeof(relu), CuArray{Float32, 2}, CuArray{Float32, 1}}, Dense{typeof(tanh), CuArray{Float32, 2}, CuArray{Float32, 1}}}})(x::CuArray{Float32, 1})  
@ Flux C:\Users\aetan.julia\packages\Flux\qp1gc\src\layers\basic.jl:38  
[26] action(s\_norm::Vector{Float32})  
@ Main c:\Users\aetan\Desktop\DQN\_Shems\DQN\_Test.jl:58  
[27] episode!(env::Shems{Reinforce.ShemsEnv\_DQN.ShemsState{Float32}}; NUM\_STEPS::Int64, train::Bool, render::Bool, track::Int64, rng\_ep::Int64)  
@ Main c:\Users\aetan\Desktop\DQN\_Shems\DQN\_Test.jl:75  
[28] top-level scope  
@ c:\Users\aetan\Desktop\DQN\_Shems\DQN\_Reinforce\_Shems.jl:67

---

<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:** [May 20, 2022, 5:25pm UTC](https://discourse.julialang.org/t/error-undefvarerror-parameters-not-defined/81385/2 "2022-05-20T17:25:29Z")

</div>

> [@Hupdup](#):
>
> UndefVarError: parameters not defined

Update your packages. There’s plenty of existing topics and issues mentioning this exact error, caused by an update of ExprTools.jl some months ago. An update of LLVM.jl should resolve this.

---

<div class="post-metadata">

**Author:** ![Hupdup](https://avatars.discourse-cdn.com/v4/letter/h/7ba0ec/32.png) [@Hupdup](https://discourse.julialang.org/u/Hupdup)\
**Post date:** [May 21, 2022, 10:04am UTC](https://discourse.julialang.org/t/error-undefvarerror-parameters-not-defined/81385/3 "2022-05-21T10:04:41Z")

</div>

unfortunaly that didn`t work 😕

---

<div class="post-metadata">

**Author:** ![Hupdup](https://avatars.discourse-cdn.com/v4/letter/h/7ba0ec/32.png) [@Hupdup](https://discourse.julialang.org/u/Hupdup)\
**Post date:** [May 23, 2022, 9:24am UTC](https://discourse.julialang.org/t/error-undefvarerror-parameters-not-defined/81385/4 "2022-05-23T09:24:19Z")

</div>

I changed the “|\> gpu” to |\> cpu and now it works

---

<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:** [May 24, 2022, 7:29am UTC](https://discourse.julialang.org/t/error-undefvarerror-parameters-not-defined/81385/5 "2022-05-24T07:29:02Z")

</div>

Then you did not upgrade all packages, e.g., because some are being held back. Try forcibly installing the latest version of LLVM.jl using `]add LLVM@4.11.1` and inspecting why it fails.

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [May 24, 2022, 7:41am UTC](https://discourse.julialang.org/t/error-undefvarerror-parameters-not-defined/81385/6 "2022-05-24T07:41:19Z")

</div>

If there are known incompatibilities they should be propagated to the registry by fixing compat bounds, so that the package manager won’t serve broken combinations of packages knowingly.

---

<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:** [May 24, 2022, 7:50am UTC](https://discourse.julialang.org/t/error-undefvarerror-parameters-not-defined/81385/7 "2022-05-24T07:50:06Z")

</div>

It’s not that simple, I think. LLVM.jl itself does not depend on ExprTools.jl, whose update introduced an exported function that clashes with one of LLVM.jl’s exports ([Both ExprTools and LLVM export "parameters" · Issue #214 · JuliaGPU/GPUCompiler.jl · GitHub](https://github.com/JuliaGPU/GPUCompiler.jl/issues/214)). So compat bounds would need to be introduced packages that depend on both LLVM and ExprTools, which seems impractical.
