# Matrix multiplication fails with Reactant and Lux

**URL:** <https://discourse.julialang.org/t/matrix-multiplication-fails-with-reactant-and-lux/134612>\
**Category:** Machine Learning\
**Tags:** lux, reactant\
**Created:** [December 17, 2025, 3:58pm UTC](https://discourse.julialang.org/t/matrix-multiplication-fails-with-reactant-and-lux/134612 "2025-12-17T15:58:03Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![weltenbummler](https://avatars.discourse-cdn.com/v4/letter/w/82dd89/32.png) [@weltenbummler](https://discourse.julialang.org/u/weltenbummler)\
**Post date:** [December 17, 2025, 3:58pm UTC](https://discourse.julialang.org/t/matrix-multiplication-fails-with-reactant-and-lux/134612/1 "2025-12-17T15:58:03Z")

</div>

Hello,

I have this simple script:

```julia-auto
using LinearAlgebra
using Reactant
using Lux

dev = reactant_device()
#dev = cpu_device()

A = dev(rand(Float32, 2, 2))
B = dev(rand(Float32, 2, 3))
A * B # ERROR: conversion to pointer not defined for ConcretePJRTArray...

```

which unfortunately return the error

```julia-auto
ERROR: conversion to pointer not defined for ConcretePJRTArray{Float32, 2, 1}
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:35
 [2] unsafe_convert(::Type{Ptr{Float32}}, a::ConcretePJRTArray{Float32, 2, 1})
   @ Base ./pointer.jl:67
 [3] gemm!(transA::Char, transB::Char, alpha::Float32, A::ConcretePJRTArray{…}, B::ConcretePJRTArray{…}, beta::Float32, C::ConcretePJRTArray{…})
   @ LinearAlgebra.BLAS ~/.julia/juliaup/julia-1.10.10+0.x64.linux.gnu/share/julia/stdlib/v1.10/LinearAlgebra/src/blas.jl:1524
 [4] gemm_wrapper!(C::ConcretePJRTArray{…}, tA::Char, tB::Char, A::ConcretePJRTArray{…}, B::ConcretePJRTArray{…}, _add::LinearAlgebra.MulAddMul{…})
   @ LinearAlgebra ~/.julia/juliaup/julia-1.10.10+0.x64.linux.gnu/share/julia/stdlib/v1.10/LinearAlgebra/src/matmul.jl:605
 [5] generic_matmatmul!
   @ ~/.julia/juliaup/julia-1.10.10+0.x64.linux.gnu/share/julia/stdlib/v1.10/LinearAlgebra/src/matmul.jl:352 [inlined]
 [6] mul!
   @ ~/.julia/juliaup/julia-1.10.10+0.x64.linux.gnu/share/julia/stdlib/v1.10/LinearAlgebra/src/matmul.jl:263 [inlined]
 [7] mul!
   @ ~/.julia/juliaup/julia-1.10.10+0.x64.linux.gnu/share/julia/stdlib/v1.10/LinearAlgebra/src/matmul.jl:237 [inlined]
 [8] *(A::ConcretePJRTArray{Float32, 2, 1}, B::ConcretePJRTArray{Float32, 2, 1})
   @ LinearAlgebra ~/.julia/juliaup/julia-1.10.10+0.x64.linux.gnu/share/julia/stdlib/v1.10/LinearAlgebra/src/matmul.jl:113

```

I am on julia 1.10.10, with the following package versions  
Lux v1.27.1  
Reactant v0.2.185

The following operations work:

```julia-auto
A.+A
sum(A)

```

but not matrix multiplication, which is quite crucial for training neural networks. May I be missing a package or extension?

CUDA info: Driver Version: 535.274.02 CUDA Version: 12.2

Many thanks for your help,

Michael

---

<div class="post-metadata">

**Author:** ![avikpal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/avikpal/32/6550_2.png) [@avikpal](https://discourse.julialang.org/u/avikpal)\
**Post date:** [December 17, 2025, 4:14pm UTC](https://discourse.julialang.org/t/matrix-multiplication-fails-with-reactant-and-lux/134612/2 "2025-12-17T16:14:52Z")

</div>

you need to compile the function first

```julia-auto
fn = @compile A * B

fn(A, B)

```

> **[Compiling Lux Models using Reactant.jl | Lux.jl Docs](https://lux.csail.mit.edu/stable/manual/compiling_lux_models)**
>
> Documentation for LuxDL Repositories

---

<div class="post-metadata">

**Author:** ![weltenbummler](https://avatars.discourse-cdn.com/v4/letter/w/82dd89/32.png) [@weltenbummler](https://discourse.julialang.org/u/weltenbummler)\
**Post date:** [December 17, 2025, 4:34pm UTC](https://discourse.julialang.org/t/matrix-multiplication-fails-with-reactant-and-lux/134612/3 "2025-12-17T16:34:06Z")

</div>

Thank you for the quick response
