diff --git a/cuda/test/matrix/dense_kernels.cpp b/cuda/test/matrix/dense_kernels.cpp index a45274cdb9b..7d292a8b5fa 100644 --- a/cuda/test/matrix/dense_kernels.cpp +++ b/cuda/test/matrix/dense_kernels.cpp @@ -226,7 +226,21 @@ TEST_F(Dense, MultipleVectorCudaComputeConjDotIsEquivalentToRef) } -TEST_F(Dense, CudaComputeNorm2IsEquivalentToRef) +TEST_F(Dense, SingleVectorCudaComputeNorm2IsEquivalentToRef) +{ + set_up_vector_data(1); + auto norm_size = gko::dim<2>{1, x->get_size()[1]}; + auto norm_expected = NormVector::create(this->ref, norm_size); + auto dnorm = NormVector::create(this->cuda, norm_size); + + x->compute_norm2(norm_expected.get()); + dx->compute_norm2(dnorm.get()); + + GKO_ASSERT_MTX_NEAR(norm_expected, dnorm, 1e-14); +} + + +TEST_F(Dense, MultipleVectorCudaComputeNorm2IsEquivalentToRef) { set_up_vector_data(20); auto norm_size = gko::dim<2>{1, x->get_size()[1]}; diff --git a/dpcpp/matrix/dense_kernels.dp.cpp b/dpcpp/matrix/dense_kernels.dp.cpp index 59511d12b0a..872e4be7580 100644 --- a/dpcpp/matrix/dense_kernels.dp.cpp +++ b/dpcpp/matrix/dense_kernels.dp.cpp @@ -209,6 +209,7 @@ void compute_conj_dot_dispatch(std::shared_ptr exec, const matrix::Dense* y, matrix::Dense* result) { + // TODO Add onemkl for single column ? compute_conj_dot(exec, x, y, result); } @@ -221,6 +222,7 @@ void compute_norm2_dispatch(std::shared_ptr exec, const matrix::Dense* x, matrix::Dense>* result) { + // TODO Add onemkl for single column ? compute_norm2(exec, x, result); } diff --git a/dpcpp/test/matrix/dense_kernels.cpp b/dpcpp/test/matrix/dense_kernels.cpp index a426c88116f..56ef8b5532e 100644 --- a/dpcpp/test/matrix/dense_kernels.cpp +++ b/dpcpp/test/matrix/dense_kernels.cpp @@ -230,7 +230,21 @@ TEST_F(Dense, MultipleVectorDpcppComputeConjDotIsEquivalentToRef) } -TEST_F(Dense, DpcppComputeNorm2IsEquivalentToRef) +TEST_F(Dense, SingleVectorDpcppComputeNorm2IsEquivalentToRef) +{ + set_up_vector_data(1); + auto norm_size = gko::dim<2>{1, x->get_size()[1]}; + auto norm_expected = NormVector::create(this->ref, norm_size); + auto dnorm = NormVector::create(this->dpcpp, norm_size); + + x->compute_norm2(norm_expected.get()); + dx->compute_norm2(dnorm.get()); + + GKO_ASSERT_MTX_NEAR(norm_expected, dnorm, r::value); +} + + +TEST_F(Dense, MultipleVectorDpcppComputeNorm2IsEquivalentToRef) { set_up_vector_data(20); auto norm_size = gko::dim<2>{1, x->get_size()[1]}; diff --git a/hip/test/matrix/dense_kernels.hip.cpp b/hip/test/matrix/dense_kernels.hip.cpp index 894b5fcc408..a6ae2df195b 100644 --- a/hip/test/matrix/dense_kernels.hip.cpp +++ b/hip/test/matrix/dense_kernels.hip.cpp @@ -222,7 +222,21 @@ TEST_F(Dense, MultipleVectorHipComputeConjDotIsEquivalentToRef) } -TEST_F(Dense, HipComputeNorm2IsEquivalentToRef) +TEST_F(Dense, SingleHipComputeNorm2IsEquivalentToRef) +{ + set_up_vector_data(1); + auto norm_size = gko::dim<2>{1, x->get_size()[1]}; + auto norm_expected = NormVector::create(this->ref, norm_size); + auto dnorm = NormVector::create(this->hip, norm_size); + + x->compute_norm2(norm_expected.get()); + dx->compute_norm2(dnorm.get()); + + GKO_ASSERT_MTX_NEAR(norm_expected, dnorm, 1e-14); +} + + +TEST_F(Dense, MultipleHipComputeNorm2IsEquivalentToRef) { set_up_vector_data(20); auto norm_size = gko::dim<2>{1, x->get_size()[1]}; diff --git a/omp/test/matrix/dense_kernels.cpp b/omp/test/matrix/dense_kernels.cpp index 9d8db3975b9..7b8c4ac365b 100644 --- a/omp/test/matrix/dense_kernels.cpp +++ b/omp/test/matrix/dense_kernels.cpp @@ -239,7 +239,21 @@ TEST_F(Dense, MultipleVectorOmpComputeConjDotIsEquivalentToRef) } -TEST_F(Dense, ComputesNorm2IsEquivalentToRef) +TEST_F(Dense, SingleVectorComputesNorm2IsEquivalentToRef) +{ + set_up_vector_data(1); + auto norm_size = gko::dim<2>{1, x->get_size()[1]}; + auto norm_expected = NormVector::create(this->ref, norm_size); + auto dnorm = NormVector::create(this->omp, norm_size); + + x->compute_norm2(norm_expected.get()); + dx->compute_norm2(dnorm.get()); + + GKO_ASSERT_MTX_NEAR(norm_expected, dnorm, 1e-14); +} + + +TEST_F(Dense, MultipleVectorComputesNorm2IsEquivalentToRef) { set_up_vector_data(20); auto norm_size = gko::dim<2>{1, x->get_size()[1]};