From 61e8398613617b1575bfca62e128492dd7215ae0 Mon Sep 17 00:00:00 2001 From: PlumBlossomMaid <108660099+PlumBlossomMaid@users.noreply.github.com> Date: Mon, 9 Feb 2026 19:59:09 +0800 Subject: [PATCH 1/2] Replace some inplace ops During model training, if user call these inplace APIs, the model gradient computation graph may be disrupted due to inplace operators. Therefore, some calls to inplace APIs have been replaced. --- paddle_geometric/utils/_scatter.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/paddle_geometric/utils/_scatter.py b/paddle_geometric/utils/_scatter.py index 9b8e0f2..617cac8 100644 --- a/paddle_geometric/utils/_scatter.py +++ b/paddle_geometric/utils/_scatter.py @@ -64,16 +64,16 @@ def scatter( # For "any" reduction, we use regular `put_along_axis_`: if reduce == 'any': index = broadcast(index, src, dim) - return src.new_zeros(size).scatter_(dim=dim, index=index, src=src) + return src.new_zeros(size).scatter(dim=dim, index=index, src=src) # For "sum" and "mean" reduction, we make use of `put_along_axis_`: if reduce == 'sum' or reduce == 'add': index = broadcast(index, src, dim) - return src.new_zeros(size).scatter_add_(dim=dim, index=index, src=src) + return src.new_zeros(size).scatter_add(dim=dim, index=index, src=src) if reduce == 'mean': count = paddle.zeros(dim_size, device=src.place) - count.scatter_add_( + count.scatter_add( dim=0, index=index, src=paddle.ones(src.shape[dim], device=src.place), @@ -81,7 +81,7 @@ def scatter( count = count.clip(min=1) index = broadcast(index, src, dim) - out = src.new_zeros(size).scatter_add_(dim=dim, index=index, src=src) + out = src.new_zeros(size).scatter_add(dim=dim, index=index, src=src) return out / broadcast(count, out, dim) @@ -136,7 +136,7 @@ def scatter( index = broadcast(index, src, dim) # We initialize with `one` here to match `scatter_mul` output: - return paddle.ones(size).scatter_reduce_(dim, index, src, + return paddle.ones(size).scatter_reduce(dim, index, src, reduce='prod', include_self=True) From 6fb582b51946e56945c3b54d5a6df7eb4a108047 Mon Sep 17 00:00:00 2001 From: PlumBlossomMaid <108660099+PlumBlossomMaid@users.noreply.github.com> Date: Wed, 11 Feb 2026 23:24:52 +0800 Subject: [PATCH 2/2] Replace view with reshape in broadcast function support static mode --- paddle_geometric/utils/_scatter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paddle_geometric/utils/_scatter.py b/paddle_geometric/utils/_scatter.py index 4fcf09a..fbe8768 100644 --- a/paddle_geometric/utils/_scatter.py +++ b/paddle_geometric/utils/_scatter.py @@ -173,7 +173,7 @@ def broadcast(src: paddle.Tensor, ref: paddle.Tensor, dim: int) -> paddle.Tensor: dim = ref.dim() + dim if dim < 0 else dim size = (1, ) * dim + (-1, ) + (1, ) * (ref.dim() - dim - 1) - return src.view(size).expand_as(y=ref) + return src.reshape(size).expand_as(y=ref) def scatter_argmax(