diff --git a/paddle/phi/kernels/funcs/elementwise_functor.h b/paddle/phi/kernels/funcs/elementwise_functor.h index b98247fdf0c67c1ffd6cd606f313c6eb7749960e..2636e9814dd2f107068bc676f7ebfd297a7646ae 100644 --- a/paddle/phi/kernels/funcs/elementwise_functor.h +++ b/paddle/phi/kernels/funcs/elementwise_functor.h @@ -501,6 +501,7 @@ struct MinGradXYFunctor { template struct RemainderFunctor { inline HOSTDEVICE T operator()(const T a, const T b) const { + PADDLE_ENFORCE(b != 0, DIV_ERROR_INFO); T res = a % b; // Accoding to #PR26732: in dividen % divsor diff --git a/python/paddle/fluid/tests/unittests/test_elementwise_floormod_op.py b/python/paddle/fluid/tests/unittests/test_elementwise_floormod_op.py new file mode 100644 index 0000000000000000000000000000000000000000..33e6fc2c47d4593363fcd28b555ea46e93da3ac0 --- /dev/null +++ b/python/paddle/fluid/tests/unittests/test_elementwise_floormod_op.py @@ -0,0 +1,35 @@ +# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import unittest + +import paddle +import paddle.fluid as fluid + + +class TestFloorModOp(unittest.TestCase): + def test_dygraph(self): + with fluid.dygraph.guard(fluid.CPUPlace()): + # mod by zero + x = paddle.to_tensor([59], dtype='int32') + y = paddle.to_tensor([0], dtype='int32') + try: + paddle.floor_mod(x, y) + except Exception as e: + print("Error: Mod by zero encounter in floor_mod\n") + + +if __name__ == '__main__': + unittest.main()