From 3c39b8c98f97c2c5e4d2481c7b2e37e5974b0ffa Mon Sep 17 00:00:00 2001 From: Tobias Ribizel Date: Mon, 8 Nov 2021 17:50:38 +0100 Subject: [PATCH] add build_row_ptrs tests --- .../components/device_matrix_data_kernels.cpp | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/omp/test/components/device_matrix_data_kernels.cpp b/omp/test/components/device_matrix_data_kernels.cpp index c75148a04a5..df2ab4ce578 100644 --- a/omp/test/components/device_matrix_data_kernels.cpp +++ b/omp/test/components/device_matrix_data_kernels.cpp @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include +#include "core/components/device_matrix_data_kernels.hpp" #include "core/test/utils.hpp" #include "core/test/utils/assertions.hpp" @@ -159,4 +160,50 @@ TYPED_TEST(DeviceMatrixData, DoesntRemoveZerosIfThereAreNone) } +TYPED_TEST(DeviceMatrixData, BuildRowPtrsIsEquivalentToRef) +{ + using value_type = typename TestFixture::value_type; + using index_type = typename TestFixture::index_type; + using device_matrix_data = gko::device_matrix_data; + auto ref = gko::ReferenceExecutor::create(); + auto ref_sorted_data = + device_matrix_data::create_from_host(ref, this->sorted_host_data); + auto device_sorted_data = device_matrix_data::create_from_host( + this->exec, this->sorted_host_data); + gko::Array row_ptrs(ref, ref_sorted_data.size[0] + 1); + gko::Array drow_ptrs(this->exec, + device_sorted_data.size[0] + 1); + + gko::kernels::reference::components::build_row_ptrs( + ref, ref_sorted_data.nonzeros, ref_sorted_data.size[0], + row_ptrs.get_data()); + gko::kernels::omp::components::build_row_ptrs( + this->exec, device_sorted_data.nonzeros, device_sorted_data.size[0], + drow_ptrs.get_data()); + + GKO_ASSERT_ARRAY_EQ(row_ptrs, drow_ptrs); +} + + +TYPED_TEST(DeviceMatrixData, BuildEmptyRowPtrsIsEquivalentToRef) +{ + using value_type = typename TestFixture::value_type; + using index_type = typename TestFixture::index_type; + using device_matrix_data = gko::device_matrix_data; + auto ref = gko::ReferenceExecutor::create(); + auto ref_data = device_matrix_data{ref, gko::dim<2>{10, 10}}; + auto device_data = device_matrix_data{this->exec, gko::dim<2>{10, 10}}; + gko::Array row_ptrs(ref, ref_data.size[0] + 1); + gko::Array drow_ptrs(this->exec, device_data.size[0] + 1); + + gko::kernels::reference::components::build_row_ptrs( + ref, ref_data.nonzeros, ref_data.size[0], row_ptrs.get_data()); + gko::kernels::omp::components::build_row_ptrs( + this->exec, device_data.nonzeros, device_data.size[0], + drow_ptrs.get_data()); + + GKO_ASSERT_ARRAY_EQ(row_ptrs, drow_ptrs); +} + + } // namespace