diff --git a/paddle/fluid/operators/math/blas_impl.h b/paddle/fluid/operators/math/blas_impl.h index 55151c5483a38bdd44ac6260b2534684e0e3a2fd..cb4044b1b08c7a154a07ecf6b1cf58a84a46876a 100644 --- a/paddle/fluid/operators/math/blas_impl.h +++ b/paddle/fluid/operators/math/blas_impl.h @@ -1041,6 +1041,12 @@ void Blas::BatchedGEMM( CBLAS_TRANSPOSE transA, CBLAS_TRANSPOSE transB, int M, int N, int K, T alpha, const T *A, const T *B, T beta, T *C, int batchCount, int64_t strideA, int64_t strideB) const { + PADDLE_ENFORCE_NOT_NULL( + A, platform::errors::InvalidArgument("Pointer A should not be null.")); + PADDLE_ENFORCE_NOT_NULL( + B, platform::errors::InvalidArgument("Pointer B should not be null.")); + PADDLE_ENFORCE_NOT_NULL( + C, platform::errors::InvalidArgument("Pointer C should not be null.")); #ifdef PADDLE_WITH_MKLML int lda = (transA == CblasNoTrans) ? K : M; int ldb = (transB == CblasNoTrans) ? N : K; diff --git a/python/paddle/fluid/tests/unittests/test_linear.py b/python/paddle/fluid/tests/unittests/test_linear.py index 9d07a80da15dbfd35ffdedbcb09e82d59a84486e..2f722fc80050139dbce4cecb7925cea755b8dd9d 100644 --- a/python/paddle/fluid/tests/unittests/test_linear.py +++ b/python/paddle/fluid/tests/unittests/test_linear.py @@ -73,6 +73,15 @@ class LinearTestCase(unittest.TestCase): np.testing.assert_array_almost_equal(res_f, res_nn) np.testing.assert_array_almost_equal(res_nn, res_np) + def test_error_dummy_input(self, place=paddle.CPUPlace()): + with self.assertRaises(ValueError): + x_arr = np.array([], dtype=np.float32) + x = paddle.to_tensor( + np.reshape(x_arr, (0, 4, 4, 4)), dtype='float32') + weight = paddle.zeros([4, 4, 4], dtype='float32') + bias = paddle.to_tensor([], dtype='float32') + paddle.nn.functional.linear(x, weight, bias=bias) + if __name__ == "__main__": unittest.main()