- 
                Notifications
    You must be signed in to change notification settings 
- Fork 56
Closed
Description
using Graphs
using GraphNeuralNetworks
using Flux
using CUDA
device = gpu_device()
g = GNNGraph(path_graph(3); ndata=(; x=rand(Float32, 2, 3))) |> device
model = Dense(2 => 1) |> device
grad = Flux.gradient(model) do model
    out = model(g.ndata.x)
    g_cpu = g |> cpu
    sum(out)
endresults in
LoadError: Need an adjoint for constructor Base.Generator{Tuple{}, Functors.var"#18#20"{Symbol}}. Gradient is of type Tuple{}together with 112 steps of stacktrace that points to |> cpu.
I believe that in the more general context of Flux.jl usage, moving data from GPU to CPU while computing gradient is ok most of the time. So if I didn't do something wrong here, maybe a potential fix can be considered.
EDIT: I'm trying to see if Flux.@ignore_derivatives is a workaround.
Versions:
- Julia: v1.11.3
- GraphNeuralNetworks.jl: v1.0.0
- Flux.jl: v0.16.3
- Zygote.jl: v0.7.6
- CUDA.jl: v5.7.2
p.s. Motivation: I have an application that needs calling getgraph, which currently can only be done on CPU: (see #161).
Metadata
Metadata
Assignees
Labels
No labels