From 5a77eadd17d0e55cd364e49a409decb8c79c294e Mon Sep 17 00:00:00 2001 From: Tobias Ribizel Date: Thu, 19 Aug 2021 05:34:06 -0400 Subject: [PATCH 1/2] simplify copy to device in tests --- core/preconditioner/isai.cpp | 6 +- cuda/test/factorization/ic_kernels.cpp | 3 +- cuda/test/factorization/ilu_kernels.cpp | 3 +- cuda/test/factorization/par_ic_kernels.cpp | 9 +- cuda/test/factorization/par_ict_kernels.cpp | 6 +- cuda/test/factorization/par_ilu_kernels.cpp | 12 +- cuda/test/factorization/par_ilut_kernels.cpp | 24 ++-- cuda/test/matrix/coo_kernels.cpp | 36 ++---- cuda/test/matrix/csr_kernels.cpp | 44 +++---- cuda/test/matrix/dense_kernels.cpp | 66 ++++------- cuda/test/matrix/diagonal_kernels.cpp | 30 ++--- cuda/test/matrix/ell_kernels.cpp | 39 +++---- cuda/test/matrix/fbcsr_kernels.cpp | 3 +- cuda/test/matrix/hybrid_kernels.cpp | 24 ++-- cuda/test/matrix/sellp_kernels.cpp | 30 ++--- cuda/test/multigrid/amgx_pgm_kernels.cpp | 24 ++-- cuda/test/preconditioner/isai_kernels.cpp | 27 ++--- cuda/test/preconditioner/jacobi_kernels.cpp | 15 +-- cuda/test/solver/cb_gmres_kernels.cpp | 39 +++---- cuda/test/solver/gmres_kernels.cpp | 33 ++---- cuda/test/solver/idr_kernels.cpp | 52 +++------ cuda/test/solver/lower_trs_kernels.cpp | 6 +- cuda/test/solver/upper_trs_kernels.cpp | 6 +- cuda/test/stop/residual_norm_kernels.cpp | 84 +++++--------- cuda/test/utils/assertions_test.cpp | 1 - dpcpp/test/matrix/coo_kernels.cpp | 36 ++---- dpcpp/test/matrix/csr_kernels.cpp | 44 +++---- dpcpp/test/matrix/dense_kernels.cpp | 66 ++++------- dpcpp/test/matrix/diagonal_kernels.cpp | 30 ++--- dpcpp/test/matrix/ell_kernels.cpp | 39 +++---- dpcpp/test/matrix/fbcsr_kernels.cpp | 3 +- dpcpp/test/matrix/hybrid_kernels.cpp | 24 ++-- dpcpp/test/matrix/sellp_kernels.cpp | 30 ++--- dpcpp/test/solver/cb_gmres_kernels.cpp | 40 +++---- dpcpp/test/solver/gmres_kernels.cpp | 34 ++---- dpcpp/test/solver/idr_kernels.cpp | 52 +++------ dpcpp/test/stop/residual_norm_kernels.cpp | 84 +++++--------- .../adaptiveprecision-blockjacobi.cpp | 6 +- .../ir-ilu-preconditioned-solver.cpp | 9 +- .../iterative-refinement.cpp | 6 +- .../mixed-precision-ir/mixed-precision-ir.cpp | 6 +- examples/mixed-spmv/mixed-spmv.cpp | 3 +- hip/test/factorization/ic_kernels.cpp | 3 +- hip/test/factorization/ilu_kernels.cpp | 3 +- hip/test/factorization/par_ic_kernels.hip.cpp | 6 +- .../factorization/par_ict_kernels.hip.cpp | 6 +- .../factorization/par_ilu_kernels.hip.cpp | 12 +- .../factorization/par_ilut_kernels.hip.cpp | 24 ++-- hip/test/matrix/coo_kernels.hip.cpp | 36 ++---- hip/test/matrix/csr_kernels.hip.cpp | 44 +++---- hip/test/matrix/dense_kernels.hip.cpp | 63 ++++------ hip/test/matrix/diagonal_kernels.hip.cpp | 30 ++--- hip/test/matrix/ell_kernels.hip.cpp | 39 +++---- hip/test/matrix/fbcsr_kernels.hip.cpp | 3 +- hip/test/matrix/hybrid_kernels.hip.cpp | 24 ++-- hip/test/matrix/sellp_kernels.hip.cpp | 30 ++--- hip/test/multigrid/amgx_pgm_kernels.cpp | 24 ++-- hip/test/preconditioner/isai_kernels.hip.cpp | 27 ++--- hip/test/preconditioner/jacobi_kernels.cpp | 15 +-- hip/test/solver/cb_gmres_kernels.cpp | 39 +++---- hip/test/solver/gmres_kernels.cpp | 33 ++---- hip/test/solver/idr_kernels.cpp | 52 +++------ hip/test/solver/lower_trs_kernels.cpp | 6 +- hip/test/solver/upper_trs_kernels.cpp | 6 +- hip/test/stop/residual_norm_kernels.cpp | 84 +++++--------- omp/test/factorization/par_ic_kernels.cpp | 6 +- omp/test/factorization/par_ict_kernels.cpp | 6 +- omp/test/factorization/par_ilu_kernels.cpp | 12 +- omp/test/factorization/par_ilut_kernels.cpp | 18 +-- omp/test/matrix/coo_kernels.cpp | 39 +++---- omp/test/matrix/csr_kernels.cpp | 52 +++------ omp/test/matrix/dense_kernels.cpp | 108 ++++++------------ omp/test/matrix/diagonal_kernels.cpp | 30 ++--- omp/test/matrix/ell_kernels.cpp | 39 +++---- omp/test/matrix/fbcsr_kernels.cpp | 3 +- omp/test/matrix/hybrid_kernels.cpp | 30 ++--- omp/test/matrix/sellp_kernels.cpp | 30 ++--- omp/test/matrix/sparsity_csr_kernels.cpp | 28 ++--- omp/test/multigrid/amgx_pgm_kernels.cpp | 24 ++-- omp/test/preconditioner/isai_kernels.cpp | 27 ++--- omp/test/preconditioner/jacobi_kernels.cpp | 15 +-- omp/test/solver/cb_gmres_kernels.cpp | 36 ++---- omp/test/solver/gmres_kernels.cpp | 42 +++---- omp/test/solver/idr_kernels.cpp | 52 +++------ omp/test/solver/lower_trs_kernels.cpp | 24 ++-- omp/test/solver/upper_trs_kernels.cpp | 24 ++-- reference/test/factorization/ilu_kernels.cpp | 3 +- .../test/factorization/par_ilu_kernels.cpp | 3 +- test/matrix/dense_kernels.cpp | 64 ++++------- test/solver/bicg_kernels.cpp | 54 +++------ test/solver/bicgstab_kernels.cpp | 70 ++++-------- test/solver/cg_kernels.cpp | 36 ++---- test/solver/cgs_kernels.cpp | 60 ++++------ test/solver/fcg_kernels.cpp | 42 +++---- 94 files changed, 905 insertions(+), 1815 deletions(-) diff --git a/core/preconditioner/isai.cpp b/core/preconditioner/isai.cpp index 4ee7d718db3..08f5508f395 100644 --- a/core/preconditioner/isai.cpp +++ b/core/preconditioner/isai.cpp @@ -221,10 +221,8 @@ void Isai::generate_inverse( excess_row_ptrs_full.get_const_data(), lend(excess_system), lend(excess_rhs), excess_start, block)); // solve it after transposing - auto system_copy = Csr::create(exec->get_master()); - system_copy->copy_from(excess_system.get()); - auto rhs_copy = Dense::create(exec->get_master()); - rhs_copy->copy_from(excess_rhs.get()); + auto system_copy = gko::clone(exec->get_master(), excess_system); + auto rhs_copy = gko::clone(exec->get_master(), excess_rhs); std::shared_ptr excess_solver_factory; if (parameters_.excess_solver_factory) { excess_solver_factory = diff --git a/cuda/test/factorization/ic_kernels.cpp b/cuda/test/factorization/ic_kernels.cpp index d99121aa320..18a5356d24e 100644 --- a/cuda/test/factorization/ic_kernels.cpp +++ b/cuda/test/factorization/ic_kernels.cpp @@ -81,8 +81,7 @@ class Ic : public ::testing::Test { << "\", which is required for this test.\n"; } csr_ref = gko::read(input_file, ref); - csr_cuda = Csr::create(cuda); - csr_cuda->copy_from(gko::lend(csr_ref)); + csr_cuda = gko::clone(cuda, csr_ref); } }; diff --git a/cuda/test/factorization/ilu_kernels.cpp b/cuda/test/factorization/ilu_kernels.cpp index 85ed7ffc05f..21cdda72995 100644 --- a/cuda/test/factorization/ilu_kernels.cpp +++ b/cuda/test/factorization/ilu_kernels.cpp @@ -81,8 +81,7 @@ class Ilu : public ::testing::Test { << "\", which is required for this test.\n"; } csr_ref = gko::read(input_file, ref); - csr_cuda = Csr::create(cuda); - csr_cuda->copy_from(gko::lend(csr_ref)); + csr_cuda = gko::clone(cuda, csr_ref); } }; diff --git a/cuda/test/factorization/par_ic_kernels.cpp b/cuda/test/factorization/par_ic_kernels.cpp index e957efbadf4..6771f245b27 100644 --- a/cuda/test/factorization/par_ic_kernels.cpp +++ b/cuda/test/factorization/par_ic_kernels.cpp @@ -82,8 +82,7 @@ class ParIc : public ::testing::Test { dmtx_ani = Csr::create(cuda); dmtx_l_ani = Csr::create(cuda); dmtx_l_ani_init = Csr::create(cuda); - dmtx_l = Csr::create(cuda); - dmtx_l->copy_from(lend(mtx_l)); + dmtx_l = gko::clone(cuda, mtx_l); } void SetUp() @@ -109,8 +108,7 @@ class ParIc : public ::testing::Test { l_builder.get_value_array().resize_and_reset(l_nnz); gko::kernels::reference::factorization::initialize_l( ref, lend(mtx_ani), lend(mtx_l_ani), false); - mtx_l_ani_init = Csr::create(ref); - mtx_l_ani_init->copy_from(lend(mtx_l_ani)); + mtx_l_ani_init = gko::clone(ref, mtx_l_ani); gko::kernels::reference::par_ic_factorization::init_factor( ref, lend(mtx_l_ani_init)); } @@ -152,8 +150,7 @@ TEST_F(ParIc, KernelComputeFactorIsEquivalentToRef) auto square_size = mtx_ani->get_size(); auto mtx_l_coo = Coo::create(ref, square_size); mtx_l_ani->convert_to(lend(mtx_l_coo)); - auto dmtx_l_coo = Coo::create(cuda, square_size); - dmtx_l_coo->copy_from(lend(mtx_l_coo)); + auto dmtx_l_coo = gko::clone(cuda, mtx_l_coo); gko::kernels::reference::par_ic_factorization::compute_factor( ref, 1, lend(mtx_l_coo), lend(mtx_l_ani_init)); diff --git a/cuda/test/factorization/par_ict_kernels.cpp b/cuda/test/factorization/par_ict_kernels.cpp index 60360fce033..0c584a11a74 100644 --- a/cuda/test/factorization/par_ict_kernels.cpp +++ b/cuda/test/factorization/par_ict_kernels.cpp @@ -84,10 +84,8 @@ class ParIct : public ::testing::Test { dmtx_ani = Csr::create(cuda); dmtx_l_ani = Csr::create(cuda); - dmtx = Csr::create(cuda); - dmtx->copy_from(lend(mtx)); - dmtx_l = Csr::create(cuda); - dmtx_l->copy_from(lend(mtx_l)); + dmtx = gko::clone(cuda, mtx); + dmtx_l = gko::clone(cuda, mtx_l); } void SetUp() diff --git a/cuda/test/factorization/par_ilu_kernels.cpp b/cuda/test/factorization/par_ilu_kernels.cpp index 47c95061834..3c877f7d38f 100644 --- a/cuda/test/factorization/par_ilu_kernels.cpp +++ b/cuda/test/factorization/par_ilu_kernels.cpp @@ -89,8 +89,7 @@ class ParIlu : public ::testing::Test { << "\", which is required for this test.\n"; } auto csr_ref_temp = gko::read(input_file, ref); - auto csr_cuda_temp = Csr::create(cuda); - csr_cuda_temp->copy_from(gko::lend(csr_ref_temp)); + auto csr_cuda_temp = gko::clone(cuda, csr_ref_temp); // Make sure there are diagonal elements present gko::kernels::reference::factorization::add_diagonal_elements( ref, gko::lend(csr_ref_temp), false); @@ -226,8 +225,7 @@ TEST_F(ParIlu, CudaKernelAddDiagonalElementsSortedEquivalentToRef) index_type num_rows{600}; index_type num_cols{600}; auto mtx_ref = gen_mtx(num_rows, num_cols); - auto mtx_cuda = Csr::create(cuda); - mtx_cuda->copy_from(gko::lend(mtx_ref)); + auto mtx_cuda = gko::clone(cuda, mtx_ref); gko::kernels::reference::factorization::add_diagonal_elements( ref, gko::lend(mtx_ref), true); @@ -245,8 +243,7 @@ TEST_F(ParIlu, CudaKernelAddDiagonalElementsUnsortedEquivalentToRef) index_type num_rows{600}; index_type num_cols{600}; auto mtx_ref = gen_unsorted_mtx(num_rows, num_cols); - auto mtx_cuda = Csr::create(cuda); - mtx_cuda->copy_from(gko::lend(mtx_ref)); + auto mtx_cuda = gko::clone(cuda, mtx_ref); gko::kernels::reference::factorization::add_diagonal_elements( ref, gko::lend(mtx_ref), false); @@ -264,8 +261,7 @@ TEST_F(ParIlu, CudaKernelAddDiagonalElementsNonSquareEquivalentToRef) index_type num_rows{600}; index_type num_cols{500}; auto mtx_ref = gen_mtx(num_rows, num_cols); - auto mtx_cuda = Csr::create(cuda); - mtx_cuda->copy_from(gko::lend(mtx_ref)); + auto mtx_cuda = gko::clone(cuda, mtx_ref); gko::kernels::reference::factorization::add_diagonal_elements( ref, gko::lend(mtx_ref), true); diff --git a/cuda/test/factorization/par_ilut_kernels.cpp b/cuda/test/factorization/par_ilut_kernels.cpp index b59c57d0be8..73307668f00 100644 --- a/cuda/test/factorization/par_ilut_kernels.cpp +++ b/cuda/test/factorization/par_ilut_kernels.cpp @@ -115,26 +115,18 @@ class ParIlut : public ::testing::Test { std::uniform_int_distribution<>(10, mtx_size[0]), std::normal_distribution<>(-1.0, 1.0), rand_engine, ref); - dmtx1 = Csr::create(cuda); - dmtx1->copy_from(mtx1.get()); - dmtx2 = Csr::create(cuda); - dmtx2->copy_from(mtx2.get()); - dmtx_square = Csr::create(cuda); - dmtx_square->copy_from(mtx_square.get()); + dmtx1 = gko::clone(cuda, mtx1); + dmtx2 = gko::clone(cuda, mtx2); + dmtx_square = gko::clone(cuda, mtx_square); dmtx_ani = Csr::create(cuda); dmtx_l_ani = Csr::create(cuda); dmtx_u_ani = Csr::create(cuda); dmtx_ut_ani = Csr::create(cuda); - dmtx_l = Csr::create(cuda); - dmtx_l->copy_from(mtx_l.get()); - dmtx_l2 = Csr::create(cuda); - dmtx_l2->copy_from(mtx_l2.get()); - dmtx_u = Csr::create(cuda); - dmtx_u->copy_from(mtx_u.get()); - dmtx_l_complex = ComplexCsr::create(cuda); - dmtx_l_complex->copy_from(mtx_l_complex.get()); - dmtx_u_complex = ComplexCsr::create(cuda); - dmtx_u_complex->copy_from(mtx_u_complex.get()); + dmtx_l = gko::clone(cuda, mtx_l); + dmtx_l2 = gko::clone(cuda, mtx_l2); + dmtx_u = gko::clone(cuda, mtx_u); + dmtx_l_complex = gko::clone(cuda, mtx_l_complex); + dmtx_u_complex = gko::clone(cuda, mtx_u_complex); } void SetUp() diff --git a/cuda/test/matrix/coo_kernels.cpp b/cuda/test/matrix/coo_kernels.cpp index 12b8b815d98..1f076a293a7 100644 --- a/cuda/test/matrix/coo_kernels.cpp +++ b/cuda/test/matrix/coo_kernels.cpp @@ -87,22 +87,16 @@ class Coo : public ::testing::Test { void set_up_apply_data(int num_vectors = 1) { - mtx = Mtx::create(ref); - mtx->copy_from(gen_mtx(532, 231)); + mtx = gen_mtx(532, 231); expected = gen_mtx(532, num_vectors); y = gen_mtx(231, num_vectors); alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); - dmtx = Mtx::create(cuda); - dmtx->copy_from(mtx.get()); - dresult = Vec::create(cuda); - dresult->copy_from(expected.get()); - dy = Vec::create(cuda); - dy->copy_from(y.get()); - dalpha = Vec::create(cuda); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(cuda); - dbeta->copy_from(beta.get()); + dmtx = gko::clone(cuda, mtx); + dresult = gko::clone(cuda, expected); + dy = gko::clone(cuda, y); + dalpha = gko::clone(cuda, alpha); + dbeta = gko::clone(cuda, beta); } void unsort_mtx() @@ -292,11 +286,9 @@ TEST_F(Coo, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -309,11 +301,9 @@ TEST_F(Coo, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); @@ -326,11 +316,9 @@ TEST_F(Coo, ApplyAddToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); mtx->apply2(alpha.get(), complex_b.get(), complex_x.get()); dmtx->apply2(dalpha.get(), dcomplex_b.get(), dcomplex_x.get()); diff --git a/cuda/test/matrix/csr_kernels.cpp b/cuda/test/matrix/csr_kernels.cpp index 24beac46605..0847ac2235b 100644 --- a/cuda/test/matrix/csr_kernels.cpp +++ b/cuda/test/matrix/csr_kernels.cpp @@ -115,14 +115,10 @@ class Csr : public ::testing::Test { dmtx->copy_from(mtx.get()); square_dmtx = Mtx::create(cuda, strategy); square_dmtx->copy_from(square_mtx.get()); - dresult = Vec::create(cuda); - dresult->copy_from(expected.get()); - dy = Vec::create(cuda); - dy->copy_from(y.get()); - dalpha = Vec::create(cuda); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(cuda); - dbeta->copy_from(beta.get()); + dresult = gko::clone(cuda, expected); + dy = gko::clone(cuda, y); + dalpha = gko::clone(cuda, alpha); + dbeta = gko::clone(cuda, beta); std::vector tmp(mtx->get_size()[0], 0); auto rng = std::default_random_engine{}; @@ -434,10 +430,8 @@ TEST_F(Csr, AdvancedApplyToIdentityMatrixIsEquivalentToRef) set_up_apply_data(std::make_shared()); auto a = gen_mtx(mtx_size[0], mtx_size[1], 0); auto b = gen_mtx(mtx_size[0], mtx_size[1], 0); - auto da = Mtx::create(cuda); - auto db = Mtx::create(cuda); - da->copy_from(a.get()); - db->copy_from(b.get()); + auto da = gko::clone(cuda, a); + auto db = gko::clone(cuda, b); auto id = gko::matrix::Identity::create(ref, mtx_size[1]); auto did = gko::matrix::Identity::create(cuda, mtx_size[1]); @@ -455,11 +449,9 @@ TEST_F(Csr, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(std::make_shared()); auto complex_b = gen_mtx(this->mtx_size[1], 3, 1); - auto dcomplex_b = ComplexVec::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(this->mtx_size[0], 3, 1); - auto dcomplex_x = ComplexVec::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -472,11 +464,9 @@ TEST_F(Csr, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(std::make_shared()); auto complex_b = gen_mtx(this->mtx_size[1], 3, 1); - auto dcomplex_b = ComplexVec::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(this->mtx_size[0], 3, 1); - auto dcomplex_x = ComplexVec::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); @@ -865,15 +855,11 @@ TEST_F(Csr, OneAutomaticalWorksWithDifferentMatrices) auto automatical = std::make_shared(); auto row_len_limit = std::max(automatical->nvidia_row_len_limit, automatical->amd_row_len_limit); - auto load_balance_mtx = Mtx::create(ref); - auto classical_mtx = Mtx::create(ref); - load_balance_mtx->copy_from( - gen_mtx(1, row_len_limit + 1000, row_len_limit + 1)); - classical_mtx->copy_from(gen_mtx(50, 50, 1)); - auto load_balance_mtx_d = Mtx::create(cuda); - auto classical_mtx_d = Mtx::create(cuda); - load_balance_mtx_d->copy_from(load_balance_mtx.get()); - classical_mtx_d->copy_from(classical_mtx.get()); + auto load_balance_mtx = + gen_mtx(1, row_len_limit + 1000, row_len_limit + 1); + auto classical_mtx = gen_mtx(50, 50, 1); + auto load_balance_mtx_d = gko::clone(cuda, load_balance_mtx); + auto classical_mtx_d = gko::clone(cuda, classical_mtx); load_balance_mtx_d->set_strategy(automatical); classical_mtx_d->set_strategy(automatical); diff --git a/cuda/test/matrix/dense_kernels.cpp b/cuda/test/matrix/dense_kernels.cpp index de96d27d823..179a914018a 100644 --- a/cuda/test/matrix/dense_kernels.cpp +++ b/cuda/test/matrix/dense_kernels.cpp @@ -104,12 +104,9 @@ class Dense : public ::testing::Test { } else { alpha = gko::initialize({2.0}, ref); } - dx = Mtx::create(cuda); - dx->copy_from(x.get()); - dy = Mtx::create(cuda); - dy->copy_from(y.get()); - dalpha = Mtx::create(cuda); - dalpha->copy_from(alpha.get()); + dx = gko::clone(cuda, x); + dy = gko::clone(cuda, y); + dalpha = gko::clone(cuda, alpha); expected = Mtx::create(ref, gko::dim<2>{1, num_vecs}); dresult = Mtx::create(cuda, gko::dim<2>{1, num_vecs}); } @@ -123,20 +120,13 @@ class Dense : public ::testing::Test { alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); square = gen_mtx(x->get_size()[0], x->get_size()[0]); - dx = Mtx::create(cuda); - dx->copy_from(x.get()); - dc_x = ComplexMtx::create(cuda); - dc_x->copy_from(c_x.get()); - dy = Mtx::create(cuda); - dy->copy_from(y.get()); - dresult = Mtx::create(cuda); - dresult->copy_from(expected.get()); - dalpha = Mtx::create(cuda); - dalpha->copy_from(alpha.get()); - dbeta = Mtx::create(cuda); - dbeta->copy_from(beta.get()); - dsquare = Mtx::create(cuda); - dsquare->copy_from(square.get()); + dx = gko::clone(cuda, x); + dc_x = gko::clone(cuda, c_x); + dy = gko::clone(cuda, y); + dresult = gko::clone(cuda, expected); + dalpha = gko::clone(cuda, alpha); + dbeta = gko::clone(cuda, beta); + dsquare = gko::clone(cuda, square); std::vector tmp(x->get_size()[0], 0); auto rng = std::default_random_engine{}; @@ -299,11 +289,9 @@ TEST_F(Dense, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = ComplexMtx::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(65, 1); - auto dcomplex_x = ComplexMtx::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); x->apply(complex_b.get(), complex_x.get()); dx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -316,11 +304,9 @@ TEST_F(Dense, ApplyToMixedComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = MixedComplexMtx::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(65, 1); - auto dcomplex_x = MixedComplexMtx::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); x->apply(complex_b.get(), complex_x.get()); dx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -333,11 +319,9 @@ TEST_F(Dense, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = ComplexMtx::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(65, 1); - auto dcomplex_x = ComplexMtx::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); x->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); @@ -350,11 +334,9 @@ TEST_F(Dense, AdvancedApplyToMixedComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = MixedComplexMtx::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(65, 1); - auto dcomplex_x = MixedComplexMtx::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); x->apply(convert(alpha).get(), complex_b.get(), convert(beta).get(), complex_x.get()); @@ -369,11 +351,9 @@ TEST_F(Dense, ComputeDotComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(1234, 2); - auto dcomplex_b = ComplexMtx::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(1234, 2); - auto dcomplex_x = ComplexMtx::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); auto result = ComplexMtx::create(ref, gko::dim<2>{1, 2}); auto dresult = ComplexMtx::create(cuda, gko::dim<2>{1, 2}); @@ -388,11 +368,9 @@ TEST_F(Dense, ComputeConjDotComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(1234, 2); - auto dcomplex_b = ComplexMtx::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(1234, 2); - auto dcomplex_x = ComplexMtx::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); auto result = ComplexMtx::create(ref, gko::dim<2>{1, 2}); auto dresult = ComplexMtx::create(cuda, gko::dim<2>{1, 2}); diff --git a/cuda/test/matrix/diagonal_kernels.cpp b/cuda/test/matrix/diagonal_kernels.cpp index d3c6f8c5973..193080c1e69 100644 --- a/cuda/test/matrix/diagonal_kernels.cpp +++ b/cuda/test/matrix/diagonal_kernels.cpp @@ -123,39 +123,29 @@ class Diagonal : public ::testing::Test { void set_up_apply_data() { diag = gen_diag(mtx_size[0]); - ddiag = Diag::create(cuda); - ddiag->copy_from(diag.get()); + ddiag = gko::clone(cuda, diag); dense1 = gen_mtx(mtx_size[0], mtx_size[1], mtx_size[1]); dense2 = gen_mtx(mtx_size[1], mtx_size[0], mtx_size[0]); denseexpected1 = gen_mtx(mtx_size[0], mtx_size[1], mtx_size[1]); denseexpected2 = gen_mtx(mtx_size[1], mtx_size[0], mtx_size[0]); - ddense1 = Dense::create(cuda); - ddense1->copy_from(dense1.get()); - ddense2 = Dense::create(cuda); - ddense2->copy_from(dense2.get()); - denseresult1 = Dense::create(cuda); - denseresult1->copy_from(denseexpected1.get()); - denseresult2 = Dense::create(cuda); - denseresult2->copy_from(denseexpected2.get()); + ddense1 = gko::clone(cuda, dense1); + ddense2 = gko::clone(cuda, dense2); + denseresult1 = gko::clone(cuda, denseexpected1); + denseresult2 = gko::clone(cuda, denseexpected2); csr1 = gen_mtx(mtx_size[0], mtx_size[1], 1); csr2 = gen_mtx(mtx_size[1], mtx_size[0], 1); csrexpected1 = gen_mtx(mtx_size[0], mtx_size[1], 1); csrexpected2 = gen_mtx(mtx_size[1], mtx_size[0], 1); - dcsr1 = Csr::create(cuda); - dcsr1->copy_from(csr1.get()); - dcsr2 = Csr::create(cuda); - dcsr2->copy_from(csr2.get()); - csrresult1 = Csr::create(cuda); - csrresult1->copy_from(csrexpected1.get()); - csrresult2 = Csr::create(cuda); - csrresult2->copy_from(csrexpected2.get()); + dcsr1 = gko::clone(cuda, csr1); + dcsr2 = gko::clone(cuda, csr2); + csrresult1 = gko::clone(cuda, csrexpected1); + csrresult2 = gko::clone(cuda, csrexpected2); } void set_up_complex_data() { cdiag = gen_cdiag(mtx_size[0]); - dcdiag = ComplexDiag::create(cuda); - dcdiag->copy_from(cdiag.get()); + dcdiag = gko::clone(cuda, cdiag); } std::shared_ptr ref; diff --git a/cuda/test/matrix/ell_kernels.cpp b/cuda/test/matrix/ell_kernels.cpp index 51c12fab531..5230ad86747 100644 --- a/cuda/test/matrix/ell_kernels.cpp +++ b/cuda/test/matrix/ell_kernels.cpp @@ -104,24 +104,15 @@ class Ell : public ::testing::Test { alpha2 = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); beta2 = gko::initialize({-1.0}, ref); - dmtx = Mtx::create(cuda); - dmtx->copy_from(mtx.get()); - dresult = Vec::create(cuda); - dresult->copy_from(expected.get()); - dresult2 = Vec2::create(cuda); - dresult2->copy_from(expected2.get()); - dy = Vec::create(cuda); - dy->copy_from(y.get()); - dy2 = Vec2::create(cuda); - dy2->copy_from(y2.get()); - dalpha = Vec::create(cuda); - dalpha->copy_from(alpha.get()); - dalpha2 = Vec2::create(cuda); - dalpha2->copy_from(alpha2.get()); - dbeta = Vec::create(cuda); - dbeta->copy_from(beta.get()); - dbeta2 = Vec2::create(cuda); - dbeta2->copy_from(beta2.get()); + dmtx = gko::clone(cuda, mtx); + dresult = gko::clone(cuda, expected); + dresult2 = gko::clone(cuda, expected2); + dy = gko::clone(cuda, y); + dy2 = gko::clone(cuda, y2); + dalpha = gko::clone(cuda, alpha); + dalpha2 = gko::clone(cuda, alpha2); + dbeta = gko::clone(cuda, beta); + dbeta2 = gko::clone(cuda, beta2); } std::shared_ptr ref; @@ -509,11 +500,9 @@ TEST_F(Ell, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(size[1], 3); - auto dcomplex_b = ComplexVec::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(size[0], 3); - auto dcomplex_x = ComplexVec::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -526,11 +515,9 @@ TEST_F(Ell, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(size[1], 3); - auto dcomplex_b = ComplexVec::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(size[0], 3); - auto dcomplex_x = ComplexVec::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); diff --git a/cuda/test/matrix/fbcsr_kernels.cpp b/cuda/test/matrix/fbcsr_kernels.cpp index 6b273de668d..860d6554584 100644 --- a/cuda/test/matrix/fbcsr_kernels.cpp +++ b/cuda/test/matrix/fbcsr_kernels.cpp @@ -78,8 +78,7 @@ TEST_F(Fbcsr, CanWriteFromMatrixOnDevice) using MatData = gko::matrix_data; gko::testing::FbcsrSample sample(ref); auto refmat = sample.generate_fbcsr(); - auto cudamat = Mtx::create(cuda); - cudamat->copy_from(gko::lend(refmat)); + auto cudamat = gko::clone(cuda, refmat); MatData refdata; MatData cudadata; diff --git a/cuda/test/matrix/hybrid_kernels.cpp b/cuda/test/matrix/hybrid_kernels.cpp index 4970e149aa3..ab758ae674c 100644 --- a/cuda/test/matrix/hybrid_kernels.cpp +++ b/cuda/test/matrix/hybrid_kernels.cpp @@ -97,14 +97,10 @@ class Hybrid : public ::testing::Test { beta = gko::initialize({-1.0}, ref); dmtx = Mtx::create(cuda, strategy); dmtx->copy_from(mtx.get()); - dresult = Vec::create(cuda); - dresult->copy_from(expected.get()); - dy = Vec::create(cuda); - dy->copy_from(y.get()); - dalpha = Vec::create(cuda); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(cuda); - dbeta->copy_from(beta.get()); + dresult = gko::clone(cuda, expected); + dy = gko::clone(cuda, y); + dalpha = gko::clone(cuda, alpha); + dbeta = gko::clone(cuda, beta); } @@ -188,11 +184,9 @@ TEST_F(Hybrid, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3, 1); - auto dcomplex_b = ComplexVec::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(532, 3, 1); - auto dcomplex_x = ComplexVec::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -205,11 +199,9 @@ TEST_F(Hybrid, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3, 1); - auto dcomplex_b = ComplexVec::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(532, 3, 1); - auto dcomplex_x = ComplexVec::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); diff --git a/cuda/test/matrix/sellp_kernels.cpp b/cuda/test/matrix/sellp_kernels.cpp index 706fedccd3f..c0af63635b0 100644 --- a/cuda/test/matrix/sellp_kernels.cpp +++ b/cuda/test/matrix/sellp_kernels.cpp @@ -88,24 +88,18 @@ class Sellp : public ::testing::Test { int total_cols = 1, int slice_size = gko::matrix::default_slice_size, int stride_factor = gko::matrix::default_stride_factor) { - mtx = Mtx::create(ref); - mtx->copy_from(gen_mtx(532, 231)); + mtx = gen_mtx(532, 231); empty = Mtx::create(ref); expected = gen_mtx(532, total_cols); y = gen_mtx(231, total_cols); alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); - dmtx = Mtx::create(cuda); - dmtx->copy_from(mtx.get()); + dmtx = gko::clone(cuda, mtx); dempty = Mtx::create(cuda); - dresult = Vec::create(cuda); - dresult->copy_from(expected.get()); - dy = Vec::create(cuda); - dy->copy_from(y.get()); - dalpha = Vec::create(cuda); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(cuda); - dbeta->copy_from(beta.get()); + dresult = gko::clone(cuda, expected); + dy = gko::clone(cuda, y); + dalpha = gko::clone(cuda, alpha); + dbeta = gko::clone(cuda, beta); } std::shared_ptr ref; @@ -223,11 +217,9 @@ TEST_F(Sellp, ApplyToComplexIsEquivalentToRef) { set_up_apply_matrix(64); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -240,11 +232,9 @@ TEST_F(Sellp, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_matrix(64); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(cuda); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(cuda, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(cuda); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(cuda, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); diff --git a/cuda/test/multigrid/amgx_pgm_kernels.cpp b/cuda/test/multigrid/amgx_pgm_kernels.cpp index 493192c8630..9c55eca00fb 100644 --- a/cuda/test/multigrid/amgx_pgm_kernels.cpp +++ b/cuda/test/multigrid/amgx_pgm_kernels.cpp @@ -144,22 +144,14 @@ class AmgxPgm : public ::testing::Test { system_mtx = Csr::create(ref); system_dense->convert_to(system_mtx.get()); - d_agg.set_executor(cuda); - d_unfinished_agg.set_executor(cuda); - d_strongest_neighbor.set_executor(cuda); - d_coarse_vector = Mtx::create(cuda); - d_fine_vector = Mtx::create(cuda); - d_weight_csr = Csr::create(cuda); - d_weight_diag = Diag::create(cuda); - d_system_mtx = Csr::create(cuda); - d_agg = agg; - d_unfinished_agg = unfinished_agg; - d_strongest_neighbor = strongest_neighbor; - d_coarse_vector->copy_from(coarse_vector.get()); - d_fine_vector->copy_from(fine_vector.get()); - d_weight_csr->copy_from(weight_csr.get()); - d_weight_diag->copy_from(weight_diag.get()); - d_system_mtx->copy_from(system_mtx.get()); + d_agg = gko::Array(cuda, agg); + d_unfinished_agg = gko::Array(cuda, unfinished_agg); + d_strongest_neighbor = gko::Array(cuda, strongest_neighbor); + d_coarse_vector = gko::clone(cuda, coarse_vector); + d_fine_vector = gko::clone(cuda, fine_vector); + d_weight_csr = gko::clone(cuda, weight_csr); + d_weight_diag = gko::clone(cuda, weight_diag); + d_system_mtx = gko::clone(cuda, system_mtx); } void make_weight(Mtx *mtx) diff --git a/cuda/test/preconditioner/isai_kernels.cpp b/cuda/test/preconditioner/isai_kernels.cpp index 9385c0f109d..9ff25abf2fe 100644 --- a/cuda/test/preconditioner/isai_kernels.cpp +++ b/cuda/test/preconditioner/isai_kernels.cpp @@ -116,10 +116,8 @@ class Isai : public ::testing::Test { } inverse = clone_allocations(mtx.get()); - d_mtx = Csr::create(cuda); - d_mtx->copy_from(mtx.get()); - d_inverse = Csr::create(cuda); - d_inverse->copy_from(inverse.get()); + d_mtx = gko::clone(cuda, mtx); + d_inverse = gko::clone(cuda, inverse); } template @@ -510,8 +508,7 @@ TEST_F(Isai, CudaIsaiScaleExcessSolutionIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(cuda); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(cuda, e_rhs); d_inverse->copy_from(lend(inverse)); gko::kernels::reference::isai::scale_excess_solution( @@ -535,8 +532,7 @@ TEST_F(Isai, CudaIsaiScalePartialExcessSolutionIsEquivalentToRef) auto e_dim = a1.get_data()[10] - a1.get_data()[5]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(cuda); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(cuda, e_rhs); gko::kernels::reference::isai::scale_excess_solution( ref, a1.get_const_data(), e_rhs.get(), 5u, 10u); @@ -559,8 +555,7 @@ TEST_F(Isai, CudaIsaiScatterExcessSolutionLIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(cuda); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(cuda, e_rhs); d_inverse->copy_from(lend(inverse)); gko::kernels::reference::isai::scatter_excess_solution( @@ -585,8 +580,7 @@ TEST_F(Isai, CudaIsaiScatterExcessSolutionUIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(cuda); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(cuda, e_rhs); // overwrite -1 values with inverse d_inverse->copy_from(lend(inverse)); @@ -612,8 +606,7 @@ TEST_F(Isai, CudaIsaiScatterExcessSolutionAIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(cuda); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(cuda, e_rhs); // overwrite -1 values with inverse d_inverse->copy_from(lend(inverse)); @@ -639,8 +632,7 @@ TEST_F(Isai, CudaIsaiScatterExcessSolutionSpdIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(cuda); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(cuda, e_rhs); // overwrite -1 values with inverse d_inverse->copy_from(lend(inverse)); @@ -666,8 +658,7 @@ TEST_F(Isai, CudaIsaiScatterPartialExcessSolutionIsEquivalentToRef) auto e_dim = a1.get_data()[10] - a1.get_data()[5]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(cuda); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(cuda, e_rhs); // overwrite -1 values with inverse d_inverse->copy_from(lend(inverse)); diff --git a/cuda/test/preconditioner/jacobi_kernels.cpp b/cuda/test/preconditioner/jacobi_kernels.cpp index 87e0cbb2ab9..42fdab89365 100644 --- a/cuda/test/preconditioner/jacobi_kernels.cpp +++ b/cuda/test/preconditioner/jacobi_kernels.cpp @@ -128,13 +128,11 @@ class Jacobi : public ::testing::Test { b = gko::test::generate_random_matrix( dim, num_rhs, std::uniform_int_distribution<>(num_rhs, num_rhs), std::normal_distribution<>(0.0, 1.0), engine, ref); - d_b = Vec::create(cuda); - d_b->copy_from(b.get()); + d_b = gko::clone(cuda, b); x = gko::test::generate_random_matrix( dim, num_rhs, std::uniform_int_distribution<>(num_rhs, num_rhs), std::normal_distribution<>(0.0, 1.0), engine, ref); - d_x = Vec::create(cuda); - d_x->copy_from(x.get()); + d_x = gko::clone(cuda, x); } const gko::precision_reduction dp{}; @@ -480,12 +478,9 @@ TEST_F(Jacobi, CudaScalarLinearCombinationApplyEquivalentToRef) std::normal_distribution<>(0.0, 1.0), engine, ref, gko::dim<2>(dim, 3), 4)); - auto d_smtx = gko::share(Mtx::create(cuda)); - auto d_sb = gko::share(Vec::create(cuda)); - auto d_sx = gko::share(Vec::create(cuda)); - d_smtx->copy_from(smtx.get()); - d_sb->copy_from(sb.get()); - d_sx->copy_from(sx.get()); + auto d_smtx = gko::share(gko::clone(cuda, smtx)); + auto d_sb = gko::share(gko::clone(cuda, sb)); + auto d_sx = gko::share(gko::clone(cuda, sx)); auto alpha = gko::initialize({2.0}, ref); auto d_alpha = gko::initialize({2.0}, cuda); auto beta = gko::initialize({-1.0}, ref); diff --git a/cuda/test/solver/cb_gmres_kernels.cpp b/cuda/test/solver/cb_gmres_kernels.cpp index ce28556ef24..e1a41796aed 100644 --- a/cuda/test/solver/cb_gmres_kernels.cpp +++ b/cuda/test/solver/cb_gmres_kernels.cpp @@ -164,35 +164,22 @@ class CbGmres : public ::testing::Test { num_reorth->get_data()[i] = 5; } - d_x = Mtx::create(cuda); - d_x->copy_from(x.get()); + d_x = gko::clone(cuda, x); d_before_preconditioner = Mtx::create_with_config_of(d_x.get()); - d_y = Mtx::create(cuda); - d_y->copy_from(y.get()); - d_b = Mtx::create(cuda); - d_b->copy_from(b.get()); - d_arnoldi_norm = Mtx::create(cuda); - d_arnoldi_norm->copy_from(arnoldi_norm.get()); + d_y = gko::clone(cuda, y); + d_b = gko::clone(cuda, b); + d_arnoldi_norm = gko::clone(cuda, arnoldi_norm); d_range_helper = Range3dHelper{cuda, {}}; d_range_helper = range_helper; - d_next_krylov_basis = Mtx::create(cuda); - d_next_krylov_basis->copy_from(next_krylov_basis.get()); - d_hessenberg = Mtx::create(cuda); - d_hessenberg->copy_from(hessenberg.get()); - d_hessenberg_iter = Mtx::create(cuda); - d_hessenberg_iter->copy_from(hessenberg_iter.get()); - d_buffer_iter = Mtx::create(cuda); - d_buffer_iter->copy_from(buffer_iter.get()); - d_residual = Mtx::create(cuda); - d_residual->copy_from(residual.get()); - d_residual_norm = Mtx::create(cuda); - d_residual_norm->copy_from(residual_norm.get()); - d_residual_norm_collection = Mtx::create(cuda); - d_residual_norm_collection->copy_from(residual_norm_collection.get()); - d_givens_sin = Mtx::create(cuda); - d_givens_sin->copy_from(givens_sin.get()); - d_givens_cos = Mtx::create(cuda); - d_givens_cos->copy_from(givens_cos.get()); + d_next_krylov_basis = gko::clone(cuda, next_krylov_basis); + d_hessenberg = gko::clone(cuda, hessenberg); + d_hessenberg_iter = gko::clone(cuda, hessenberg_iter); + d_buffer_iter = gko::clone(cuda, buffer_iter); + d_residual = gko::clone(cuda, residual); + d_residual_norm = gko::clone(cuda, residual_norm); + d_residual_norm_collection = gko::clone(cuda, residual_norm_collection); + d_givens_sin = gko::clone(cuda, givens_sin); + d_givens_cos = gko::clone(cuda, givens_cos); d_stop_status = std::unique_ptr>( new gko::Array(cuda, n)); *d_stop_status = *stop_status; diff --git a/cuda/test/solver/gmres_kernels.cpp b/cuda/test/solver/gmres_kernels.cpp index 7571bf848e5..f9a274953ea 100644 --- a/cuda/test/solver/gmres_kernels.cpp +++ b/cuda/test/solver/gmres_kernels.cpp @@ -122,29 +122,18 @@ class Gmres : public ::testing::Test { final_iter_nums->get_data()[i] = 5; } - d_x = Mtx::create(cuda); - d_x->copy_from(x.get()); + d_x = gko::clone(cuda, x); d_before_preconditioner = Mtx::create_with_config_of(d_x.get()); - d_y = Mtx::create(cuda); - d_y->copy_from(y.get()); - d_b = Mtx::create(cuda); - d_b->copy_from(b.get()); - d_krylov_bases = Mtx::create(cuda); - d_krylov_bases->copy_from(krylov_bases.get()); - d_hessenberg = Mtx::create(cuda); - d_hessenberg->copy_from(hessenberg.get()); - d_hessenberg_iter = Mtx::create(cuda); - d_hessenberg_iter->copy_from(hessenberg_iter.get()); - d_residual = Mtx::create(cuda); - d_residual->copy_from(residual.get()); - d_residual_norm = NormVector::create(cuda); - d_residual_norm->copy_from(residual_norm.get()); - d_residual_norm_collection = Mtx::create(cuda); - d_residual_norm_collection->copy_from(residual_norm_collection.get()); - d_givens_sin = Mtx::create(cuda); - d_givens_sin->copy_from(givens_sin.get()); - d_givens_cos = Mtx::create(cuda); - d_givens_cos->copy_from(givens_cos.get()); + d_y = gko::clone(cuda, y); + d_b = gko::clone(cuda, b); + d_krylov_bases = gko::clone(cuda, krylov_bases); + d_hessenberg = gko::clone(cuda, hessenberg); + d_hessenberg_iter = gko::clone(cuda, hessenberg_iter); + d_residual = gko::clone(cuda, residual); + d_residual_norm = gko::clone(cuda, residual_norm); + d_residual_norm_collection = gko::clone(cuda, residual_norm_collection); + d_givens_sin = gko::clone(cuda, givens_sin); + d_givens_cos = gko::clone(cuda, givens_cos); d_stop_status = std::unique_ptr>( new gko::Array(cuda, nrhs)); *d_stop_status = *stop_status; diff --git a/cuda/test/solver/idr_kernels.cpp b/cuda/test/solver/idr_kernels.cpp index cc075f9191d..4b0d49d8c0c 100644 --- a/cuda/test/solver/idr_kernels.cpp +++ b/cuda/test/solver/idr_kernels.cpp @@ -122,41 +122,23 @@ class Idr : public ::testing::Test { stop_status->get_data()[i].reset(); } - d_mtx = Mtx::create(cuda); - d_x = Mtx::create(cuda); - d_b = Mtx::create(cuda); - d_r = Mtx::create(cuda); - d_m = Mtx::create(cuda); - d_f = Mtx::create(cuda); - d_g = Mtx::create(cuda); - d_u = Mtx::create(cuda); - d_c = Mtx::create(cuda); - d_v = Mtx::create(cuda); - d_p = Mtx::create(cuda); - d_alpha = Mtx::create(cuda); - d_omega = Mtx::create(cuda); - d_tht = Mtx::create(cuda); - d_residual_norm = Mtx::create(cuda); - d_stop_status = std::unique_ptr>( - new gko::Array(cuda)); - - d_mtx->copy_from(mtx.get()); - d_x->copy_from(x.get()); - d_b->copy_from(b.get()); - d_r->copy_from(r.get()); - d_m->copy_from(m.get()); - d_f->copy_from(f.get()); - d_g->copy_from(g.get()); - d_u->copy_from(u.get()); - d_c->copy_from(c.get()); - d_v->copy_from(v.get()); - d_p->copy_from(p.get()); - d_alpha->copy_from(alpha.get()); - d_omega->copy_from(omega.get()); - d_tht->copy_from(tht.get()); - d_residual_norm->copy_from(residual_norm.get()); - *d_stop_status = - *stop_status; // copy_from is not a public member function of Array + d_mtx = gko::clone(cuda, mtx); + d_x = gko::clone(cuda, x); + d_b = gko::clone(cuda, b); + d_r = gko::clone(cuda, r); + d_m = gko::clone(cuda, m); + d_f = gko::clone(cuda, f); + d_g = gko::clone(cuda, g); + d_u = gko::clone(cuda, u); + d_c = gko::clone(cuda, c); + d_v = gko::clone(cuda, v); + d_p = gko::clone(cuda, p); + d_alpha = gko::clone(cuda, alpha); + d_omega = gko::clone(cuda, omega); + d_tht = gko::clone(cuda, tht); + d_residual_norm = gko::clone(cuda, residual_norm); + d_stop_status = std::make_unique>( + cuda, *stop_status); } std::shared_ptr ref; diff --git a/cuda/test/solver/lower_trs_kernels.cpp b/cuda/test/solver/lower_trs_kernels.cpp index ea63bbf0f44..224d4b0cd8a 100644 --- a/cuda/test/solver/lower_trs_kernels.cpp +++ b/cuda/test/solver/lower_trs_kernels.cpp @@ -101,12 +101,10 @@ class LowerTrs : public ::testing::Test { csr_mtx = CsrMtx::create(ref); mtx->convert_to(csr_mtx.get()); d_csr_mtx = CsrMtx::create(cuda); - d_x = Mtx::create(cuda); - d_x->copy_from(x.get()); + d_x = gko::clone(cuda, x); d_csr_mtx->copy_from(csr_mtx.get()); b2 = Mtx::create(ref); - d_b2 = Mtx::create(cuda); - d_b2->copy_from(b.get()); + d_b2 = gko::clone(cuda, b); b2->copy_from(b.get()); } diff --git a/cuda/test/solver/upper_trs_kernels.cpp b/cuda/test/solver/upper_trs_kernels.cpp index fbafd9f3d23..0b0bc7baa34 100644 --- a/cuda/test/solver/upper_trs_kernels.cpp +++ b/cuda/test/solver/upper_trs_kernels.cpp @@ -101,12 +101,10 @@ class UpperTrs : public ::testing::Test { csr_mtx = CsrMtx::create(ref); mtx->convert_to(csr_mtx.get()); d_csr_mtx = CsrMtx::create(cuda); - d_x = Mtx::create(cuda); - d_x->copy_from(x.get()); + d_x = gko::clone(cuda, x); d_csr_mtx->copy_from(csr_mtx.get()); b2 = Mtx::create(ref); - d_b2 = Mtx::create(cuda); - d_b2->copy_from(b.get()); + d_b2 = gko::clone(cuda, b); b2->copy_from(b.get()); } diff --git a/cuda/test/stop/residual_norm_kernels.cpp b/cuda/test/stop/residual_norm_kernels.cpp index 6af9e73c056..651d441ee72 100644 --- a/cuda/test/stop/residual_norm_kernels.cpp +++ b/cuda/test/stop/residual_norm_kernels.cpp @@ -80,13 +80,11 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalForRhsResNorm) auto res = gko::initialize({100.0}, ref_); auto res_norm = gko::initialize({0.0}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(cuda_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(cuda_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); auto rhs_norm = gko::initialize({0.0}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(cuda_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(cuda_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -127,14 +125,12 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalMultipleRHSForRhsResNorm) auto res = gko::initialize({{100.0, 100.0}}, ref_); auto res_norm = gko::initialize({{0.0, 0.0}}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(cuda_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(cuda_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); auto rhs_norm = gko::initialize({{0.0, 0.0}}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(cuda_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(cuda_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -176,11 +172,9 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalForRelResNorm) auto res = gko::initialize({100.0}, ref_); auto res_norm = gko::initialize({0.0}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(cuda_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(cuda_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); - std::shared_ptr d_rhs = Mtx::create(cuda_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(cuda_, rhs); auto criterion = rel_factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; @@ -222,12 +216,10 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalMultipleRHSForRelResNorm) auto res = gko::initialize({{100.0, 100.0}}, ref_); auto res_norm = gko::initialize({{0.0, 0.0}}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(cuda_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(cuda_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); - std::shared_ptr d_rhs = Mtx::create(cuda_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(cuda_, rhs); auto criterion = rel_factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; @@ -270,11 +262,9 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalForAbsResNorm) auto res = gko::initialize({100.0}, ref_); auto res_norm = gko::initialize({0.0}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(cuda_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(cuda_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); - std::shared_ptr d_rhs = Mtx::create(cuda_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(cuda_, rhs); auto criterion = abs_factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; @@ -316,12 +306,10 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalMultipleRHSForAbsResNorm) auto res = gko::initialize({{100.0, 100.0}}, ref_); auto res_norm = gko::initialize({{0.0, 0.0}}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(cuda_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(cuda_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); - std::shared_ptr d_rhs = Mtx::create(cuda_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(cuda_, rhs); auto criterion = abs_factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; @@ -384,11 +372,9 @@ TEST_F(ResidualNormReduction, WaitsTillResidualGoal) auto res = gko::initialize({100.0}, ref_); auto res_norm = gko::initialize({0.0}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(cuda_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(cuda_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); - std::shared_ptr d_rhs = Mtx::create(cuda_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(cuda_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -429,12 +415,10 @@ TEST_F(ResidualNormReduction, WaitsTillResidualGoalMultipleRHS) auto res = gko::initialize({{100.0, 100.0}}, ref_); auto res_norm = gko::initialize({{0.0, 0.0}}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(cuda_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(cuda_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); - std::shared_ptr d_rhs = Mtx::create(cuda_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(cuda_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -494,13 +478,11 @@ class RelativeResidualNorm : public ::testing::Test { TEST_F(RelativeResidualNorm, WaitsTillResidualGoal) { auto res = gko::initialize({100.0}, ref_); - auto d_res = Mtx::create(cuda_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(cuda_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); auto rhs_norm = gko::initialize({0.0}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(cuda_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(cuda_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -539,14 +521,12 @@ TEST_F(RelativeResidualNorm, WaitsTillResidualGoal) TEST_F(RelativeResidualNorm, WaitsTillResidualGoalMultipleRHS) { auto res = gko::initialize({{100.0, 100.0}}, ref_); - auto d_res = Mtx::create(cuda_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(cuda_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); auto rhs_norm = gko::initialize({{0.0, 0.0}}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(cuda_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(cuda_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -606,13 +586,11 @@ class ImplicitResidualNorm : public ::testing::Test { TEST_F(ImplicitResidualNorm, WaitsTillResidualGoal) { auto res = gko::initialize({100.0}, ref_); - auto d_res = Mtx::create(cuda_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(cuda_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); auto rhs_norm = gko::initialize({0.0}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(cuda_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(cuda_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -651,14 +629,12 @@ TEST_F(ImplicitResidualNorm, WaitsTillResidualGoal) TEST_F(ImplicitResidualNorm, WaitsTillResidualGoalMultipleRHS) { auto res = gko::initialize({{100.0, 100.0}}, ref_); - auto d_res = Mtx::create(cuda_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(cuda_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); auto rhs_norm = gko::initialize({{0.0, 0.0}}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(cuda_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(cuda_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -718,11 +694,9 @@ class AbsoluteResidualNorm : public ::testing::Test { TEST_F(AbsoluteResidualNorm, WaitsTillResidualGoal) { auto res = gko::initialize({100.0}, ref_); - auto d_res = Mtx::create(cuda_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(cuda_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); - std::shared_ptr d_rhs = Mtx::create(cuda_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(cuda_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -761,12 +735,10 @@ TEST_F(AbsoluteResidualNorm, WaitsTillResidualGoal) TEST_F(AbsoluteResidualNorm, WaitsTillResidualGoalMultipleRHS) { auto res = gko::initialize({{100.0, 100.0}}, ref_); - auto d_res = Mtx::create(cuda_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(cuda_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); - std::shared_ptr d_rhs = Mtx::create(cuda_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(cuda_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; diff --git a/cuda/test/utils/assertions_test.cpp b/cuda/test/utils/assertions_test.cpp index 6dccae4b02a..f697f950d89 100644 --- a/cuda/test/utils/assertions_test.cpp +++ b/cuda/test/utils/assertions_test.cpp @@ -71,7 +71,6 @@ TEST_F(MatricesNear, CanPassCudaMatrix) { auto mtx = gko::initialize>( {{1.0, 2.0, 3.0}, {0.0, 4.0, 0.0}}, ref); - // TODO: CUDA conversion Dense -> Csr not yet implemented auto csr_ref = gko::matrix::Csr<>::create(ref); csr_ref->copy_from(mtx.get()); auto csr_mtx = gko::matrix::Csr<>::create(cuda); diff --git a/dpcpp/test/matrix/coo_kernels.cpp b/dpcpp/test/matrix/coo_kernels.cpp index 06073dd56eb..b9ac818c9dd 100644 --- a/dpcpp/test/matrix/coo_kernels.cpp +++ b/dpcpp/test/matrix/coo_kernels.cpp @@ -92,22 +92,16 @@ class Coo : public ::testing::Test { void set_up_apply_data(int num_vectors = 1) { - mtx = Mtx::create(ref); - mtx->copy_from(gen_mtx(532, 231)); + mtx = gen_mtx(532, 231); expected = gen_mtx(532, num_vectors); y = gen_mtx(231, num_vectors); alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); - dmtx = Mtx::create(dpcpp); - dmtx->copy_from(mtx.get()); - dresult = Vec::create(dpcpp); - dresult->copy_from(expected.get()); - dy = Vec::create(dpcpp); - dy->copy_from(y.get()); - dalpha = Vec::create(dpcpp); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(dpcpp); - dbeta->copy_from(beta.get()); + dmtx = gko::clone(dpcpp, mtx); + dresult = gko::clone(dpcpp, expected); + dy = gko::clone(dpcpp, y); + dalpha = gko::clone(dpcpp, alpha); + dbeta = gko::clone(dpcpp, beta); } void unsort_mtx() @@ -299,11 +293,9 @@ TEST_F(Coo, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -316,11 +308,9 @@ TEST_F(Coo, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); @@ -333,11 +323,9 @@ TEST_F(Coo, ApplyAddToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); mtx->apply2(alpha.get(), complex_b.get(), complex_x.get()); dmtx->apply2(dalpha.get(), dcomplex_b.get(), dcomplex_x.get()); diff --git a/dpcpp/test/matrix/csr_kernels.cpp b/dpcpp/test/matrix/csr_kernels.cpp index e76669e7136..b746d752db6 100644 --- a/dpcpp/test/matrix/csr_kernels.cpp +++ b/dpcpp/test/matrix/csr_kernels.cpp @@ -117,14 +117,10 @@ class Csr : public ::testing::Test { dmtx->copy_from(mtx.get()); square_dmtx = Mtx::create(dpcpp, strategy); square_dmtx->copy_from(square_mtx.get()); - dresult = Vec::create(dpcpp); - dresult->copy_from(expected.get()); - dy = Vec::create(dpcpp); - dy->copy_from(y.get()); - dalpha = Vec::create(dpcpp); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(dpcpp); - dbeta->copy_from(beta.get()); + dresult = gko::clone(dpcpp, expected); + dy = gko::clone(dpcpp, y); + dalpha = gko::clone(dpcpp, alpha); + dbeta = gko::clone(dpcpp, beta); std::vector tmp(mtx->get_size()[0], 0); auto rng = std::default_random_engine{}; @@ -436,10 +432,8 @@ TEST_F(Csr, AdvancedApplyToIdentityMatrixIsEquivalentToRef) set_up_apply_data(std::make_shared()); auto a = gen_mtx(mtx_size[0], mtx_size[1], 0); auto b = gen_mtx(mtx_size[0], mtx_size[1], 0); - auto da = Mtx::create(dpcpp); - auto db = Mtx::create(dpcpp); - da->copy_from(a.get()); - db->copy_from(b.get()); + auto da = gko::clone(dpcpp, a); + auto db = gko::clone(dpcpp, b); auto id = gko::matrix::Identity::create(ref, mtx_size[1]); auto did = gko::matrix::Identity::create(dpcpp, mtx_size[1]); @@ -457,11 +451,9 @@ TEST_F(Csr, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(std::make_shared()); auto complex_b = gen_mtx(this->mtx_size[1], 3, 1); - auto dcomplex_b = ComplexVec::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(this->mtx_size[0], 3, 1); - auto dcomplex_x = ComplexVec::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -474,11 +466,9 @@ TEST_F(Csr, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(std::make_shared()); auto complex_b = gen_mtx(this->mtx_size[1], 3, 1); - auto dcomplex_b = ComplexVec::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(this->mtx_size[0], 3, 1); - auto dcomplex_x = ComplexVec::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); @@ -869,15 +859,11 @@ TEST_F(Csr, OneAutomaticalWorksWithDifferentMatrices) auto automatical = std::make_shared(); auto row_len_limit = std::max(automatical->nvidia_row_len_limit, automatical->amd_row_len_limit); - auto load_balance_mtx = Mtx::create(ref); - auto classical_mtx = Mtx::create(ref); - load_balance_mtx->copy_from( - gen_mtx(1, row_len_limit + 1000, row_len_limit + 1)); - classical_mtx->copy_from(gen_mtx(50, 50, 1)); - auto load_balance_mtx_d = Mtx::create(dpcpp); - auto classical_mtx_d = Mtx::create(dpcpp); - load_balance_mtx_d->copy_from(load_balance_mtx.get()); - classical_mtx_d->copy_from(classical_mtx.get()); + auto load_balance_mtx = + gen_mtx(1, row_len_limit + 1000, row_len_limit + 1); + auto classical_mtx = gen_mtx(50, 50, 1); + auto load_balance_mtx_d = gko::clone(dpcpp, load_balance_mtx); + auto classical_mtx_d = gko::clone(dpcpp, classical_mtx); load_balance_mtx_d->set_strategy(automatical); classical_mtx_d->set_strategy(automatical); diff --git a/dpcpp/test/matrix/dense_kernels.cpp b/dpcpp/test/matrix/dense_kernels.cpp index a21d6fd15fe..cfecc3d3a03 100644 --- a/dpcpp/test/matrix/dense_kernels.cpp +++ b/dpcpp/test/matrix/dense_kernels.cpp @@ -108,12 +108,9 @@ class Dense : public ::testing::Test { } else { alpha = gko::initialize({2.0}, ref); } - dx = Mtx::create(dpcpp); - dx->copy_from(x.get()); - dy = Mtx::create(dpcpp); - dy->copy_from(y.get()); - dalpha = Mtx::create(dpcpp); - dalpha->copy_from(alpha.get()); + dx = gko::clone(dpcpp, x); + dy = gko::clone(dpcpp, y); + dalpha = gko::clone(dpcpp, alpha); expected = Mtx::create(ref, gko::dim<2>{1, num_vecs}); dresult = Mtx::create(dpcpp, gko::dim<2>{1, num_vecs}); } @@ -127,20 +124,13 @@ class Dense : public ::testing::Test { alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); square = gen_mtx(x->get_size()[0], x->get_size()[0]); - dx = Mtx::create(dpcpp); - dx->copy_from(x.get()); - dc_x = ComplexMtx::create(dpcpp); - dc_x->copy_from(c_x.get()); - dy = Mtx::create(dpcpp); - dy->copy_from(y.get()); - dresult = Mtx::create(dpcpp); - dresult->copy_from(expected.get()); - dalpha = Mtx::create(dpcpp); - dalpha->copy_from(alpha.get()); - dbeta = Mtx::create(dpcpp); - dbeta->copy_from(beta.get()); - dsquare = Mtx::create(dpcpp); - dsquare->copy_from(square.get()); + dx = gko::clone(dpcpp, x); + dc_x = gko::clone(dpcpp, c_x); + dy = gko::clone(dpcpp, y); + dresult = gko::clone(dpcpp, expected); + dalpha = gko::clone(dpcpp, alpha); + dbeta = gko::clone(dpcpp, beta); + dsquare = gko::clone(dpcpp, square); std::vector tmp(x->get_size()[0], 0); auto rng = std::default_random_engine{}; @@ -306,11 +296,9 @@ TEST_F(Dense, ApplyToComplexIsEquivalentToRef) SKIP_IF_SINGLE_MODE; set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = ComplexMtx::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(65, 1); - auto dcomplex_x = ComplexMtx::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); x->apply(complex_b.get(), complex_x.get()); dx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -324,11 +312,9 @@ TEST_F(Dense, ApplyToMixedComplexIsEquivalentToRef) SKIP_IF_SINGLE_MODE; set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = MixedComplexMtx::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(65, 1); - auto dcomplex_x = MixedComplexMtx::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); x->apply(complex_b.get(), complex_x.get()); dx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -341,11 +327,9 @@ TEST_F(Dense, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = ComplexMtx::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(65, 1); - auto dcomplex_x = ComplexMtx::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); x->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); @@ -359,11 +343,9 @@ TEST_F(Dense, AdvancedApplyToMixedComplexIsEquivalentToRef) SKIP_IF_SINGLE_MODE; set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = MixedComplexMtx::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(65, 1); - auto dcomplex_x = MixedComplexMtx::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); x->apply(convert(alpha).get(), complex_b.get(), convert(beta).get(), complex_x.get()); @@ -378,11 +360,9 @@ TEST_F(Dense, ComputeDotComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(1234, 2); - auto dcomplex_b = ComplexMtx::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(1234, 2); - auto dcomplex_x = ComplexMtx::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); auto result = ComplexMtx::create(ref, gko::dim<2>{1, 2}); auto dresult = ComplexMtx::create(dpcpp, gko::dim<2>{1, 2}); @@ -397,11 +377,9 @@ TEST_F(Dense, ComputeConjDotComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(1234, 2); - auto dcomplex_b = ComplexMtx::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(1234, 2); - auto dcomplex_x = ComplexMtx::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); auto result = ComplexMtx::create(ref, gko::dim<2>{1, 2}); auto dresult = ComplexMtx::create(dpcpp, gko::dim<2>{1, 2}); diff --git a/dpcpp/test/matrix/diagonal_kernels.cpp b/dpcpp/test/matrix/diagonal_kernels.cpp index 352c5e40823..a1000ef21a8 100644 --- a/dpcpp/test/matrix/diagonal_kernels.cpp +++ b/dpcpp/test/matrix/diagonal_kernels.cpp @@ -125,39 +125,29 @@ class Diagonal : public ::testing::Test { void set_up_apply_data() { diag = gen_diag(mtx_size[0]); - ddiag = Diag::create(dpcpp); - ddiag->copy_from(diag.get()); + ddiag = gko::clone(dpcpp, diag); dense1 = gen_mtx(mtx_size[0], mtx_size[1], mtx_size[1]); dense2 = gen_mtx(mtx_size[1], mtx_size[0], mtx_size[0]); denseexpected1 = gen_mtx(mtx_size[0], mtx_size[1], mtx_size[1]); denseexpected2 = gen_mtx(mtx_size[1], mtx_size[0], mtx_size[0]); - ddense1 = Dense::create(dpcpp); - ddense1->copy_from(dense1.get()); - ddense2 = Dense::create(dpcpp); - ddense2->copy_from(dense2.get()); - denseresult1 = Dense::create(dpcpp); - denseresult1->copy_from(denseexpected1.get()); - denseresult2 = Dense::create(dpcpp); - denseresult2->copy_from(denseexpected2.get()); + ddense1 = gko::clone(dpcpp, dense1); + ddense2 = gko::clone(dpcpp, dense2); + denseresult1 = gko::clone(dpcpp, denseexpected1); + denseresult2 = gko::clone(dpcpp, denseexpected2); csr1 = gen_mtx(mtx_size[0], mtx_size[1], 1); csr2 = gen_mtx(mtx_size[1], mtx_size[0], 1); csrexpected1 = gen_mtx(mtx_size[0], mtx_size[1], 1); csrexpected2 = gen_mtx(mtx_size[1], mtx_size[0], 1); - dcsr1 = Csr::create(dpcpp); - dcsr1->copy_from(csr1.get()); - dcsr2 = Csr::create(dpcpp); - dcsr2->copy_from(csr2.get()); - csrresult1 = Csr::create(dpcpp); - csrresult1->copy_from(csrexpected1.get()); - csrresult2 = Csr::create(dpcpp); - csrresult2->copy_from(csrexpected2.get()); + dcsr1 = gko::clone(dpcpp, csr1); + dcsr2 = gko::clone(dpcpp, csr2); + csrresult1 = gko::clone(dpcpp, csrexpected1); + csrresult2 = gko::clone(dpcpp, csrexpected2); } void set_up_complex_data() { cdiag = gen_cdiag(mtx_size[0]); - dcdiag = ComplexDiag::create(dpcpp); - dcdiag->copy_from(cdiag.get()); + dcdiag = gko::clone(dpcpp, cdiag); } std::shared_ptr ref; diff --git a/dpcpp/test/matrix/ell_kernels.cpp b/dpcpp/test/matrix/ell_kernels.cpp index 3b735aa686e..73375af4831 100644 --- a/dpcpp/test/matrix/ell_kernels.cpp +++ b/dpcpp/test/matrix/ell_kernels.cpp @@ -110,24 +110,15 @@ class Ell : public ::testing::Test { alpha2 = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); beta2 = gko::initialize({-1.0}, ref); - dmtx = Mtx::create(dpcpp); - dmtx->copy_from(mtx.get()); - dresult = Vec::create(dpcpp); - dresult->copy_from(expected.get()); - dresult2 = Vec2::create(dpcpp); - dresult2->copy_from(expected2.get()); - dy = Vec::create(dpcpp); - dy->copy_from(y.get()); - dy2 = Vec2::create(dpcpp); - dy2->copy_from(y2.get()); - dalpha = Vec::create(dpcpp); - dalpha->copy_from(alpha.get()); - dalpha2 = Vec2::create(dpcpp); - dalpha2->copy_from(alpha2.get()); - dbeta = Vec::create(dpcpp); - dbeta->copy_from(beta.get()); - dbeta2 = Vec2::create(dpcpp); - dbeta2->copy_from(beta2.get()); + dmtx = gko::clone(dpcpp, mtx); + dresult = gko::clone(dpcpp, expected); + dresult2 = gko::clone(dpcpp, expected2); + dy = gko::clone(dpcpp, y); + dy2 = gko::clone(dpcpp, y2); + dalpha = gko::clone(dpcpp, alpha); + dalpha2 = gko::clone(dpcpp, alpha2); + dbeta = gko::clone(dpcpp, beta); + dbeta2 = gko::clone(dpcpp, beta2); } std::shared_ptr ref; @@ -533,11 +524,9 @@ TEST_F(Ell, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(size[1], 3); - auto dcomplex_b = ComplexVec::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(size[0], 3); - auto dcomplex_x = ComplexVec::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -550,11 +539,9 @@ TEST_F(Ell, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(size[1], 3); - auto dcomplex_b = ComplexVec::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(size[0], 3); - auto dcomplex_x = ComplexVec::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); diff --git a/dpcpp/test/matrix/fbcsr_kernels.cpp b/dpcpp/test/matrix/fbcsr_kernels.cpp index 5b2dcf19628..e293e40a760 100644 --- a/dpcpp/test/matrix/fbcsr_kernels.cpp +++ b/dpcpp/test/matrix/fbcsr_kernels.cpp @@ -80,8 +80,7 @@ TEST_F(Fbcsr, CanWriteFromMatrixOnDevice) using MatData = gko::matrix_data; gko::testing::FbcsrSample sample(ref); auto refmat = sample.generate_fbcsr(); - auto dpcppmat = Mtx::create(dpcpp); - dpcppmat->copy_from(gko::lend(refmat)); + auto dpcppmat = gko::clone(dpcpp, refmat); MatData refdata; MatData dpcppdata; diff --git a/dpcpp/test/matrix/hybrid_kernels.cpp b/dpcpp/test/matrix/hybrid_kernels.cpp index 016c9c9e608..a43b87a4903 100644 --- a/dpcpp/test/matrix/hybrid_kernels.cpp +++ b/dpcpp/test/matrix/hybrid_kernels.cpp @@ -99,14 +99,10 @@ class Hybrid : public ::testing::Test { beta = gko::initialize({-1.0}, ref); dmtx = Mtx::create(dpcpp, strategy); dmtx->copy_from(mtx.get()); - dresult = Vec::create(dpcpp); - dresult->copy_from(expected.get()); - dy = Vec::create(dpcpp); - dy->copy_from(y.get()); - dalpha = Vec::create(dpcpp); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(dpcpp); - dbeta->copy_from(beta.get()); + dresult = gko::clone(dpcpp, expected); + dy = gko::clone(dpcpp, y); + dalpha = gko::clone(dpcpp, alpha); + dbeta = gko::clone(dpcpp, beta); } @@ -190,11 +186,9 @@ TEST_F(Hybrid, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3, 1); - auto dcomplex_b = ComplexVec::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(532, 3, 1); - auto dcomplex_x = ComplexVec::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -207,11 +201,9 @@ TEST_F(Hybrid, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3, 1); - auto dcomplex_b = ComplexVec::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(532, 3, 1); - auto dcomplex_x = ComplexVec::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); diff --git a/dpcpp/test/matrix/sellp_kernels.cpp b/dpcpp/test/matrix/sellp_kernels.cpp index 4fd072227bd..95aa87ce033 100644 --- a/dpcpp/test/matrix/sellp_kernels.cpp +++ b/dpcpp/test/matrix/sellp_kernels.cpp @@ -90,24 +90,18 @@ class Sellp : public ::testing::Test { int total_cols = 1, int slice_size = gko::matrix::default_slice_size, int stride_factor = gko::matrix::default_stride_factor) { - mtx = Mtx::create(ref); - mtx->copy_from(gen_mtx(532, 231)); + mtx = gen_mtx(532, 231); empty = Mtx::create(ref); expected = gen_mtx(532, total_cols); y = gen_mtx(231, total_cols); alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); - dmtx = Mtx::create(dpcpp); - dmtx->copy_from(mtx.get()); + dmtx = gko::clone(dpcpp, mtx); dempty = Mtx::create(dpcpp); - dresult = Vec::create(dpcpp); - dresult->copy_from(expected.get()); - dy = Vec::create(dpcpp); - dy->copy_from(y.get()); - dalpha = Vec::create(dpcpp); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(dpcpp); - dbeta->copy_from(beta.get()); + dresult = gko::clone(dpcpp, expected); + dy = gko::clone(dpcpp, y); + dalpha = gko::clone(dpcpp, alpha); + dbeta = gko::clone(dpcpp, beta); } std::shared_ptr ref; @@ -225,11 +219,9 @@ TEST_F(Sellp, ApplyToComplexIsEquivalentToRef) { set_up_apply_matrix(64); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -242,11 +234,9 @@ TEST_F(Sellp, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_matrix(64); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(dpcpp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(dpcpp, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(dpcpp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(dpcpp, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); diff --git a/dpcpp/test/solver/cb_gmres_kernels.cpp b/dpcpp/test/solver/cb_gmres_kernels.cpp index 5ebbe3a810e..41784c10f57 100644 --- a/dpcpp/test/solver/cb_gmres_kernels.cpp +++ b/dpcpp/test/solver/cb_gmres_kernels.cpp @@ -173,35 +173,23 @@ class CbGmres : public ::testing::Test { num_reorth->get_data()[i] = 5; } - d_x = Mtx::create(dpcpp); - d_x->copy_from(x.get()); + d_x = gko::clone(dpcpp, x); d_before_preconditioner = Mtx::create_with_config_of(d_x.get()); - d_y = Mtx::create(dpcpp); - d_y->copy_from(y.get()); - d_b = Mtx::create(dpcpp); - d_b->copy_from(b.get()); - d_arnoldi_norm = Mtx::create(dpcpp); - d_arnoldi_norm->copy_from(arnoldi_norm.get()); + d_y = gko::clone(dpcpp, y); + d_b = gko::clone(dpcpp, b); + d_arnoldi_norm = gko::clone(dpcpp, arnoldi_norm); d_range_helper = Range3dHelper{dpcpp, {}}; d_range_helper = range_helper; - d_next_krylov_basis = Mtx::create(dpcpp); - d_next_krylov_basis->copy_from(next_krylov_basis.get()); - d_hessenberg = Mtx::create(dpcpp); - d_hessenberg->copy_from(hessenberg.get()); - d_hessenberg_iter = Mtx::create(dpcpp); - d_hessenberg_iter->copy_from(hessenberg_iter.get()); - d_buffer_iter = Mtx::create(dpcpp); - d_buffer_iter->copy_from(buffer_iter.get()); - d_residual = Mtx::create(dpcpp); - d_residual->copy_from(residual.get()); - d_residual_norm = Mtx::create(dpcpp); - d_residual_norm->copy_from(residual_norm.get()); - d_residual_norm_collection = Mtx::create(dpcpp); - d_residual_norm_collection->copy_from(residual_norm_collection.get()); - d_givens_sin = Mtx::create(dpcpp); - d_givens_sin->copy_from(givens_sin.get()); - d_givens_cos = Mtx::create(dpcpp); - d_givens_cos->copy_from(givens_cos.get()); + d_next_krylov_basis = gko::clone(dpcpp, next_krylov_basis); + d_hessenberg = gko::clone(dpcpp, hessenberg); + d_hessenberg_iter = gko::clone(dpcpp, hessenberg_iter); + d_buffer_iter = gko::clone(dpcpp, buffer_iter); + d_residual = gko::clone(dpcpp, residual); + d_residual_norm = gko::clone(dpcpp, residual_norm); + d_residual_norm_collection = + gko::clone(dpcpp, residual_norm_collection); + d_givens_sin = gko::clone(dpcpp, givens_sin); + d_givens_cos = gko::clone(dpcpp, givens_cos); d_stop_status = std::unique_ptr>( new gko::Array(dpcpp, n)); *d_stop_status = *stop_status; diff --git a/dpcpp/test/solver/gmres_kernels.cpp b/dpcpp/test/solver/gmres_kernels.cpp index 72f7ba0ae06..30f3c484ae5 100644 --- a/dpcpp/test/solver/gmres_kernels.cpp +++ b/dpcpp/test/solver/gmres_kernels.cpp @@ -126,29 +126,19 @@ class Gmres : public ::testing::Test { final_iter_nums->get_data()[i] = 5; } - d_x = Mtx::create(dpcpp); - d_x->copy_from(x.get()); + d_x = gko::clone(dpcpp, x); d_before_preconditioner = Mtx::create_with_config_of(d_x.get()); - d_y = Mtx::create(dpcpp); - d_y->copy_from(y.get()); - d_b = Mtx::create(dpcpp); - d_b->copy_from(b.get()); - d_krylov_bases = Mtx::create(dpcpp); - d_krylov_bases->copy_from(krylov_bases.get()); - d_hessenberg = Mtx::create(dpcpp); - d_hessenberg->copy_from(hessenberg.get()); - d_hessenberg_iter = Mtx::create(dpcpp); - d_hessenberg_iter->copy_from(hessenberg_iter.get()); - d_residual = Mtx::create(dpcpp); - d_residual->copy_from(residual.get()); - d_residual_norm = NormVector::create(dpcpp); - d_residual_norm->copy_from(residual_norm.get()); - d_residual_norm_collection = Mtx::create(dpcpp); - d_residual_norm_collection->copy_from(residual_norm_collection.get()); - d_givens_sin = Mtx::create(dpcpp); - d_givens_sin->copy_from(givens_sin.get()); - d_givens_cos = Mtx::create(dpcpp); - d_givens_cos->copy_from(givens_cos.get()); + d_y = gko::clone(dpcpp, y); + d_b = gko::clone(dpcpp, b); + d_krylov_bases = gko::clone(dpcpp, krylov_bases); + d_hessenberg = gko::clone(dpcpp, hessenberg); + d_hessenberg_iter = gko::clone(dpcpp, hessenberg_iter); + d_residual = gko::clone(dpcpp, residual); + d_residual_norm = gko::clone(dpcpp, residual_norm); + d_residual_norm_collection = + gko::clone(dpcpp, residual_norm_collection); + d_givens_sin = gko::clone(dpcpp, givens_sin); + d_givens_cos = gko::clone(dpcpp, givens_cos); d_stop_status = std::unique_ptr>( new gko::Array(dpcpp, nrhs)); *d_stop_status = *stop_status; diff --git a/dpcpp/test/solver/idr_kernels.cpp b/dpcpp/test/solver/idr_kernels.cpp index 9b655f558be..d5df8d0a0de 100644 --- a/dpcpp/test/solver/idr_kernels.cpp +++ b/dpcpp/test/solver/idr_kernels.cpp @@ -132,41 +132,23 @@ class Idr : public ::testing::Test { stop_status->get_data()[i].reset(); } - d_mtx = Mtx::create(dpcpp); - d_x = Mtx::create(dpcpp); - d_b = Mtx::create(dpcpp); - d_r = Mtx::create(dpcpp); - d_m = Mtx::create(dpcpp); - d_f = Mtx::create(dpcpp); - d_g = Mtx::create(dpcpp); - d_u = Mtx::create(dpcpp); - d_c = Mtx::create(dpcpp); - d_v = Mtx::create(dpcpp); - d_p = Mtx::create(dpcpp); - d_alpha = Mtx::create(dpcpp); - d_omega = Mtx::create(dpcpp); - d_tht = Mtx::create(dpcpp); - d_residual_norm = Mtx::create(dpcpp); - d_stop_status = std::unique_ptr>( - new gko::Array(dpcpp)); - - d_mtx->copy_from(mtx.get()); - d_x->copy_from(x.get()); - d_b->copy_from(b.get()); - d_r->copy_from(r.get()); - d_m->copy_from(m.get()); - d_f->copy_from(f.get()); - d_g->copy_from(g.get()); - d_u->copy_from(u.get()); - d_c->copy_from(c.get()); - d_v->copy_from(v.get()); - d_p->copy_from(p.get()); - d_alpha->copy_from(alpha.get()); - d_omega->copy_from(omega.get()); - d_tht->copy_from(tht.get()); - d_residual_norm->copy_from(residual_norm.get()); - *d_stop_status = - *stop_status; // copy_from is not a public member function of Array + d_mtx = gko::clone(dpcpp, mtx); + d_x = gko::clone(dpcpp, x); + d_b = gko::clone(dpcpp, b); + d_r = gko::clone(dpcpp, r); + d_m = gko::clone(dpcpp, m); + d_f = gko::clone(dpcpp, f); + d_g = gko::clone(dpcpp, g); + d_u = gko::clone(dpcpp, u); + d_c = gko::clone(dpcpp, c); + d_v = gko::clone(dpcpp, v); + d_p = gko::clone(dpcpp, p); + d_alpha = gko::clone(dpcpp, alpha); + d_omega = gko::clone(dpcpp, omega); + d_tht = gko::clone(dpcpp, tht); + d_residual_norm = gko::clone(dpcpp, residual_norm); + d_stop_status = std::make_unique>( + dpcpp, *stop_status); } std::shared_ptr ref; diff --git a/dpcpp/test/stop/residual_norm_kernels.cpp b/dpcpp/test/stop/residual_norm_kernels.cpp index d67dfc086c5..e54c0eff8cf 100644 --- a/dpcpp/test/stop/residual_norm_kernels.cpp +++ b/dpcpp/test/stop/residual_norm_kernels.cpp @@ -86,13 +86,11 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalForRhsResNorm) auto res = gko::initialize({100.0}, ref_); auto res_norm = gko::initialize({0.0}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(dpcpp_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(dpcpp_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); auto rhs_norm = gko::initialize({0.0}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(dpcpp_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(dpcpp_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -133,14 +131,12 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalMultipleRHSForRhsResNorm) auto res = gko::initialize({{100.0, 100.0}}, ref_); auto res_norm = gko::initialize({{0.0, 0.0}}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(dpcpp_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(dpcpp_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); auto rhs_norm = gko::initialize({{0.0, 0.0}}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(dpcpp_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(dpcpp_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -182,11 +178,9 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalForRelResNorm) auto res = gko::initialize({100.0}, ref_); auto res_norm = gko::initialize({0.0}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(dpcpp_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(dpcpp_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); - std::shared_ptr d_rhs = Mtx::create(dpcpp_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(dpcpp_, rhs); auto criterion = rel_factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; @@ -228,12 +222,10 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalMultipleRHSForRelResNorm) auto res = gko::initialize({{100.0, 100.0}}, ref_); auto res_norm = gko::initialize({{0.0, 0.0}}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(dpcpp_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(dpcpp_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); - std::shared_ptr d_rhs = Mtx::create(dpcpp_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(dpcpp_, rhs); auto criterion = rel_factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; @@ -276,11 +268,9 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalForAbsResNorm) auto res = gko::initialize({100.0}, ref_); auto res_norm = gko::initialize({0.0}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(dpcpp_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(dpcpp_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); - std::shared_ptr d_rhs = Mtx::create(dpcpp_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(dpcpp_, rhs); auto criterion = abs_factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; @@ -322,12 +312,10 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalMultipleRHSForAbsResNorm) auto res = gko::initialize({{100.0, 100.0}}, ref_); auto res_norm = gko::initialize({{0.0, 0.0}}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(dpcpp_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(dpcpp_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); - std::shared_ptr d_rhs = Mtx::create(dpcpp_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(dpcpp_, rhs); auto criterion = abs_factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; @@ -391,11 +379,9 @@ TEST_F(ResidualNormReduction, WaitsTillResidualGoal) auto res = gko::initialize({100.0}, ref_); auto res_norm = gko::initialize({0.0}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(dpcpp_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(dpcpp_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); - std::shared_ptr d_rhs = Mtx::create(dpcpp_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(dpcpp_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -436,12 +422,10 @@ TEST_F(ResidualNormReduction, WaitsTillResidualGoalMultipleRHS) auto res = gko::initialize({{100.0, 100.0}}, ref_); auto res_norm = gko::initialize({{0.0, 0.0}}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(dpcpp_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(dpcpp_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); - std::shared_ptr d_rhs = Mtx::create(dpcpp_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(dpcpp_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -502,13 +486,11 @@ class RelativeResidualNorm : public ::testing::Test { TEST_F(RelativeResidualNorm, WaitsTillResidualGoal) { auto res = gko::initialize({100.0}, ref_); - auto d_res = Mtx::create(dpcpp_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(dpcpp_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); auto rhs_norm = gko::initialize({0.0}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(dpcpp_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(dpcpp_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -547,14 +529,12 @@ TEST_F(RelativeResidualNorm, WaitsTillResidualGoal) TEST_F(RelativeResidualNorm, WaitsTillResidualGoalMultipleRHS) { auto res = gko::initialize({{100.0, 100.0}}, ref_); - auto d_res = Mtx::create(dpcpp_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(dpcpp_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); auto rhs_norm = gko::initialize({{0.0, 0.0}}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(dpcpp_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(dpcpp_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -615,13 +595,11 @@ class ImplicitResidualNorm : public ::testing::Test { TEST_F(ImplicitResidualNorm, WaitsTillResidualGoal) { auto res = gko::initialize({100.0}, ref_); - auto d_res = Mtx::create(dpcpp_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(dpcpp_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); auto rhs_norm = gko::initialize({0.0}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(dpcpp_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(dpcpp_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -660,14 +638,12 @@ TEST_F(ImplicitResidualNorm, WaitsTillResidualGoal) TEST_F(ImplicitResidualNorm, WaitsTillResidualGoalMultipleRHS) { auto res = gko::initialize({{100.0, 100.0}}, ref_); - auto d_res = Mtx::create(dpcpp_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(dpcpp_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); auto rhs_norm = gko::initialize({{0.0, 0.0}}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(dpcpp_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(dpcpp_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -728,11 +704,9 @@ class AbsoluteResidualNorm : public ::testing::Test { TEST_F(AbsoluteResidualNorm, WaitsTillResidualGoal) { auto res = gko::initialize({100.0}, ref_); - auto d_res = Mtx::create(dpcpp_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(dpcpp_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); - std::shared_ptr d_rhs = Mtx::create(dpcpp_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(dpcpp_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -771,12 +745,10 @@ TEST_F(AbsoluteResidualNorm, WaitsTillResidualGoal) TEST_F(AbsoluteResidualNorm, WaitsTillResidualGoalMultipleRHS) { auto res = gko::initialize({{100.0, 100.0}}, ref_); - auto d_res = Mtx::create(dpcpp_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(dpcpp_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); - std::shared_ptr d_rhs = Mtx::create(dpcpp_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(dpcpp_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; diff --git a/examples/adaptiveprecision-blockjacobi/adaptiveprecision-blockjacobi.cpp b/examples/adaptiveprecision-blockjacobi/adaptiveprecision-blockjacobi.cpp index b3e672e6c1f..4e2be428fd1 100644 --- a/examples/adaptiveprecision-blockjacobi/adaptiveprecision-blockjacobi.cpp +++ b/examples/adaptiveprecision-blockjacobi/adaptiveprecision-blockjacobi.cpp @@ -94,10 +94,8 @@ int main(int argc, char *argv[]) for (auto i = 0; i < size; i++) { host_x->at(i, 0) = 1.; } - auto x = vec::create(exec); - auto b = vec::create(exec); - x->copy_from(host_x.get()); - b->copy_from(host_x.get()); + auto x = gko::clone(exec, host_x); + auto b = gko::clone(exec, host_x); // Calculate initial residual by overwriting b auto one = gko::initialize({1.0}, exec); diff --git a/examples/ir-ilu-preconditioned-solver/ir-ilu-preconditioned-solver.cpp b/examples/ir-ilu-preconditioned-solver/ir-ilu-preconditioned-solver.cpp index aab893c6efa..495ad7e0ee8 100644 --- a/examples/ir-ilu-preconditioned-solver/ir-ilu-preconditioned-solver.cpp +++ b/examples/ir-ilu-preconditioned-solver/ir-ilu-preconditioned-solver.cpp @@ -97,12 +97,9 @@ int main(int argc, char *argv[]) for (gko::size_type i = 0; i < num_rows; i++) { host_x->at(i, 0) = 1.; } - auto x = vec::create(exec); - auto b = vec::create(exec); - x->copy_from(host_x.get()); - b->copy_from(host_x.get()); - auto clone_x = vec::create(exec); - clone_x->copy_from(lend(x)); + auto x = gko::clone(exec, host_x); + auto b = gko::clone(exec, host_x); + auto clone_x = gko::clone(exec, x); // Generate incomplete factors using ParILU auto par_ilu_fact = diff --git a/examples/iterative-refinement/iterative-refinement.cpp b/examples/iterative-refinement/iterative-refinement.cpp index 20a3514316e..4e3ad030e31 100644 --- a/examples/iterative-refinement/iterative-refinement.cpp +++ b/examples/iterative-refinement/iterative-refinement.cpp @@ -95,10 +95,8 @@ int main(int argc, char *argv[]) for (auto i = 0; i < size; i++) { host_x->at(i, 0) = 1.; } - auto x = gko::matrix::Dense::create(exec); - auto b = gko::matrix::Dense::create(exec); - x->copy_from(host_x.get()); - b->copy_from(host_x.get()); + auto x = gko::clone(exec, host_x); + auto b = gko::clone(exec, host_x); // Calculate initial residual by overwriting b auto one = gko::initialize({1.0}, exec); diff --git a/examples/mixed-precision-ir/mixed-precision-ir.cpp b/examples/mixed-precision-ir/mixed-precision-ir.cpp index 499924fcfe9..5735508c43f 100644 --- a/examples/mixed-precision-ir/mixed-precision-ir.cpp +++ b/examples/mixed-precision-ir/mixed-precision-ir.cpp @@ -102,10 +102,8 @@ int main(int argc, char *argv[]) for (auto i = 0; i < size; i++) { host_x->at(i, 0) = 1.; } - auto x = vec::create(exec); - auto b = vec::create(exec); - x->copy_from(host_x.get()); - b->copy_from(host_x.get()); + auto x = gko::clone(exec, host_x); + auto b = gko::clone(exec, host_x); // Calculate initial residual by overwriting b auto one = gko::initialize({1.0}, exec); diff --git a/examples/mixed-spmv/mixed-spmv.cpp b/examples/mixed-spmv/mixed-spmv.cpp index 7a6e6a8b542..64eff3aa96c 100644 --- a/examples/mixed-spmv/mixed-spmv.cpp +++ b/examples/mixed-spmv/mixed-spmv.cpp @@ -212,9 +212,8 @@ int main(int argc, char *argv[]) host_b->at(i, 0) = get_rand_value(dist, rand_engine); } // copy the data from host to device - auto hp_b = share(hp_vec::create(exec)); + auto hp_b = share(gko::clone(exec, host_b)); auto lp_b = share(lp_vec::create(exec)); - hp_b->copy_from(lend(host_b)); lp_b->copy_from(lend(hp_b)); // create several result x vector in different precision diff --git a/hip/test/factorization/ic_kernels.cpp b/hip/test/factorization/ic_kernels.cpp index 34899790c7b..151046aa704 100644 --- a/hip/test/factorization/ic_kernels.cpp +++ b/hip/test/factorization/ic_kernels.cpp @@ -81,8 +81,7 @@ class Ic : public ::testing::Test { << "\", which is required for this test.\n"; } csr_ref = gko::read(input_file, ref); - csr_hip = Csr::create(hip); - csr_hip->copy_from(gko::lend(csr_ref)); + csr_hip = gko::clone(hip, csr_ref); } }; diff --git a/hip/test/factorization/ilu_kernels.cpp b/hip/test/factorization/ilu_kernels.cpp index e8c7ec41d6f..32fc9c6cd16 100644 --- a/hip/test/factorization/ilu_kernels.cpp +++ b/hip/test/factorization/ilu_kernels.cpp @@ -81,8 +81,7 @@ class Ilu : public ::testing::Test { << "\", which is required for this test.\n"; } csr_ref = gko::read(input_file, ref); - csr_hip = Csr::create(hip); - csr_hip->copy_from(gko::lend(csr_ref)); + csr_hip = gko::clone(hip, csr_ref); } }; diff --git a/hip/test/factorization/par_ic_kernels.hip.cpp b/hip/test/factorization/par_ic_kernels.hip.cpp index e58b4da93e4..7e4bb7d04c4 100644 --- a/hip/test/factorization/par_ic_kernels.hip.cpp +++ b/hip/test/factorization/par_ic_kernels.hip.cpp @@ -82,8 +82,7 @@ class ParIc : public ::testing::Test { dmtx_ani = Csr::create(hip); dmtx_l_ani = Csr::create(hip); dmtx_l_ani_init = Csr::create(hip); - dmtx_l = Csr::create(hip); - dmtx_l->copy_from(lend(mtx_l)); + dmtx_l = gko::clone(hip, mtx_l); } void SetUp() @@ -109,8 +108,7 @@ class ParIc : public ::testing::Test { l_builder.get_value_array().resize_and_reset(l_nnz); gko::kernels::reference::factorization::initialize_l( ref, lend(mtx_ani), lend(mtx_l_ani), false); - mtx_l_ani_init = Csr::create(ref); - mtx_l_ani_init->copy_from(lend(mtx_l_ani)); + mtx_l_ani_init = gko::clone(ref, mtx_l_ani); gko::kernels::reference::par_ic_factorization::init_factor( ref, lend(mtx_l_ani_init)); } diff --git a/hip/test/factorization/par_ict_kernels.hip.cpp b/hip/test/factorization/par_ict_kernels.hip.cpp index 6e334da4939..4892204cf2b 100644 --- a/hip/test/factorization/par_ict_kernels.hip.cpp +++ b/hip/test/factorization/par_ict_kernels.hip.cpp @@ -84,10 +84,8 @@ class ParIct : public ::testing::Test { dmtx_ani = Csr::create(hip); dmtx_l_ani = Csr::create(hip); - dmtx = Csr::create(hip); - dmtx->copy_from(lend(mtx)); - dmtx_l = Csr::create(hip); - dmtx_l->copy_from(lend(mtx_l)); + dmtx = gko::clone(hip, mtx); + dmtx_l = gko::clone(hip, mtx_l); } void SetUp() diff --git a/hip/test/factorization/par_ilu_kernels.hip.cpp b/hip/test/factorization/par_ilu_kernels.hip.cpp index 98811f97af3..552624012e7 100644 --- a/hip/test/factorization/par_ilu_kernels.hip.cpp +++ b/hip/test/factorization/par_ilu_kernels.hip.cpp @@ -89,8 +89,7 @@ class ParIlu : public ::testing::Test { << "\", which is required for this test.\n"; } auto csr_ref_temp = gko::read(input_file, ref); - auto csr_hip_temp = Csr::create(hip); - csr_hip_temp->copy_from(gko::lend(csr_ref_temp)); + auto csr_hip_temp = gko::clone(hip, csr_ref_temp); // Make sure there are diagonal elements present gko::kernels::reference::factorization::add_diagonal_elements( ref, gko::lend(csr_ref_temp), false); @@ -225,8 +224,7 @@ TEST_F(ParIlu, HipKernelAddDiagonalElementsSortedEquivalentToRef) index_type num_rows{600}; index_type num_cols{600}; auto mtx_ref = gen_mtx(num_rows, num_cols); - auto mtx_hip = Csr::create(hip); - mtx_hip->copy_from(gko::lend(mtx_ref)); + auto mtx_hip = gko::clone(hip, mtx_ref); gko::kernels::reference::factorization::add_diagonal_elements( ref, gko::lend(mtx_ref), true); @@ -245,8 +243,7 @@ TEST_F(ParIlu, HipKernelAddDiagonalElementsUnsortedEquivalentToRef) index_type num_rows{600}; index_type num_cols{600}; auto mtx_ref = gen_unsorted_mtx(num_rows, num_cols); - auto mtx_hip = Csr::create(hip); - mtx_hip->copy_from(gko::lend(mtx_ref)); + auto mtx_hip = gko::clone(hip, mtx_ref); gko::kernels::reference::factorization::add_diagonal_elements( ref, gko::lend(mtx_ref), false); @@ -265,8 +262,7 @@ TEST_F(ParIlu, HipKernelAddDiagonalElementsNonSquareEquivalentToRef) index_type num_rows{600}; index_type num_cols{500}; auto mtx_ref = gen_mtx(num_rows, num_cols); - auto mtx_hip = Csr::create(hip); - mtx_hip->copy_from(gko::lend(mtx_ref)); + auto mtx_hip = gko::clone(hip, mtx_ref); gko::kernels::reference::factorization::add_diagonal_elements( ref, gko::lend(mtx_ref), true); diff --git a/hip/test/factorization/par_ilut_kernels.hip.cpp b/hip/test/factorization/par_ilut_kernels.hip.cpp index 1a362c3717e..7b68b024a76 100644 --- a/hip/test/factorization/par_ilut_kernels.hip.cpp +++ b/hip/test/factorization/par_ilut_kernels.hip.cpp @@ -117,26 +117,18 @@ class ParIlut : public ::testing::Test { std::normal_distribution<>(-1.0, 1.0), rand_engine, ref); - dmtx1 = Csr::create(hip); - dmtx1->copy_from(mtx1.get()); - dmtx2 = Csr::create(hip); - dmtx2->copy_from(mtx2.get()); - dmtx_square = Csr::create(hip); - dmtx_square->copy_from(mtx_square.get()); + dmtx1 = gko::clone(hip, mtx1); + dmtx2 = gko::clone(hip, mtx2); + dmtx_square = gko::clone(hip, mtx_square); dmtx_ani = Csr::create(hip); dmtx_l_ani = Csr::create(hip); dmtx_u_ani = Csr::create(hip); dmtx_ut_ani = Csr::create(hip); - dmtx_l = Csr::create(hip); - dmtx_l->copy_from(mtx_l.get()); - dmtx_l2 = Csr::create(hip); - dmtx_l2->copy_from(mtx_l2.get()); - dmtx_u = Csr::create(hip); - dmtx_u->copy_from(mtx_u.get()); - dmtx_l_complex = ComplexCsr::create(hip); - dmtx_l_complex->copy_from(mtx_l_complex.get()); - dmtx_u_complex = ComplexCsr::create(hip); - dmtx_u_complex->copy_from(mtx_u_complex.get()); + dmtx_l = gko::clone(hip, mtx_l); + dmtx_l2 = gko::clone(hip, mtx_l2); + dmtx_u = gko::clone(hip, mtx_u); + dmtx_l_complex = gko::clone(hip, mtx_l_complex); + dmtx_u_complex = gko::clone(hip, mtx_u_complex); } void SetUp() diff --git a/hip/test/matrix/coo_kernels.hip.cpp b/hip/test/matrix/coo_kernels.hip.cpp index aeaa9a50206..c56f988c353 100644 --- a/hip/test/matrix/coo_kernels.hip.cpp +++ b/hip/test/matrix/coo_kernels.hip.cpp @@ -87,22 +87,16 @@ class Coo : public ::testing::Test { void set_up_apply_data(int num_vectors = 1) { - mtx = Mtx::create(ref); - mtx->copy_from(gen_mtx(532, 231)); + mtx = gen_mtx(532, 231); expected = gen_mtx(532, num_vectors); y = gen_mtx(231, num_vectors); alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); - dmtx = Mtx::create(hip); - dmtx->copy_from(mtx.get()); - dresult = Vec::create(hip); - dresult->copy_from(expected.get()); - dy = Vec::create(hip); - dy->copy_from(y.get()); - dalpha = Vec::create(hip); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(hip); - dbeta->copy_from(beta.get()); + dmtx = gko::clone(hip, mtx); + dresult = gko::clone(hip, expected); + dy = gko::clone(hip, y); + dalpha = gko::clone(hip, alpha); + dbeta = gko::clone(hip, beta); } void unsort_mtx() @@ -293,11 +287,9 @@ TEST_F(Coo, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -310,11 +302,9 @@ TEST_F(Coo, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); @@ -327,11 +317,9 @@ TEST_F(Coo, ApplyAddToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); mtx->apply2(alpha.get(), complex_b.get(), complex_x.get()); dmtx->apply2(dalpha.get(), dcomplex_b.get(), dcomplex_x.get()); diff --git a/hip/test/matrix/csr_kernels.hip.cpp b/hip/test/matrix/csr_kernels.hip.cpp index 7a4e7a28ade..6948d2b7320 100644 --- a/hip/test/matrix/csr_kernels.hip.cpp +++ b/hip/test/matrix/csr_kernels.hip.cpp @@ -115,14 +115,10 @@ class Csr : public ::testing::Test { dmtx->copy_from(mtx.get()); square_dmtx = Mtx::create(hip, strategy); square_dmtx->copy_from(square_mtx.get()); - dresult = Vec::create(hip); - dresult->copy_from(expected.get()); - dy = Vec::create(hip); - dy->copy_from(y.get()); - dalpha = Vec::create(hip); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(hip); - dbeta->copy_from(beta.get()); + dresult = gko::clone(hip, expected); + dy = gko::clone(hip, y); + dalpha = gko::clone(hip, alpha); + dbeta = gko::clone(hip, beta); std::vector tmp(mtx->get_size()[0], 0); auto rng = std::default_random_engine{}; @@ -446,10 +442,8 @@ TEST_F(Csr, AdvancedApplyToIdentityMatrixIsEquivalentToRef) set_up_apply_data(std::make_shared(hip)); auto a = gen_mtx(mtx_size[0], mtx_size[1], 0); auto b = gen_mtx(mtx_size[0], mtx_size[1], 0); - auto da = Mtx::create(hip); - auto db = Mtx::create(hip); - da->copy_from(a.get()); - db->copy_from(b.get()); + auto da = gko::clone(hip, a); + auto db = gko::clone(hip, b); auto id = gko::matrix::Identity::create(ref, mtx_size[1]); auto did = gko::matrix::Identity::create(hip, mtx_size[1]); @@ -466,11 +460,9 @@ TEST_F(Csr, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(std::make_shared(hip)); auto complex_b = gen_mtx(this->mtx_size[1], 3, 1); - auto dcomplex_b = ComplexVec::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(this->mtx_size[0], 3, 1); - auto dcomplex_x = ComplexVec::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -483,11 +475,9 @@ TEST_F(Csr, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(std::make_shared(hip)); auto complex_b = gen_mtx(this->mtx_size[1], 3, 1); - auto dcomplex_b = ComplexVec::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(this->mtx_size[0], 3, 1); - auto dcomplex_x = ComplexVec::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); @@ -876,15 +866,11 @@ TEST_F(Csr, OneAutomaticalWorksWithDifferentMatrices) auto automatical = std::make_shared(hip); auto row_len_limit = std::max(automatical->nvidia_row_len_limit, automatical->amd_row_len_limit); - auto load_balance_mtx = Mtx::create(ref); - auto classical_mtx = Mtx::create(ref); - load_balance_mtx->copy_from( - gen_mtx(1, row_len_limit + 1000, row_len_limit + 1)); - classical_mtx->copy_from(gen_mtx(50, 50, 1)); - auto load_balance_mtx_d = Mtx::create(hip); - auto classical_mtx_d = Mtx::create(hip); - load_balance_mtx_d->copy_from(load_balance_mtx.get()); - classical_mtx_d->copy_from(classical_mtx.get()); + auto load_balance_mtx = + gen_mtx(1, row_len_limit + 1000, row_len_limit + 1); + auto classical_mtx = gen_mtx(50, 50, 1); + auto load_balance_mtx_d = gko::clone(hip, load_balance_mtx); + auto classical_mtx_d = gko::clone(hip, classical_mtx); load_balance_mtx_d->set_strategy(automatical); classical_mtx_d->set_strategy(automatical); diff --git a/hip/test/matrix/dense_kernels.hip.cpp b/hip/test/matrix/dense_kernels.hip.cpp index b736dc30117..cb6e84ac5e5 100644 --- a/hip/test/matrix/dense_kernels.hip.cpp +++ b/hip/test/matrix/dense_kernels.hip.cpp @@ -104,12 +104,9 @@ class Dense : public ::testing::Test { } else { alpha = gko::initialize({2.0}, ref); } - dx = Mtx::create(hip); - dx->copy_from(x.get()); - dy = Mtx::create(hip); - dy->copy_from(y.get()); - dalpha = Mtx::create(hip); - dalpha->copy_from(alpha.get()); + dx = gko::clone(hip, x); + dy = gko::clone(hip, y); + dalpha = gko::clone(hip, alpha); expected = Mtx::create(ref, gko::dim<2>{1, num_vecs}); dresult = Mtx::create(hip, gko::dim<2>{1, num_vecs}); } @@ -122,18 +119,12 @@ class Dense : public ::testing::Test { alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); square = gen_mtx(x->get_size()[0], x->get_size()[0]); - dx = Mtx::create(hip); - dx->copy_from(x.get()); - dy = Mtx::create(hip); - dy->copy_from(y.get()); - dresult = Mtx::create(hip); - dresult->copy_from(expected.get()); - dalpha = Mtx::create(hip); - dalpha->copy_from(alpha.get()); - dbeta = Mtx::create(hip); - dbeta->copy_from(beta.get()); - dsquare = Mtx::create(hip); - dsquare->copy_from(square.get()); + dx = gko::clone(hip, x); + dy = gko::clone(hip, y); + dresult = gko::clone(hip, expected); + dalpha = gko::clone(hip, alpha); + dbeta = gko::clone(hip, beta); + dsquare = gko::clone(hip, square); std::vector tmp(x->get_size()[0], 0); auto rng = std::default_random_engine{}; @@ -294,11 +285,9 @@ TEST_F(Dense, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = ComplexMtx::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(65, 1); - auto dcomplex_x = ComplexMtx::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); x->apply(complex_b.get(), complex_x.get()); dx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -311,11 +300,9 @@ TEST_F(Dense, ApplyToMixedComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = MixedComplexMtx::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(65, 1); - auto dcomplex_x = MixedComplexMtx::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); x->apply(complex_b.get(), complex_x.get()); dx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -328,11 +315,9 @@ TEST_F(Dense, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = ComplexMtx::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(65, 1); - auto dcomplex_x = ComplexMtx::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); x->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); @@ -345,11 +330,9 @@ TEST_F(Dense, AdvancedApplyToMixedComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = MixedComplexMtx::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(65, 1); - auto dcomplex_x = MixedComplexMtx::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); x->apply(convert(alpha).get(), complex_b.get(), convert(beta).get(), complex_x.get()); @@ -364,11 +347,9 @@ TEST_F(Dense, ComputeDotComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(1234, 2); - auto dcomplex_b = ComplexMtx::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(1234, 2); - auto dcomplex_x = ComplexMtx::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); auto result = ComplexMtx::create(ref, gko::dim<2>{1, 2}); auto dresult = ComplexMtx::create(hip, gko::dim<2>{1, 2}); @@ -383,11 +364,9 @@ TEST_F(Dense, ComputeConjDotComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(1234, 2); - auto dcomplex_b = ComplexMtx::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(1234, 2); - auto dcomplex_x = ComplexMtx::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); auto result = ComplexMtx::create(ref, gko::dim<2>{1, 2}); auto dresult = ComplexMtx::create(hip, gko::dim<2>{1, 2}); diff --git a/hip/test/matrix/diagonal_kernels.hip.cpp b/hip/test/matrix/diagonal_kernels.hip.cpp index 606e39db7e6..c3a0eec00bc 100644 --- a/hip/test/matrix/diagonal_kernels.hip.cpp +++ b/hip/test/matrix/diagonal_kernels.hip.cpp @@ -123,39 +123,29 @@ class Diagonal : public ::testing::Test { void set_up_apply_data() { diag = gen_diag(mtx_size[0]); - ddiag = Diag::create(hip); - ddiag->copy_from(diag.get()); + ddiag = gko::clone(hip, diag); dense1 = gen_mtx(mtx_size[0], mtx_size[1], mtx_size[1]); dense2 = gen_mtx(mtx_size[1], mtx_size[0], mtx_size[0]); denseexpected1 = gen_mtx(mtx_size[0], mtx_size[1], mtx_size[1]); denseexpected2 = gen_mtx(mtx_size[1], mtx_size[0], mtx_size[0]); - ddense1 = Dense::create(hip); - ddense1->copy_from(dense1.get()); - ddense2 = Dense::create(hip); - ddense2->copy_from(dense2.get()); - denseresult1 = Dense::create(hip); - denseresult1->copy_from(denseexpected1.get()); - denseresult2 = Dense::create(hip); - denseresult2->copy_from(denseexpected2.get()); + ddense1 = gko::clone(hip, dense1); + ddense2 = gko::clone(hip, dense2); + denseresult1 = gko::clone(hip, denseexpected1); + denseresult2 = gko::clone(hip, denseexpected2); csr1 = gen_mtx(mtx_size[0], mtx_size[1], 1); csr2 = gen_mtx(mtx_size[1], mtx_size[0], 1); csrexpected1 = gen_mtx(mtx_size[0], mtx_size[1], 1); csrexpected2 = gen_mtx(mtx_size[1], mtx_size[0], 1); - dcsr1 = Csr::create(hip); - dcsr1->copy_from(csr1.get()); - dcsr2 = Csr::create(hip); - dcsr2->copy_from(csr2.get()); - csrresult1 = Csr::create(hip); - csrresult1->copy_from(csrexpected1.get()); - csrresult2 = Csr::create(hip); - csrresult2->copy_from(csrexpected2.get()); + dcsr1 = gko::clone(hip, csr1); + dcsr2 = gko::clone(hip, csr2); + csrresult1 = gko::clone(hip, csrexpected1); + csrresult2 = gko::clone(hip, csrexpected2); } void set_up_complex_data() { cdiag = gen_cdiag(mtx_size[0]); - dcdiag = ComplexDiag::create(hip); - dcdiag->copy_from(cdiag.get()); + dcdiag = gko::clone(hip, cdiag); } std::shared_ptr ref; diff --git a/hip/test/matrix/ell_kernels.hip.cpp b/hip/test/matrix/ell_kernels.hip.cpp index 13c81fdafcf..fb349695887 100644 --- a/hip/test/matrix/ell_kernels.hip.cpp +++ b/hip/test/matrix/ell_kernels.hip.cpp @@ -104,24 +104,15 @@ class Ell : public ::testing::Test { alpha2 = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); beta2 = gko::initialize({-1.0}, ref); - dmtx = Mtx::create(hip); - dmtx->copy_from(mtx.get()); - dresult = Vec::create(hip); - dresult->copy_from(expected.get()); - dresult2 = Vec2::create(hip); - dresult2->copy_from(expected2.get()); - dy = Vec::create(hip); - dy->copy_from(y.get()); - dy2 = Vec2::create(hip); - dy2->copy_from(y2.get()); - dalpha = Vec::create(hip); - dalpha->copy_from(alpha.get()); - dalpha2 = Vec2::create(hip); - dalpha2->copy_from(alpha2.get()); - dbeta = Vec::create(hip); - dbeta->copy_from(beta.get()); - dbeta2 = Vec2::create(hip); - dbeta2->copy_from(beta2.get()); + dmtx = gko::clone(hip, mtx); + dresult = gko::clone(hip, expected); + dresult2 = gko::clone(hip, expected2); + dy = gko::clone(hip, y); + dy2 = gko::clone(hip, y2); + dalpha = gko::clone(hip, alpha); + dalpha2 = gko::clone(hip, alpha2); + dbeta = gko::clone(hip, beta); + dbeta2 = gko::clone(hip, beta2); } @@ -510,11 +501,9 @@ TEST_F(Ell, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(size[1], 3); - auto dcomplex_b = ComplexVec::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(size[0], 3); - auto dcomplex_x = ComplexVec::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -527,11 +516,9 @@ TEST_F(Ell, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(size[1], 3); - auto dcomplex_b = ComplexVec::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(size[0], 3); - auto dcomplex_x = ComplexVec::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); diff --git a/hip/test/matrix/fbcsr_kernels.hip.cpp b/hip/test/matrix/fbcsr_kernels.hip.cpp index 30c11fba2b8..07edd5bffb8 100644 --- a/hip/test/matrix/fbcsr_kernels.hip.cpp +++ b/hip/test/matrix/fbcsr_kernels.hip.cpp @@ -78,8 +78,7 @@ TEST_F(Fbcsr, CanWriteFromMatrixOnDevice) using MatData = gko::matrix_data; gko::testing::FbcsrSample sample(ref); auto refmat = sample.generate_fbcsr(); - auto hipmat = Mtx::create(hip); - hipmat->copy_from(gko::lend(refmat)); + auto hipmat = gko::clone(hip, refmat); MatData refdata; MatData hipdata; diff --git a/hip/test/matrix/hybrid_kernels.hip.cpp b/hip/test/matrix/hybrid_kernels.hip.cpp index a113ced6361..336398360e0 100644 --- a/hip/test/matrix/hybrid_kernels.hip.cpp +++ b/hip/test/matrix/hybrid_kernels.hip.cpp @@ -97,14 +97,10 @@ class Hybrid : public ::testing::Test { beta = gko::initialize({-1.0}, ref); dmtx = Mtx::create(hip, strategy); dmtx->copy_from(mtx.get()); - dresult = Vec::create(hip); - dresult->copy_from(expected.get()); - dy = Vec::create(hip); - dy->copy_from(y.get()); - dalpha = Vec::create(hip); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(hip); - dbeta->copy_from(beta.get()); + dresult = gko::clone(hip, expected); + dy = gko::clone(hip, y); + dalpha = gko::clone(hip, alpha); + dbeta = gko::clone(hip, beta); } @@ -188,11 +184,9 @@ TEST_F(Hybrid, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3, 1); - auto dcomplex_b = ComplexVec::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(532, 3, 1); - auto dcomplex_x = ComplexVec::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -205,11 +199,9 @@ TEST_F(Hybrid, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3, 1); - auto dcomplex_b = ComplexVec::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(532, 3, 1); - auto dcomplex_x = ComplexVec::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); diff --git a/hip/test/matrix/sellp_kernels.hip.cpp b/hip/test/matrix/sellp_kernels.hip.cpp index 5df39fc5356..60f5c456d83 100644 --- a/hip/test/matrix/sellp_kernels.hip.cpp +++ b/hip/test/matrix/sellp_kernels.hip.cpp @@ -88,24 +88,18 @@ class Sellp : public ::testing::Test { int total_cols = 1, int slice_size = gko::matrix::default_slice_size, int stride_factor = gko::matrix::default_stride_factor) { - mtx = Mtx::create(ref); - mtx->copy_from(gen_mtx(532, 231)); + mtx = gen_mtx(532, 231); empty = Mtx::create(ref); expected = gen_mtx(532, total_cols); y = gen_mtx(231, total_cols); alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); - dmtx = Mtx::create(hip); - dmtx->copy_from(mtx.get()); + dmtx = gko::clone(hip, mtx); dempty = Mtx::create(hip); - dresult = Vec::create(hip); - dresult->copy_from(expected.get()); - dy = Vec::create(hip); - dy->copy_from(y.get()); - dalpha = Vec::create(hip); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(hip); - dbeta->copy_from(beta.get()); + dresult = gko::clone(hip, expected); + dy = gko::clone(hip, y); + dalpha = gko::clone(hip, alpha); + dbeta = gko::clone(hip, beta); } std::shared_ptr ref; @@ -223,11 +217,9 @@ TEST_F(Sellp, ApplyToComplexIsEquivalentToRef) { set_up_apply_matrix(64); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -240,11 +232,9 @@ TEST_F(Sellp, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_matrix(64); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(hip); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(hip, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(hip); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(hip, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); diff --git a/hip/test/multigrid/amgx_pgm_kernels.cpp b/hip/test/multigrid/amgx_pgm_kernels.cpp index 923e8e0765a..55c8cada515 100644 --- a/hip/test/multigrid/amgx_pgm_kernels.cpp +++ b/hip/test/multigrid/amgx_pgm_kernels.cpp @@ -143,22 +143,14 @@ class AmgxPgm : public ::testing::Test { system_mtx = Csr::create(ref); system_dense->convert_to(system_mtx.get()); - d_agg.set_executor(hip); - d_unfinished_agg.set_executor(hip); - d_strongest_neighbor.set_executor(hip); - d_coarse_vector = Mtx::create(hip); - d_fine_vector = Mtx::create(hip); - d_weight_csr = Csr::create(hip); - d_weight_diag = Diag::create(hip); - d_system_mtx = Csr::create(hip); - d_agg = agg; - d_unfinished_agg = unfinished_agg; - d_strongest_neighbor = strongest_neighbor; - d_coarse_vector->copy_from(coarse_vector.get()); - d_fine_vector->copy_from(fine_vector.get()); - d_weight_csr->copy_from(weight_csr.get()); - d_weight_diag->copy_from(weight_diag.get()); - d_system_mtx->copy_from(system_mtx.get()); + d_agg = gko::Array(hip, agg); + d_unfinished_agg = gko::Array(hip, unfinished_agg); + d_strongest_neighbor = gko::Array(hip, strongest_neighbor); + d_coarse_vector = gko::clone(hip, coarse_vector); + d_fine_vector = gko::clone(hip, fine_vector); + d_weight_csr = gko::clone(hip, weight_csr); + d_weight_diag = gko::clone(hip, weight_diag); + d_system_mtx = gko::clone(hip, system_mtx); } void make_weight(Mtx *mtx) diff --git a/hip/test/preconditioner/isai_kernels.hip.cpp b/hip/test/preconditioner/isai_kernels.hip.cpp index bfcb226bbc1..bf050fb73ff 100644 --- a/hip/test/preconditioner/isai_kernels.hip.cpp +++ b/hip/test/preconditioner/isai_kernels.hip.cpp @@ -113,10 +113,8 @@ class Isai : public ::testing::Test { } inverse = clone_allocations(mtx.get()); - d_mtx = Csr::create(hip); - d_mtx->copy_from(mtx.get()); - d_inverse = Csr::create(hip); - d_inverse->copy_from(inverse.get()); + d_mtx = gko::clone(hip, mtx); + d_inverse = gko::clone(hip, inverse); } void ensure_diagonal(Dense *mtx) @@ -491,8 +489,7 @@ TEST_F(Isai, HipIsaiScaleExcessSolutionIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(hip); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(hip, e_rhs); d_inverse->copy_from(lend(inverse)); gko::kernels::reference::isai::scale_excess_solution( @@ -516,8 +513,7 @@ TEST_F(Isai, HipIsaiScalePartialExcessSolutionIsEquivalentToRef) auto e_dim = a1.get_data()[10] - a1.get_data()[5]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(hip); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(hip, e_rhs); gko::kernels::reference::isai::scale_excess_solution( ref, a1.get_const_data(), e_rhs.get(), 5u, 10u); @@ -540,8 +536,7 @@ TEST_F(Isai, HipIsaiScatterExcessSolutionLIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(hip); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(hip, e_rhs); d_inverse->copy_from(lend(inverse)); gko::kernels::reference::isai::scatter_excess_solution( @@ -566,8 +561,7 @@ TEST_F(Isai, HipIsaiScatterExcessSolutionUIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(hip); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(hip, e_rhs); // overwrite -1 values with inverse d_inverse->copy_from(lend(inverse)); @@ -593,8 +587,7 @@ TEST_F(Isai, HipIsaiScatterExcessSolutionAIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(hip); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(hip, e_rhs); // overwrite -1 values with inverse d_inverse->copy_from(lend(inverse)); @@ -620,8 +613,7 @@ TEST_F(Isai, HipIsaiScatterExcessSolutionSpdIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(hip); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(hip, e_rhs); // overwrite -1 values with inverse d_inverse->copy_from(lend(inverse)); @@ -647,8 +639,7 @@ TEST_F(Isai, HipIsaiScatterPartialExcessSolutionIsEquivalentToRef) auto e_dim = a1.get_data()[10] - a1.get_data()[5]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(hip); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(hip, e_rhs); // overwrite -1 values with inverse d_inverse->copy_from(lend(inverse)); diff --git a/hip/test/preconditioner/jacobi_kernels.cpp b/hip/test/preconditioner/jacobi_kernels.cpp index 4ef05dc7fff..7694f213713 100644 --- a/hip/test/preconditioner/jacobi_kernels.cpp +++ b/hip/test/preconditioner/jacobi_kernels.cpp @@ -131,13 +131,11 @@ class Jacobi : public ::testing::Test { b = gko::test::generate_random_matrix( dim, num_rhs, std::uniform_int_distribution<>(num_rhs, num_rhs), std::normal_distribution<>(0.0, 1.0), engine, ref); - d_b = Vec::create(hip); - d_b->copy_from(b.get()); + d_b = gko::clone(hip, b); x = gko::test::generate_random_matrix( dim, num_rhs, std::uniform_int_distribution<>(num_rhs, num_rhs), std::normal_distribution<>(0.0, 1.0), engine, ref); - d_x = Vec::create(hip); - d_x->copy_from(x.get()); + d_x = gko::clone(hip, x); } const gko::precision_reduction dp{}; @@ -511,12 +509,9 @@ TEST_F(Jacobi, HipScalarLinearCombinationApplyEquivalentToRef) std::normal_distribution<>(0.0, 1.0), engine, ref, gko::dim<2>(dim, 3), 4)); - auto d_smtx = gko::share(Mtx::create(hip)); - auto d_sb = gko::share(Vec::create(hip)); - auto d_sx = gko::share(Vec::create(hip)); - d_smtx->copy_from(smtx.get()); - d_sb->copy_from(sb.get()); - d_sx->copy_from(sx.get()); + auto d_smtx = gko::share(gko::clone(hip, smtx)); + auto d_sb = gko::share(gko::clone(hip, sb)); + auto d_sx = gko::share(gko::clone(hip, sx)); auto alpha = gko::initialize({2.0}, ref); auto d_alpha = gko::initialize({2.0}, hip); auto beta = gko::initialize({-1.0}, ref); diff --git a/hip/test/solver/cb_gmres_kernels.cpp b/hip/test/solver/cb_gmres_kernels.cpp index b5114129935..b31162fa3bf 100644 --- a/hip/test/solver/cb_gmres_kernels.cpp +++ b/hip/test/solver/cb_gmres_kernels.cpp @@ -164,35 +164,22 @@ class CbGmres : public ::testing::Test { num_reorth->get_data()[i] = 5; } - d_x = Mtx::create(hip); - d_x->copy_from(x.get()); + d_x = gko::clone(hip, x); d_before_preconditioner = Mtx::create_with_config_of(d_x.get()); - d_y = Mtx::create(hip); - d_y->copy_from(y.get()); - d_b = Mtx::create(hip); - d_b->copy_from(b.get()); - d_arnoldi_norm = Mtx::create(hip); - d_arnoldi_norm->copy_from(arnoldi_norm.get()); + d_y = gko::clone(hip, y); + d_b = gko::clone(hip, b); + d_arnoldi_norm = gko::clone(hip, arnoldi_norm); d_range_helper = Range3dHelper{hip, {}}; d_range_helper = range_helper; - d_next_krylov_basis = Mtx::create(hip); - d_next_krylov_basis->copy_from(next_krylov_basis.get()); - d_hessenberg = Mtx::create(hip); - d_hessenberg->copy_from(hessenberg.get()); - d_hessenberg_iter = Mtx::create(hip); - d_hessenberg_iter->copy_from(hessenberg_iter.get()); - d_buffer_iter = Mtx::create(hip); - d_buffer_iter->copy_from(buffer_iter.get()); - d_residual = Mtx::create(hip); - d_residual->copy_from(residual.get()); - d_residual_norm = Mtx::create(hip); - d_residual_norm->copy_from(residual_norm.get()); - d_residual_norm_collection = Mtx::create(hip); - d_residual_norm_collection->copy_from(residual_norm_collection.get()); - d_givens_sin = Mtx::create(hip); - d_givens_sin->copy_from(givens_sin.get()); - d_givens_cos = Mtx::create(hip); - d_givens_cos->copy_from(givens_cos.get()); + d_next_krylov_basis = gko::clone(hip, next_krylov_basis); + d_hessenberg = gko::clone(hip, hessenberg); + d_hessenberg_iter = gko::clone(hip, hessenberg_iter); + d_buffer_iter = gko::clone(hip, buffer_iter); + d_residual = gko::clone(hip, residual); + d_residual_norm = gko::clone(hip, residual_norm); + d_residual_norm_collection = gko::clone(hip, residual_norm_collection); + d_givens_sin = gko::clone(hip, givens_sin); + d_givens_cos = gko::clone(hip, givens_cos); d_stop_status = std::unique_ptr>( new gko::Array(hip, n)); *d_stop_status = *stop_status; diff --git a/hip/test/solver/gmres_kernels.cpp b/hip/test/solver/gmres_kernels.cpp index 42a9668e325..ec4f89e0d4c 100644 --- a/hip/test/solver/gmres_kernels.cpp +++ b/hip/test/solver/gmres_kernels.cpp @@ -123,29 +123,18 @@ class Gmres : public ::testing::Test { final_iter_nums->get_data()[i] = 5; } - d_x = Mtx::create(hip); - d_x->copy_from(x.get()); + d_x = gko::clone(hip, x); d_before_preconditioner = Mtx::create_with_config_of(d_x.get()); - d_y = Mtx::create(hip); - d_y->copy_from(y.get()); - d_b = Mtx::create(hip); - d_b->copy_from(b.get()); - d_krylov_bases = Mtx::create(hip); - d_krylov_bases->copy_from(krylov_bases.get()); - d_hessenberg = Mtx::create(hip); - d_hessenberg->copy_from(hessenberg.get()); - d_hessenberg_iter = Mtx::create(hip); - d_hessenberg_iter->copy_from(hessenberg_iter.get()); - d_residual = Mtx::create(hip); - d_residual->copy_from(residual.get()); - d_residual_norm = NormVector::create(hip); - d_residual_norm->copy_from(residual_norm.get()); - d_residual_norm_collection = Mtx::create(hip); - d_residual_norm_collection->copy_from(residual_norm_collection.get()); - d_givens_sin = Mtx::create(hip); - d_givens_sin->copy_from(givens_sin.get()); - d_givens_cos = Mtx::create(hip); - d_givens_cos->copy_from(givens_cos.get()); + d_y = gko::clone(hip, y); + d_b = gko::clone(hip, b); + d_krylov_bases = gko::clone(hip, krylov_bases); + d_hessenberg = gko::clone(hip, hessenberg); + d_hessenberg_iter = gko::clone(hip, hessenberg_iter); + d_residual = gko::clone(hip, residual); + d_residual_norm = gko::clone(hip, residual_norm); + d_residual_norm_collection = gko::clone(hip, residual_norm_collection); + d_givens_sin = gko::clone(hip, givens_sin); + d_givens_cos = gko::clone(hip, givens_cos); d_stop_status = std::unique_ptr>( new gko::Array(hip, nrhs)); *d_stop_status = *stop_status; diff --git a/hip/test/solver/idr_kernels.cpp b/hip/test/solver/idr_kernels.cpp index 4f9cebeefa0..5c09f446b2b 100644 --- a/hip/test/solver/idr_kernels.cpp +++ b/hip/test/solver/idr_kernels.cpp @@ -122,41 +122,23 @@ class Idr : public ::testing::Test { stop_status->get_data()[i].reset(); } - d_mtx = Mtx::create(hip); - d_x = Mtx::create(hip); - d_b = Mtx::create(hip); - d_r = Mtx::create(hip); - d_m = Mtx::create(hip); - d_f = Mtx::create(hip); - d_g = Mtx::create(hip); - d_u = Mtx::create(hip); - d_c = Mtx::create(hip); - d_v = Mtx::create(hip); - d_p = Mtx::create(hip); - d_alpha = Mtx::create(hip); - d_omega = Mtx::create(hip); - d_tht = Mtx::create(hip); - d_residual_norm = Mtx::create(hip); - d_stop_status = std::unique_ptr>( - new gko::Array(hip)); - - d_mtx->copy_from(mtx.get()); - d_x->copy_from(x.get()); - d_b->copy_from(b.get()); - d_r->copy_from(r.get()); - d_m->copy_from(m.get()); - d_f->copy_from(f.get()); - d_g->copy_from(g.get()); - d_u->copy_from(u.get()); - d_c->copy_from(c.get()); - d_v->copy_from(v.get()); - d_p->copy_from(p.get()); - d_alpha->copy_from(alpha.get()); - d_omega->copy_from(omega.get()); - d_tht->copy_from(tht.get()); - d_residual_norm->copy_from(residual_norm.get()); - *d_stop_status = - *stop_status; // copy_from is not a public member function of Array + d_mtx = gko::clone(hip, mtx); + d_x = gko::clone(hip, x); + d_b = gko::clone(hip, b); + d_r = gko::clone(hip, r); + d_m = gko::clone(hip, m); + d_f = gko::clone(hip, f); + d_g = gko::clone(hip, g); + d_u = gko::clone(hip, u); + d_c = gko::clone(hip, c); + d_v = gko::clone(hip, v); + d_p = gko::clone(hip, p); + d_alpha = gko::clone(hip, alpha); + d_omega = gko::clone(hip, omega); + d_tht = gko::clone(hip, tht); + d_residual_norm = gko::clone(hip, residual_norm); + d_stop_status = std::make_unique>( + hip, *stop_status); } std::shared_ptr ref; diff --git a/hip/test/solver/lower_trs_kernels.cpp b/hip/test/solver/lower_trs_kernels.cpp index 3328984a901..c611a213fed 100644 --- a/hip/test/solver/lower_trs_kernels.cpp +++ b/hip/test/solver/lower_trs_kernels.cpp @@ -98,12 +98,10 @@ class LowerTrs : public ::testing::Test { csr_mtx = CsrMtx::create(ref); mtx->convert_to(csr_mtx.get()); d_csr_mtx = CsrMtx::create(hip); - d_x = Mtx::create(hip); - d_x->copy_from(x.get()); + d_x = gko::clone(hip, x); d_csr_mtx->copy_from(csr_mtx.get()); b2 = Mtx::create(ref); - d_b2 = Mtx::create(hip); - d_b2->copy_from(b.get()); + d_b2 = gko::clone(hip, b); b2->copy_from(b.get()); } diff --git a/hip/test/solver/upper_trs_kernels.cpp b/hip/test/solver/upper_trs_kernels.cpp index fef330d9046..50a8e608694 100644 --- a/hip/test/solver/upper_trs_kernels.cpp +++ b/hip/test/solver/upper_trs_kernels.cpp @@ -98,12 +98,10 @@ class UpperTrs : public ::testing::Test { csr_mtx = CsrMtx::create(ref); mtx->convert_to(csr_mtx.get()); d_csr_mtx = CsrMtx::create(hip); - d_x = Mtx::create(hip); - d_x->copy_from(x.get()); + d_x = gko::clone(hip, x); d_csr_mtx->copy_from(csr_mtx.get()); b2 = Mtx::create(ref); - d_b2 = Mtx::create(hip); - d_b2->copy_from(b.get()); + d_b2 = gko::clone(hip, b); b2->copy_from(b.get()); } diff --git a/hip/test/stop/residual_norm_kernels.cpp b/hip/test/stop/residual_norm_kernels.cpp index 4dfcd690c79..846ab7ad128 100644 --- a/hip/test/stop/residual_norm_kernels.cpp +++ b/hip/test/stop/residual_norm_kernels.cpp @@ -80,13 +80,11 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalForRhsResNorm) auto res = gko::initialize({100.0}, ref_); auto res_norm = gko::initialize({0.0}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(hip_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(hip_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); auto rhs_norm = gko::initialize({0.0}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(hip_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(hip_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -127,14 +125,12 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalMultipleRHSForRhsResNorm) auto res = gko::initialize({{100.0, 100.0}}, ref_); auto res_norm = gko::initialize({{0.0, 0.0}}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(hip_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(hip_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); auto rhs_norm = gko::initialize({{0.0, 0.0}}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(hip_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(hip_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -176,11 +172,9 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalForRelResNorm) auto res = gko::initialize({100.0}, ref_); auto res_norm = gko::initialize({0.0}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(hip_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(hip_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); - std::shared_ptr d_rhs = Mtx::create(hip_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(hip_, rhs); auto criterion = rel_factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; @@ -222,12 +216,10 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalMultipleRHSForRelResNorm) auto res = gko::initialize({{100.0, 100.0}}, ref_); auto res_norm = gko::initialize({{0.0, 0.0}}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(hip_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(hip_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); - std::shared_ptr d_rhs = Mtx::create(hip_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(hip_, rhs); auto criterion = rel_factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; @@ -270,11 +262,9 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalForAbsResNorm) auto res = gko::initialize({100.0}, ref_); auto res_norm = gko::initialize({0.0}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(hip_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(hip_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); - std::shared_ptr d_rhs = Mtx::create(hip_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(hip_, rhs); auto criterion = abs_factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; @@ -316,12 +306,10 @@ TEST_F(ResidualNorm, WaitsTillResidualGoalMultipleRHSForAbsResNorm) auto res = gko::initialize({{100.0, 100.0}}, ref_); auto res_norm = gko::initialize({{0.0, 0.0}}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(hip_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(hip_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); - std::shared_ptr d_rhs = Mtx::create(hip_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(hip_, rhs); auto criterion = abs_factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; @@ -383,11 +371,9 @@ TEST_F(ResidualNormReduction, WaitsTillResidualGoal) auto res = gko::initialize({100.0}, ref_); auto res_norm = gko::initialize({0.0}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(hip_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(hip_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); - std::shared_ptr d_rhs = Mtx::create(hip_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(hip_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -428,12 +414,10 @@ TEST_F(ResidualNormReduction, WaitsTillResidualGoalMultipleRHS) auto res = gko::initialize({{100.0, 100.0}}, ref_); auto res_norm = gko::initialize({{0.0, 0.0}}, this->ref_); res->compute_norm2(res_norm.get()); - auto d_res = Mtx::create(hip_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(hip_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); - std::shared_ptr d_rhs = Mtx::create(hip_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(hip_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -493,13 +477,11 @@ class RelativeResidualNorm : public ::testing::Test { TEST_F(RelativeResidualNorm, WaitsTillResidualGoal) { auto res = gko::initialize({100.0}, ref_); - auto d_res = Mtx::create(hip_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(hip_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); auto rhs_norm = gko::initialize({0.0}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(hip_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(hip_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -538,14 +520,12 @@ TEST_F(RelativeResidualNorm, WaitsTillResidualGoal) TEST_F(RelativeResidualNorm, WaitsTillResidualGoalMultipleRHS) { auto res = gko::initialize({{100.0, 100.0}}, ref_); - auto d_res = Mtx::create(hip_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(hip_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); auto rhs_norm = gko::initialize({{0.0, 0.0}}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(hip_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(hip_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -605,13 +585,11 @@ class ImplicitResidualNorm : public ::testing::Test { TEST_F(ImplicitResidualNorm, WaitsTillResidualGoal) { auto res = gko::initialize({100.0}, ref_); - auto d_res = Mtx::create(hip_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(hip_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); auto rhs_norm = gko::initialize({0.0}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(hip_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(hip_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -650,14 +628,12 @@ TEST_F(ImplicitResidualNorm, WaitsTillResidualGoal) TEST_F(ImplicitResidualNorm, WaitsTillResidualGoalMultipleRHS) { auto res = gko::initialize({{100.0, 100.0}}, ref_); - auto d_res = Mtx::create(hip_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(hip_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); auto rhs_norm = gko::initialize({{0.0, 0.0}}, this->ref_); gko::as(rhs)->compute_norm2(rhs_norm.get()); - std::shared_ptr d_rhs = Mtx::create(hip_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(hip_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -716,11 +692,9 @@ class AbsoluteResidualNorm : public ::testing::Test { TEST_F(AbsoluteResidualNorm, WaitsTillResidualGoal) { auto res = gko::initialize({100.0}, ref_); - auto d_res = Mtx::create(hip_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(hip_, res); std::shared_ptr rhs = gko::initialize({10.0}, ref_); - std::shared_ptr d_rhs = Mtx::create(hip_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(hip_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; @@ -759,12 +733,10 @@ TEST_F(AbsoluteResidualNorm, WaitsTillResidualGoal) TEST_F(AbsoluteResidualNorm, WaitsTillResidualGoalMultipleRHS) { auto res = gko::initialize({{100.0, 100.0}}, ref_); - auto d_res = Mtx::create(hip_); - d_res->copy_from(res.get()); + auto d_res = gko::clone(hip_, res); std::shared_ptr rhs = gko::initialize({{10.0, 10.0}}, ref_); - std::shared_ptr d_rhs = Mtx::create(hip_); - d_rhs->copy_from(rhs.get()); + std::shared_ptr d_rhs = gko::clone(hip_, rhs); auto criterion = factory_->generate(nullptr, d_rhs, nullptr, d_res.get()); bool one_changed{}; constexpr gko::uint8 RelativeStoppingId{1}; diff --git a/omp/test/factorization/par_ic_kernels.cpp b/omp/test/factorization/par_ic_kernels.cpp index b44980449ec..5687972edf7 100644 --- a/omp/test/factorization/par_ic_kernels.cpp +++ b/omp/test/factorization/par_ic_kernels.cpp @@ -85,8 +85,7 @@ class ParIc : public ::testing::Test { dmtx_ani = Csr::create(omp); dmtx_l_ani = Csr::create(omp); dmtx_l_ani_init = Csr::create(omp); - dmtx_l = Csr::create(omp); - dmtx_l->copy_from(lend(mtx_l)); + dmtx_l = gko::clone(omp, mtx_l); } void SetUp() @@ -112,8 +111,7 @@ class ParIc : public ::testing::Test { l_builder.get_value_array().resize_and_reset(l_nnz); gko::kernels::reference::factorization::initialize_l( ref, lend(mtx_ani), lend(mtx_l_ani), false); - mtx_l_ani_init = Csr::create(ref); - mtx_l_ani_init->copy_from(lend(mtx_l_ani)); + mtx_l_ani_init = gko::clone(ref, mtx_l_ani); gko::kernels::reference::par_ic_factorization::init_factor( ref, lend(mtx_l_ani_init)); } diff --git a/omp/test/factorization/par_ict_kernels.cpp b/omp/test/factorization/par_ict_kernels.cpp index 2ded4cc3ef4..c7c633a8ee8 100644 --- a/omp/test/factorization/par_ict_kernels.cpp +++ b/omp/test/factorization/par_ict_kernels.cpp @@ -95,10 +95,8 @@ class ParIct : public ::testing::Test { dmtx_ani = Csr::create(omp); dmtx_l_ani = Csr::create(omp); - dmtx = Csr::create(omp); - dmtx->copy_from(lend(mtx)); - dmtx_l = Csr::create(omp); - dmtx_l->copy_from(lend(mtx_l)); + dmtx = gko::clone(omp, mtx); + dmtx_l = gko::clone(omp, mtx_l); } void SetUp() diff --git a/omp/test/factorization/par_ilu_kernels.cpp b/omp/test/factorization/par_ilu_kernels.cpp index ea3e399b686..918a53cc979 100644 --- a/omp/test/factorization/par_ilu_kernels.cpp +++ b/omp/test/factorization/par_ilu_kernels.cpp @@ -93,8 +93,7 @@ class ParIlu : public ::testing::Test { << "\", which is required for this test.\n"; } auto csr_ref_temp = gko::read(input_file, ref); - auto csr_omp_temp = Csr::create(omp); - csr_omp_temp->copy_from(gko::lend(csr_ref_temp)); + auto csr_omp_temp = gko::clone(omp, csr_ref_temp); // Make sure there are diagonal elements present gko::kernels::reference::factorization::add_diagonal_elements( ref, gko::lend(csr_ref_temp), false); @@ -234,8 +233,7 @@ TYPED_TEST(ParIlu, OmpKernelAddDiagonalElementsSortedEquivalentToRef) index_type num_rows{200}; index_type num_cols{200}; auto mtx_ref = this->template gen_mtx(num_rows, num_cols); - auto mtx_omp = Csr::create(this->omp); - mtx_omp->copy_from(gko::lend(mtx_ref)); + auto mtx_omp = gko::clone(this->omp, mtx_ref); gko::kernels::reference::factorization::add_diagonal_elements( this->ref, gko::lend(mtx_ref), true); @@ -255,8 +253,7 @@ TYPED_TEST(ParIlu, OmpKernelAddDiagonalElementsUnsortedEquivalentToRef) index_type num_rows{200}; index_type num_cols{200}; auto mtx_ref = this->gen_unsorted_mtx(num_rows, num_cols); - auto mtx_omp = Csr::create(this->omp); - mtx_omp->copy_from(gko::lend(mtx_ref)); + auto mtx_omp = gko::clone(this->omp, mtx_ref); gko::kernels::reference::factorization::add_diagonal_elements( this->ref, gko::lend(mtx_ref), false); @@ -276,8 +273,7 @@ TYPED_TEST(ParIlu, OmpKernelAddDiagonalElementsNonSquareEquivalentToRef) index_type num_rows{200}; index_type num_cols{100}; auto mtx_ref = this->template gen_mtx(num_rows, num_cols); - auto mtx_omp = Csr::create(this->omp); - mtx_omp->copy_from(gko::lend(mtx_ref)); + auto mtx_omp = gko::clone(this->omp, mtx_ref); gko::kernels::reference::factorization::add_diagonal_elements( this->ref, gko::lend(mtx_ref), true); diff --git a/omp/test/factorization/par_ilut_kernels.cpp b/omp/test/factorization/par_ilut_kernels.cpp index 97ff5974877..a0562e320e3 100644 --- a/omp/test/factorization/par_ilut_kernels.cpp +++ b/omp/test/factorization/par_ilut_kernels.cpp @@ -118,22 +118,16 @@ class ParIlut : public ::testing::Test { 1.0), rand_engine, ref); - dmtx1 = Csr::create(omp); - dmtx1->copy_from(mtx1.get()); - dmtx2 = Csr::create(omp); - dmtx2->copy_from(mtx2.get()); - dmtx_square = Csr::create(omp); - dmtx_square->copy_from(mtx_square.get()); + dmtx1 = gko::clone(omp, mtx1); + dmtx2 = gko::clone(omp, mtx2); + dmtx_square = gko::clone(omp, mtx_square); dmtx_ani = Csr::create(omp); dmtx_l_ani = Csr::create(omp); dmtx_u_ani = Csr::create(omp); dmtx_ut_ani = Csr::create(omp); - dmtx_l = Csr::create(omp); - dmtx_l->copy_from(mtx_l.get()); - dmtx_l2 = Csr::create(omp); - dmtx_l2->copy_from(mtx_l2.get()); - dmtx_u = Csr::create(omp); - dmtx_u->copy_from(mtx_u.get()); + dmtx_l = gko::clone(omp, mtx_l); + dmtx_l2 = gko::clone(omp, mtx_l2); + dmtx_u = gko::clone(omp, mtx_u); } void SetUp() diff --git a/omp/test/matrix/coo_kernels.cpp b/omp/test/matrix/coo_kernels.cpp index 31f86355f8d..f555363a018 100644 --- a/omp/test/matrix/coo_kernels.cpp +++ b/omp/test/matrix/coo_kernels.cpp @@ -88,22 +88,16 @@ class Coo : public ::testing::Test { void set_up_apply_data(int num_vectors = 1) { - mtx = Mtx::create(ref); - mtx->copy_from(gen_mtx(mtx_size[0], mtx_size[1], 1)); + mtx = gen_mtx(mtx_size[0], mtx_size[1], 1); expected = gen_mtx(mtx_size[0], num_vectors, 1); y = gen_mtx(mtx_size[1], num_vectors, 1); alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); - dmtx = Mtx::create(omp); - dmtx->copy_from(mtx.get()); - dresult = Vec::create(omp); - dresult->copy_from(expected.get()); - dy = Vec::create(omp); - dy->copy_from(y.get()); - dalpha = Vec::create(omp); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(omp); - dbeta->copy_from(beta.get()); + dmtx = gko::clone(omp, mtx); + dresult = gko::clone(omp, expected); + dy = gko::clone(omp, y); + dalpha = gko::clone(omp, alpha); + dbeta = gko::clone(omp, beta); } struct matrix_pair { @@ -119,8 +113,7 @@ class Coo : public ::testing::Test { local_mtx_ref->copy_from(generated.get()); gko::test::unsort_matrix(local_mtx_ref.get(), rand_engine); - auto local_mtx_omp = Mtx::create(omp); - local_mtx_omp->copy_from(local_mtx_ref.get()); + auto local_mtx_omp = gko::clone(omp, local_mtx_ref); return {std::move(local_mtx_ref), std::move(local_mtx_omp)}; } @@ -282,11 +275,9 @@ TEST_F(Coo, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3, 1); - auto dcomplex_b = ComplexVec::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(532, 3, 1); - auto dcomplex_x = ComplexVec::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -299,11 +290,9 @@ TEST_F(Coo, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3, 1); - auto dcomplex_b = ComplexVec::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(532, 3, 1); - auto dcomplex_x = ComplexVec::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); @@ -316,11 +305,9 @@ TEST_F(Coo, ApplyAddToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3, 1); - auto dcomplex_b = ComplexVec::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(532, 3, 1); - auto dcomplex_x = ComplexVec::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); mtx->apply2(alpha.get(), complex_b.get(), complex_x.get()); dmtx->apply2(dalpha.get(), dcomplex_b.get(), dcomplex_x.get()); diff --git a/omp/test/matrix/csr_kernels.cpp b/omp/test/matrix/csr_kernels.cpp index cd7a90e8005..cea56e5e91f 100644 --- a/omp/test/matrix/csr_kernels.cpp +++ b/omp/test/matrix/csr_kernels.cpp @@ -108,31 +108,20 @@ class Csr : public ::testing::Test { void set_up_apply_data(int num_vectors = 1) { - mtx = Mtx::create(ref); - mtx->copy_from(gen_mtx(mtx_size[0], mtx_size[1], 1)); - complex_mtx = ComplexMtx::create(ref); - complex_mtx->copy_from( - gen_mtx(mtx_size[0], mtx_size[1], 1)); - square_mtx = Mtx::create(ref); - square_mtx->copy_from(gen_mtx(mtx_size[0], mtx_size[0], 1)); + mtx = gen_mtx(mtx_size[0], mtx_size[1], 1); + complex_mtx = gen_mtx(mtx_size[0], mtx_size[1], 1); + square_mtx = gen_mtx(mtx_size[0], mtx_size[0], 1); expected = gen_mtx(mtx_size[0], num_vectors, 1); y = gen_mtx(mtx_size[1], num_vectors, 1); alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); - dmtx = Mtx::create(omp); - dmtx->copy_from(mtx.get()); - complex_dmtx = ComplexMtx::create(omp); - complex_dmtx->copy_from(complex_mtx.get()); - square_dmtx = Mtx::create(omp); - square_dmtx->copy_from(square_mtx.get()); - dresult = Vec::create(omp); - dresult->copy_from(expected.get()); - dy = Vec::create(omp); - dy->copy_from(y.get()); - dalpha = Vec::create(omp); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(omp); - dbeta->copy_from(beta.get()); + dmtx = gko::clone(omp, mtx); + complex_dmtx = gko::clone(omp, complex_mtx); + square_dmtx = gko::clone(omp, square_mtx); + dresult = gko::clone(omp, expected); + dy = gko::clone(omp, y); + dalpha = gko::clone(omp, alpha); + dbeta = gko::clone(omp, beta); std::vector tmp(mtx->get_size()[0], 0); auto rng = std::default_random_engine{}; @@ -157,8 +146,7 @@ class Csr : public ::testing::Test { gen_mtx(mtx_size[0], mtx_size[1], min_nnz_per_row); gko::test::unsort_matrix(gko::lend(local_mtx_ref), rand_engine); - auto local_mtx_omp = Mtx::create(omp); - local_mtx_omp->copy_from(local_mtx_ref.get()); + auto local_mtx_omp = gko::clone(omp, local_mtx_ref); return {std::move(local_mtx_ref), std::move(local_mtx_omp)}; } @@ -323,10 +311,8 @@ TEST_F(Csr, AdvancedApplyToIdentityMatrixIsEquivalentToRef) set_up_apply_data(); auto a = gen_mtx(mtx_size[0], mtx_size[1], 0); auto b = gen_mtx(mtx_size[0], mtx_size[1], 0); - auto da = Mtx::create(omp); - auto db = Mtx::create(omp); - da->copy_from(a.get()); - db->copy_from(b.get()); + auto da = gko::clone(omp, a); + auto db = gko::clone(omp, b); auto id = gko::matrix::Identity::create(ref, mtx_size[1]); auto did = gko::matrix::Identity::create(omp, mtx_size[1]); @@ -354,11 +340,9 @@ TEST_F(Csr, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(3); auto complex_b = gen_mtx(this->mtx_size[1], 3, 1); - auto dcomplex_b = ComplexVec::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(this->mtx_size[0], 3, 1); - auto dcomplex_x = ComplexVec::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -371,11 +355,9 @@ TEST_F(Csr, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(3); auto complex_b = gen_mtx(this->mtx_size[1], 3, 1); - auto dcomplex_b = ComplexVec::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(this->mtx_size[0], 3, 1); - auto dcomplex_x = ComplexVec::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); diff --git a/omp/test/matrix/dense_kernels.cpp b/omp/test/matrix/dense_kernels.cpp index 42b1151e5e3..9335cb49f6e 100644 --- a/omp/test/matrix/dense_kernels.cpp +++ b/omp/test/matrix/dense_kernels.cpp @@ -118,12 +118,9 @@ class Dense : public ::testing::Test { } else { alpha = gko::initialize({2.0}, ref); } - dx = Mtx::create(omp); - dx->copy_from(x.get()); - dy = Mtx::create(omp); - dy->copy_from(y.get()); - dalpha = Mtx::create(omp); - dalpha->copy_from(alpha.get()); + dx = gko::clone(omp, x); + dy = gko::clone(omp, y); + dalpha = gko::clone(omp, alpha); expected = Mtx::create(ref, gko::dim<2>{1, num_vecs}); dresult = Mtx::create(omp, gko::dim<2>{1, num_vecs}); } @@ -137,20 +134,13 @@ class Dense : public ::testing::Test { alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); square = gen_mtx(x->get_size()[0], x->get_size()[0]); - dx = Mtx::create(omp); - dx->copy_from(x.get()); - dc_x = ComplexMtx::create(omp); - dc_x->copy_from(c_x.get()); - dy = Mtx::create(omp); - dy->copy_from(y.get()); - dresult = Mtx::create(omp); - dresult->copy_from(expected.get()); - dalpha = Mtx::create(omp); - dalpha->copy_from(alpha.get()); - dbeta = Mtx::create(omp); - dbeta->copy_from(beta.get()); - dsquare = Mtx::create(omp); - dsquare->copy_from(square.get()); + dx = gko::clone(omp, x); + dc_x = gko::clone(omp, c_x); + dy = gko::clone(omp, y); + dresult = gko::clone(omp, expected); + dalpha = gko::clone(omp, alpha); + dbeta = gko::clone(omp, beta); + dsquare = gko::clone(omp, square); std::vector tmp(x->get_size()[0], 0); auto rng = std::default_random_engine{}; @@ -313,11 +303,9 @@ TEST_F(Dense, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = ComplexMtx::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(40, 1); - auto dcomplex_x = ComplexMtx::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); x->apply(complex_b.get(), complex_x.get()); dx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -330,11 +318,9 @@ TEST_F(Dense, ApplyToMixedComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = MixedComplexMtx::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(40, 1); - auto dcomplex_x = MixedComplexMtx::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); x->apply(complex_b.get(), complex_x.get()); dx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -347,11 +333,9 @@ TEST_F(Dense, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = ComplexMtx::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(40, 1); - auto dcomplex_x = ComplexMtx::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); x->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); @@ -364,11 +348,9 @@ TEST_F(Dense, AdvancedApplyToMixedComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(25, 1); - auto dcomplex_b = MixedComplexMtx::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(40, 1); - auto dcomplex_x = MixedComplexMtx::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); x->apply(convert(alpha).get(), complex_b.get(), convert(beta).get(), complex_x.get()); @@ -383,11 +365,9 @@ TEST_F(Dense, ComputeDotComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(1234, 2); - auto dcomplex_b = ComplexMtx::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(1234, 2); - auto dcomplex_x = ComplexMtx::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); auto result = ComplexMtx::create(ref, gko::dim<2>{1, 2}); auto dresult = ComplexMtx::create(omp, gko::dim<2>{1, 2}); @@ -402,11 +382,9 @@ TEST_F(Dense, ComputeConjDotComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(1234, 2); - auto dcomplex_b = ComplexMtx::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(1234, 2); - auto dcomplex_x = ComplexMtx::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); auto result = ComplexMtx::create(ref, gko::dim<2>{1, 2}); auto dresult = ComplexMtx::create(omp, gko::dim<2>{1, 2}); @@ -420,8 +398,7 @@ TEST_F(Dense, ComputeConjDotComplexIsEquivalentToRef) TEST_F(Dense, ConvertToCooIsEquivalentToRef) { auto rmtx = gen_mtx(532, 231); - auto omtx = Mtx::create(omp); - omtx->copy_from(rmtx.get()); + auto omtx = gko::clone(omp, rmtx); auto srmtx = gko::matrix::Coo<>::create(ref); auto somtx = gko::matrix::Coo<>::create(omp); auto drmtx = Mtx::create(ref); @@ -441,8 +418,7 @@ TEST_F(Dense, ConvertToCooIsEquivalentToRef) TEST_F(Dense, MoveToCooIsEquivalentToRef) { auto rmtx = gen_mtx(532, 231); - auto omtx = Mtx::create(omp); - omtx->copy_from(rmtx.get()); + auto omtx = gko::clone(omp, rmtx); auto srmtx = gko::matrix::Coo<>::create(ref); auto somtx = gko::matrix::Coo<>::create(omp); auto drmtx = Mtx::create(ref); @@ -462,8 +438,7 @@ TEST_F(Dense, MoveToCooIsEquivalentToRef) TEST_F(Dense, ConvertToCsrIsEquivalentToRef) { auto rmtx = gen_mtx(532, 231); - auto omtx = Mtx::create(omp); - omtx->copy_from(rmtx.get()); + auto omtx = gko::clone(omp, rmtx); auto srmtx = gko::matrix::Csr<>::create(ref); auto somtx = gko::matrix::Csr<>::create(omp); auto drmtx = Mtx::create(ref); @@ -483,8 +458,7 @@ TEST_F(Dense, ConvertToCsrIsEquivalentToRef) TEST_F(Dense, MoveToCsrIsEquivalentToRef) { auto rmtx = gen_mtx(532, 231); - auto omtx = Mtx::create(omp); - omtx->copy_from(rmtx.get()); + auto omtx = gko::clone(omp, rmtx); auto srmtx = gko::matrix::Csr<>::create(ref); auto somtx = gko::matrix::Csr<>::create(omp); auto drmtx = Mtx::create(ref); @@ -504,8 +478,7 @@ TEST_F(Dense, MoveToCsrIsEquivalentToRef) TEST_F(Dense, ConvertToSparsityCsrIsEquivalentToRef) { auto mtx = gen_mtx(532, 231); - auto dmtx = Mtx::create(omp); - dmtx->copy_from(mtx.get()); + auto dmtx = gko::clone(omp, mtx); auto sparsity_mtx = gko::matrix::SparsityCsr<>::create(ref); auto d_sparsity_mtx = gko::matrix::SparsityCsr<>::create(omp); @@ -519,8 +492,7 @@ TEST_F(Dense, ConvertToSparsityCsrIsEquivalentToRef) TEST_F(Dense, MoveToSparsityCsrIsEquivalentToRef) { auto mtx = gen_mtx(532, 231); - auto dmtx = Mtx::create(omp); - dmtx->copy_from(mtx.get()); + auto dmtx = gko::clone(omp, mtx); auto sparsity_mtx = gko::matrix::SparsityCsr<>::create(ref); auto d_sparsity_mtx = gko::matrix::SparsityCsr<>::create(omp); @@ -534,8 +506,7 @@ TEST_F(Dense, MoveToSparsityCsrIsEquivalentToRef) TEST_F(Dense, ConvertToEllIsEquivalentToRef) { auto rmtx = gen_mtx(532, 231); - auto omtx = Mtx::create(omp); - omtx->copy_from(rmtx.get()); + auto omtx = gko::clone(omp, rmtx); auto srmtx = gko::matrix::Ell<>::create(ref); auto somtx = gko::matrix::Ell<>::create(omp); auto drmtx = Mtx::create(ref); @@ -555,8 +526,7 @@ TEST_F(Dense, ConvertToEllIsEquivalentToRef) TEST_F(Dense, MoveToEllIsEquivalentToRef) { auto rmtx = gen_mtx(532, 231); - auto omtx = Mtx::create(omp); - omtx->copy_from(rmtx.get()); + auto omtx = gko::clone(omp, rmtx); auto srmtx = gko::matrix::Ell<>::create(ref); auto somtx = gko::matrix::Ell<>::create(omp); auto drmtx = Mtx::create(ref); @@ -576,8 +546,7 @@ TEST_F(Dense, MoveToEllIsEquivalentToRef) TEST_F(Dense, ConvertToHybridIsEquivalentToRef) { auto rmtx = gen_mtx(532, 231); - auto omtx = Mtx::create(omp); - omtx->copy_from(rmtx.get()); + auto omtx = gko::clone(omp, rmtx); auto srmtx = gko::matrix::Hybrid<>::create(ref); auto somtx = gko::matrix::Hybrid<>::create(omp); auto drmtx = Mtx::create(ref); @@ -599,8 +568,7 @@ TEST_F(Dense, ConvertToHybridIsEquivalentToRef) TEST_F(Dense, MoveToHybridIsEquivalentToRef) { auto rmtx = gen_mtx(532, 231); - auto omtx = Mtx::create(omp); - omtx->copy_from(rmtx.get()); + auto omtx = gko::clone(omp, rmtx); auto srmtx = gko::matrix::Hybrid<>::create(ref); auto somtx = gko::matrix::Hybrid<>::create(omp); auto drmtx = Mtx::create(ref); @@ -622,8 +590,7 @@ TEST_F(Dense, MoveToHybridIsEquivalentToRef) TEST_F(Dense, ConvertToSellpIsEquivalentToRef) { auto rmtx = gen_mtx(532, 231); - auto omtx = Mtx::create(omp); - omtx->copy_from(rmtx.get()); + auto omtx = gko::clone(omp, rmtx); auto srmtx = gko::matrix::Sellp<>::create(ref); auto somtx = gko::matrix::Sellp<>::create(omp); auto drmtx = Mtx::create(ref); @@ -643,8 +610,7 @@ TEST_F(Dense, ConvertToSellpIsEquivalentToRef) TEST_F(Dense, MoveToSellpIsEquivalentToRef) { auto rmtx = gen_mtx(532, 231); - auto omtx = Mtx::create(omp); - omtx->copy_from(rmtx.get()); + auto omtx = gko::clone(omp, rmtx); auto srmtx = gko::matrix::Sellp<>::create(ref); auto somtx = gko::matrix::Sellp<>::create(omp); auto drmtx = Mtx::create(ref); @@ -695,8 +661,7 @@ TEST_F(Dense, CalculateMaxNNZPerRowIsEquivalentToRef) std::size_t ref_max_nnz_per_row = 0; std::size_t omp_max_nnz_per_row = 0; auto rmtx = gen_mtx(100, 100, 1); - auto omtx = Mtx::create(omp); - omtx->copy_from(rmtx.get()); + auto omtx = gko::clone(omp, rmtx); gko::kernels::reference::dense::calculate_max_nnz_per_row( ref, rmtx.get(), &ref_max_nnz_per_row); @@ -712,8 +677,7 @@ TEST_F(Dense, CalculateTotalColsIsEquivalentToRef) std::size_t ref_total_cols = 0; std::size_t omp_total_cols = 0; auto rmtx = gen_mtx(100, 100, 1); - auto omtx = Mtx::create(omp); - omtx->copy_from(rmtx.get()); + auto omtx = gko::clone(omp, rmtx); gko::kernels::reference::dense::calculate_total_cols( ref, rmtx.get(), &ref_total_cols, 1, gko::matrix::default_slice_size); diff --git a/omp/test/matrix/diagonal_kernels.cpp b/omp/test/matrix/diagonal_kernels.cpp index b024f18ba0a..56d74398a82 100644 --- a/omp/test/matrix/diagonal_kernels.cpp +++ b/omp/test/matrix/diagonal_kernels.cpp @@ -122,39 +122,29 @@ class Diagonal : public ::testing::Test { void set_up_apply_data() { diag = gen_diag(mtx_size[0]); - ddiag = Diag::create(omp); - ddiag->copy_from(diag.get()); + ddiag = gko::clone(omp, diag); dense1 = gen_mtx(mtx_size[0], mtx_size[1], mtx_size[0]); dense2 = gen_mtx(mtx_size[1], mtx_size[0], mtx_size[1]); denseexpected1 = gen_mtx(mtx_size[0], mtx_size[1], mtx_size[0]); denseexpected2 = gen_mtx(mtx_size[1], mtx_size[0], mtx_size[1]); - ddense1 = Dense::create(omp); - ddense1->copy_from(dense1.get()); - ddense2 = Dense::create(omp); - ddense2->copy_from(dense2.get()); - denseresult1 = Dense::create(omp); - denseresult1->copy_from(denseexpected1.get()); - denseresult2 = Dense::create(omp); - denseresult2->copy_from(denseexpected2.get()); + ddense1 = gko::clone(omp, dense1); + ddense2 = gko::clone(omp, dense2); + denseresult1 = gko::clone(omp, denseexpected1); + denseresult2 = gko::clone(omp, denseexpected2); csr1 = gen_mtx(mtx_size[0], mtx_size[1], 1); csr2 = gen_mtx(mtx_size[1], mtx_size[0], 1); csrexpected1 = gen_mtx(mtx_size[0], mtx_size[1], 1); csrexpected2 = gen_mtx(mtx_size[1], mtx_size[0], 1); - dcsr1 = Csr::create(omp); - dcsr1->copy_from(csr1.get()); - dcsr2 = Csr::create(omp); - dcsr2->copy_from(csr2.get()); - csrresult1 = Csr::create(omp); - csrresult1->copy_from(csrexpected1.get()); - csrresult2 = Csr::create(omp); - csrresult2->copy_from(csrexpected2.get()); + dcsr1 = gko::clone(omp, csr1); + dcsr2 = gko::clone(omp, csr2); + csrresult1 = gko::clone(omp, csrexpected1); + csrresult2 = gko::clone(omp, csrexpected2); } void set_up_complex_data() { cdiag = gen_cdiag(mtx_size[0]); - dcdiag = ComplexDiag::create(omp); - dcdiag->copy_from(cdiag.get()); + dcdiag = gko::clone(omp, cdiag); } std::shared_ptr ref; diff --git a/omp/test/matrix/ell_kernels.cpp b/omp/test/matrix/ell_kernels.cpp index 01f1a31121d..80d469e3067 100644 --- a/omp/test/matrix/ell_kernels.cpp +++ b/omp/test/matrix/ell_kernels.cpp @@ -100,24 +100,15 @@ class Ell : public ::testing::Test { alpha2 = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); beta2 = gko::initialize({-1.0}, ref); - dmtx = Mtx::create(omp); - dmtx->copy_from(mtx.get()); - dresult = Vec::create(omp); - dresult->copy_from(expected.get()); - dresult2 = Vec2::create(omp); - dresult2->copy_from(expected2.get()); - dy = Vec::create(omp); - dy->copy_from(y.get()); - dy2 = Vec2::create(omp); - dy2->copy_from(y2.get()); - dalpha = Vec::create(omp); - dalpha->copy_from(alpha.get()); - dalpha2 = Vec2::create(omp); - dalpha2->copy_from(alpha2.get()); - dbeta = Vec::create(omp); - dbeta->copy_from(beta.get()); - dbeta2 = Vec2::create(omp); - dbeta2->copy_from(beta2.get()); + dmtx = gko::clone(omp, mtx); + dresult = gko::clone(omp, expected); + dresult2 = gko::clone(omp, expected2); + dy = gko::clone(omp, y); + dy2 = gko::clone(omp, y2); + dalpha = gko::clone(omp, alpha); + dalpha2 = gko::clone(omp, alpha2); + dbeta = gko::clone(omp, beta); + dbeta2 = gko::clone(omp, beta2); } std::shared_ptr ref; @@ -501,11 +492,9 @@ TEST_F(Ell, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(300, 600); auto complex_b = gen_mtx(231, 3, 1); - auto dcomplex_b = ComplexVec::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(532, 3, 1); - auto dcomplex_x = ComplexVec::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -518,11 +507,9 @@ TEST_F(Ell, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(300, 600); auto complex_b = gen_mtx(231, 3, 1); - auto dcomplex_b = ComplexVec::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(532, 3, 1); - auto dcomplex_x = ComplexVec::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); diff --git a/omp/test/matrix/fbcsr_kernels.cpp b/omp/test/matrix/fbcsr_kernels.cpp index 43837790006..4fe014a46cb 100644 --- a/omp/test/matrix/fbcsr_kernels.cpp +++ b/omp/test/matrix/fbcsr_kernels.cpp @@ -77,8 +77,7 @@ TEST_F(Fbcsr, CanWriteFromMatrixOnDevice) using MatData = gko::matrix_data; gko::testing::FbcsrSample sample(ref); auto refmat = sample.generate_fbcsr(); - auto ompmat = Mtx::create(omp); - ompmat->copy_from(gko::lend(refmat)); + auto ompmat = gko::clone(omp, refmat); MatData refdata; MatData ompdata; diff --git a/omp/test/matrix/hybrid_kernels.cpp b/omp/test/matrix/hybrid_kernels.cpp index 2ebe179d15b..7425e9e5868 100644 --- a/omp/test/matrix/hybrid_kernels.cpp +++ b/omp/test/matrix/hybrid_kernels.cpp @@ -104,14 +104,10 @@ class Hybrid : public ::testing::Test { beta = gko::initialize({-1.0}, ref); dmtx = Mtx::create(omp, strategy); dmtx->copy_from(mtx.get()); - dresult = Vec::create(omp); - dresult->copy_from(expected.get()); - dy = Vec::create(omp); - dy->copy_from(y.get()); - dalpha = Vec::create(omp); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(omp); - dbeta->copy_from(beta.get()); + dresult = gko::clone(omp, expected); + dy = gko::clone(omp, y); + dalpha = gko::clone(omp, alpha); + dbeta = gko::clone(omp, beta); } @@ -195,11 +191,9 @@ TEST_F(Hybrid, ApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3, 1); - auto dcomplex_b = ComplexVec::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(532, 3, 1); - auto dcomplex_x = ComplexVec::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -212,11 +206,9 @@ TEST_F(Hybrid, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_data(); auto complex_b = gen_mtx(231, 3, 1); - auto dcomplex_b = ComplexVec::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(532, 3, 1); - auto dcomplex_x = ComplexVec::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); @@ -267,10 +259,8 @@ TEST_F(Hybrid, ConvertWithEmptyFirstAndLastRowToCsrIsEquivalentToRef) gko::zero(); } // now convert them to hybrid matrices - auto balanced_mtx = Mtx::create(ref); - balanced_mtx->copy_from(dense_mtx.get()); - auto dbalanced_mtx = Mtx::create(omp); - dbalanced_mtx->copy_from(balanced_mtx.get()); + auto balanced_mtx = gko::clone(ref, dense_mtx); + auto dbalanced_mtx = gko::clone(omp, balanced_mtx); auto csr_mtx = gko::matrix::Csr<>::create(ref); auto dcsr_mtx = gko::matrix::Csr<>::create(omp); diff --git a/omp/test/matrix/sellp_kernels.cpp b/omp/test/matrix/sellp_kernels.cpp index 081f75708ae..59d2600a8f2 100644 --- a/omp/test/matrix/sellp_kernels.cpp +++ b/omp/test/matrix/sellp_kernels.cpp @@ -87,24 +87,18 @@ class Sellp : public ::testing::Test { int total_cols = 1, int slice_size = gko::matrix::default_slice_size, int stride_factor = gko::matrix::default_stride_factor) { - mtx = Mtx::create(ref); - mtx->copy_from(gen_mtx(532, 231)); + mtx = gen_mtx(532, 231); empty = Mtx::create(ref); expected = gen_mtx(532, total_cols); y = gen_mtx(231, total_cols); alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); - dmtx = Mtx::create(omp); - dmtx->copy_from(mtx.get()); + dmtx = gko::clone(omp, mtx); dempty = Mtx::create(omp); - dresult = Vec::create(omp); - dresult->copy_from(expected.get()); - dy = Vec::create(omp); - dy->copy_from(y.get()); - dalpha = Vec::create(omp); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(omp); - dbeta->copy_from(beta.get()); + dresult = gko::clone(omp, expected); + dy = gko::clone(omp, y); + dalpha = gko::clone(omp, alpha); + dbeta = gko::clone(omp, beta); } std::shared_ptr ref; @@ -222,11 +216,9 @@ TEST_F(Sellp, ApplyToComplexIsEquivalentToRef) { set_up_apply_matrix(64); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); mtx->apply(complex_b.get(), complex_x.get()); dmtx->apply(dcomplex_b.get(), dcomplex_x.get()); @@ -239,11 +231,9 @@ TEST_F(Sellp, AdvancedApplyToComplexIsEquivalentToRef) { set_up_apply_matrix(64); auto complex_b = gen_mtx(231, 3); - auto dcomplex_b = ComplexVec::create(omp); - dcomplex_b->copy_from(complex_b.get()); + auto dcomplex_b = gko::clone(omp, complex_b); auto complex_x = gen_mtx(532, 3); - auto dcomplex_x = ComplexVec::create(omp); - dcomplex_x->copy_from(complex_x.get()); + auto dcomplex_x = gko::clone(omp, complex_x); mtx->apply(alpha.get(), complex_b.get(), beta.get(), complex_x.get()); dmtx->apply(dalpha.get(), dcomplex_b.get(), dbeta.get(), dcomplex_x.get()); diff --git a/omp/test/matrix/sparsity_csr_kernels.cpp b/omp/test/matrix/sparsity_csr_kernels.cpp index fd9d65d3860..730700ee8e7 100644 --- a/omp/test/matrix/sparsity_csr_kernels.cpp +++ b/omp/test/matrix/sparsity_csr_kernels.cpp @@ -87,27 +87,18 @@ class SparsityCsr : public ::testing::Test { void set_up_apply_data(int num_vectors = 1) { - mtx = Mtx::create(ref); - mtx->copy_from(gen_mtx(mtx_size[0], mtx_size[1], 1)); - complex_mtx = ComplexMtx::create(ref); - complex_mtx->copy_from( - gen_mtx(mtx_size[0], mtx_size[1], 1)); + mtx = gen_mtx(mtx_size[0], mtx_size[1], 1); + complex_mtx = gen_mtx(mtx_size[0], mtx_size[1], 1); expected = gen_mtx(mtx_size[0], num_vectors, 1); y = gen_mtx(mtx_size[1], num_vectors, 1); alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); - dmtx = Mtx::create(omp); - dmtx->copy_from(mtx.get()); - complex_dmtx = ComplexMtx::create(omp); - complex_dmtx->copy_from(complex_mtx.get()); - dresult = Vec::create(omp); - dresult->copy_from(expected.get()); - dy = Vec::create(omp); - dy->copy_from(y.get()); - dalpha = Vec::create(omp); - dalpha->copy_from(alpha.get()); - dbeta = Vec::create(omp); - dbeta->copy_from(beta.get()); + dmtx = gko::clone(omp, mtx); + complex_dmtx = gko::clone(omp, complex_mtx); + dresult = gko::clone(omp, expected); + dy = gko::clone(omp, y); + dalpha = gko::clone(omp, alpha); + dbeta = gko::clone(omp, beta); } struct matrix_pair { @@ -134,8 +125,7 @@ class SparsityCsr : public ::testing::Test { std::swap(col_idx[idx1], col_idx[idx2]); } } - auto local_mtx_omp = Mtx::create(omp); - local_mtx_omp->copy_from(local_mtx_ref.get()); + auto local_mtx_omp = gko::clone(omp, local_mtx_ref); return {std::move(local_mtx_ref), std::move(local_mtx_omp)}; } diff --git a/omp/test/multigrid/amgx_pgm_kernels.cpp b/omp/test/multigrid/amgx_pgm_kernels.cpp index 68fdd9ca893..7ebd3fbb7a2 100644 --- a/omp/test/multigrid/amgx_pgm_kernels.cpp +++ b/omp/test/multigrid/amgx_pgm_kernels.cpp @@ -134,22 +134,14 @@ class AmgxPgm : public ::testing::Test { system_mtx = Csr::create(ref); system_dense->convert_to(system_mtx.get()); - d_agg.set_executor(omp); - d_unfinished_agg.set_executor(omp); - d_strongest_neighbor.set_executor(omp); - d_coarse_vector = Mtx::create(omp); - d_fine_vector = Mtx::create(omp); - d_weight_csr = Csr::create(omp); - d_weight_diag = Diag::create(omp); - d_system_mtx = Csr::create(omp); - d_agg = agg; - d_unfinished_agg = unfinished_agg; - d_strongest_neighbor = strongest_neighbor; - d_coarse_vector->copy_from(coarse_vector.get()); - d_fine_vector->copy_from(fine_vector.get()); - d_weight_csr->copy_from(weight_csr.get()); - d_weight_diag->copy_from(weight_diag.get()); - d_system_mtx->copy_from(system_mtx.get()); + d_agg = gko::Array(omp, agg); + d_unfinished_agg = gko::Array(omp, unfinished_agg); + d_strongest_neighbor = gko::Array(omp, strongest_neighbor); + d_coarse_vector = gko::clone(omp, coarse_vector); + d_fine_vector = gko::clone(omp, fine_vector); + d_weight_csr = gko::clone(omp, weight_csr); + d_weight_diag = gko::clone(omp, weight_diag); + d_system_mtx = gko::clone(omp, system_mtx); } void make_weight(Mtx *mtx) diff --git a/omp/test/preconditioner/isai_kernels.cpp b/omp/test/preconditioner/isai_kernels.cpp index d1f7ba0243b..631a72e7a24 100644 --- a/omp/test/preconditioner/isai_kernels.cpp +++ b/omp/test/preconditioner/isai_kernels.cpp @@ -111,10 +111,8 @@ class Isai : public ::testing::Test { } inverse = clone_allocations(mtx.get()); - d_mtx = Csr::create(omp); - d_mtx->copy_from(mtx.get()); - d_inverse = Csr::create(omp); - d_inverse->copy_from(inverse.get()); + d_mtx = gko::clone(omp, mtx); + d_inverse = gko::clone(omp, inverse); } void ensure_diagonal(Dense *mtx) @@ -489,8 +487,7 @@ TEST_F(Isai, OmpIsaiScaleExcessSolutionIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(omp); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(omp, e_rhs); d_inverse->copy_from(lend(inverse)); gko::kernels::reference::isai::scale_excess_solution( @@ -514,8 +511,7 @@ TEST_F(Isai, OmpIsaiScalePartialExcessSolutionIsEquivalentToRef) auto e_dim = a1.get_data()[10] - a1.get_data()[5]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(omp); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(omp, e_rhs); gko::kernels::reference::isai::scale_excess_solution( ref, a1.get_const_data(), e_rhs.get(), 5u, 10u); @@ -538,8 +534,7 @@ TEST_F(Isai, OmpIsaiScatterExcessSolutionLIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(omp); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(omp, e_rhs); d_inverse->copy_from(lend(inverse)); gko::kernels::reference::isai::scatter_excess_solution( @@ -564,8 +559,7 @@ TEST_F(Isai, OmpIsaiScatterExcessSolutionUIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(omp); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(omp, e_rhs); // overwrite -1 values with inverse d_inverse->copy_from(lend(inverse)); @@ -591,8 +585,7 @@ TEST_F(Isai, OmpIsaiScatterExcessSolutionAIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(omp); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(omp, e_rhs); // overwrite -1 values with inverse d_inverse->copy_from(lend(inverse)); @@ -618,8 +611,7 @@ TEST_F(Isai, OmpIsaiScatterExcessSolutionSpdIsEquivalentToRef) auto e_dim = a1.get_data()[num_rows]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(omp); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(omp, e_rhs); // overwrite -1 values with inverse d_inverse->copy_from(lend(inverse)); @@ -645,8 +637,7 @@ TEST_F(Isai, OmpIsaiScatterPartialExcessSolutionIsEquivalentToRef) auto e_dim = a1.get_data()[10] - a1.get_data()[5]; auto e_rhs = Dense::create(ref, gko::dim<2>(e_dim, 1)); std::fill_n(e_rhs->get_values(), e_dim, 123456); - auto de_rhs = Dense::create(omp); - de_rhs->copy_from(lend(e_rhs)); + auto de_rhs = gko::clone(omp, e_rhs); // overwrite -1 values with inverse d_inverse->copy_from(lend(inverse)); diff --git a/omp/test/preconditioner/jacobi_kernels.cpp b/omp/test/preconditioner/jacobi_kernels.cpp index 095729a5e9a..b8dfb8fccb9 100644 --- a/omp/test/preconditioner/jacobi_kernels.cpp +++ b/omp/test/preconditioner/jacobi_kernels.cpp @@ -127,13 +127,11 @@ class Jacobi : public ::testing::Test { b = gko::test::generate_random_matrix( dim, num_rhs, std::uniform_int_distribution<>(num_rhs, num_rhs), std::normal_distribution<>(0.0, 1.0), engine, ref); - d_b = Vec::create(omp); - d_b->copy_from(b.get()); + d_b = gko::clone(omp, b); x = gko::test::generate_random_matrix( dim, num_rhs, std::uniform_int_distribution<>(num_rhs, num_rhs), std::normal_distribution<>(0.0, 1.0), engine, ref); - d_x = Vec::create(omp); - d_x->copy_from(x.get()); + d_x = gko::clone(omp, x); } const gko::precision_reduction dp{}; @@ -479,12 +477,9 @@ TEST_F(Jacobi, OmpScalarLinearCombinationApplyEquivalentToRef) std::normal_distribution<>(0.0, 1.0), engine, ref, gko::dim<2>(dim, 3), 4)); - auto d_smtx = gko::share(Mtx::create(omp)); - auto d_sb = gko::share(Vec::create(omp)); - auto d_sx = gko::share(Vec::create(omp)); - d_smtx->copy_from(smtx.get()); - d_sb->copy_from(sb.get()); - d_sx->copy_from(sx.get()); + auto d_smtx = gko::share(gko::clone(omp, smtx)); + auto d_sb = gko::share(gko::clone(omp, sb)); + auto d_sx = gko::share(gko::clone(omp, sx)); auto alpha = gko::initialize({2.0}, ref); auto d_alpha = gko::initialize({2.0}, omp); auto beta = gko::initialize({-1.0}, ref); diff --git a/omp/test/solver/cb_gmres_kernels.cpp b/omp/test/solver/cb_gmres_kernels.cpp index 7aa7fe20540..30fad3da17c 100644 --- a/omp/test/solver/cb_gmres_kernels.cpp +++ b/omp/test/solver/cb_gmres_kernels.cpp @@ -166,34 +166,22 @@ class CbGmres : public ::testing::Test { num_reorth->get_data()[i] = 0; } - d_x = Mtx::create(omp); - d_x->copy_from(x.get()); + d_x = gko::clone(omp, x); d_before_preconditioner = Mtx::create_with_config_of(d_x.get()); - d_y = Mtx::create(omp); - d_y->copy_from(y.get()); - d_b = Mtx::create(omp); - d_b->copy_from(b.get()); - d_arnoldi_norm = Mtx::create(omp); - d_arnoldi_norm->copy_from(arnoldi_norm.get()); + d_y = gko::clone(omp, y); + d_b = gko::clone(omp, b); + d_arnoldi_norm = gko::clone(omp, arnoldi_norm); d_range_helper = Range3dHelper{omp, {}}; d_range_helper = range_helper; - d_next_krylov_basis = Mtx::create(omp); - d_next_krylov_basis->copy_from(next_krylov_basis.get()); - d_hessenberg = Mtx::create(omp); - d_hessenberg->copy_from(hessenberg.get()); - d_hessenberg_iter = Mtx::create(omp); - d_hessenberg_iter->copy_from(hessenberg_iter.get()); + d_next_krylov_basis = gko::clone(omp, next_krylov_basis); + d_hessenberg = gko::clone(omp, hessenberg); + d_hessenberg_iter = gko::clone(omp, hessenberg_iter); d_buffer_iter = Mtx::create(omp); - d_residual = Mtx::create(omp); - d_residual->copy_from(residual.get()); - d_residual_norm = Mtx::create(omp); - d_residual_norm->copy_from(residual_norm.get()); - d_residual_norm_collection = Mtx::create(omp); - d_residual_norm_collection->copy_from(residual_norm_collection.get()); - d_givens_sin = Mtx::create(omp); - d_givens_sin->copy_from(givens_sin.get()); - d_givens_cos = Mtx::create(omp); - d_givens_cos->copy_from(givens_cos.get()); + d_residual = gko::clone(omp, residual); + d_residual_norm = gko::clone(omp, residual_norm); + d_residual_norm_collection = gko::clone(omp, residual_norm_collection); + d_givens_sin = gko::clone(omp, givens_sin); + d_givens_cos = gko::clone(omp, givens_cos); d_stop_status = std::unique_ptr>( new gko::Array(omp, n)); *d_stop_status = *stop_status; diff --git a/omp/test/solver/gmres_kernels.cpp b/omp/test/solver/gmres_kernels.cpp index 66ebe091ce8..79ebc56e13a 100644 --- a/omp/test/solver/gmres_kernels.cpp +++ b/omp/test/solver/gmres_kernels.cpp @@ -74,8 +74,7 @@ class Gmres : public ::testing::Test { omp = gko::OmpExecutor::create(); mtx = gen_mtx(123, 123); - d_mtx = Mtx::create(omp); - d_mtx->copy_from(mtx.get()); + d_mtx = gko::clone(omp, mtx); omp_gmres_factory = Solver::build() .with_criteria( @@ -144,29 +143,18 @@ class Gmres : public ::testing::Test { final_iter_nums->get_data()[i] = 5; } - d_x = Mtx::create(omp); - d_x->copy_from(x.get()); + d_x = gko::clone(omp, x); d_before_preconditioner = Mtx::create_with_config_of(d_x.get()); - d_y = Mtx::create(omp); - d_y->copy_from(y.get()); - d_b = Mtx::create(omp); - d_b->copy_from(b.get()); - d_krylov_bases = Mtx::create(omp); - d_krylov_bases->copy_from(krylov_bases.get()); - d_hessenberg = Mtx::create(omp); - d_hessenberg->copy_from(hessenberg.get()); - d_hessenberg_iter = Mtx::create(omp); - d_hessenberg_iter->copy_from(hessenberg_iter.get()); - d_residual = Mtx::create(omp); - d_residual->copy_from(residual.get()); - d_residual_norm = NormVector::create(omp); - d_residual_norm->copy_from(residual_norm.get()); - d_residual_norm_collection = Mtx::create(omp); - d_residual_norm_collection->copy_from(residual_norm_collection.get()); - d_givens_sin = Mtx::create(omp); - d_givens_sin->copy_from(givens_sin.get()); - d_givens_cos = Mtx::create(omp); - d_givens_cos->copy_from(givens_cos.get()); + d_y = gko::clone(omp, y); + d_b = gko::clone(omp, b); + d_krylov_bases = gko::clone(omp, krylov_bases); + d_hessenberg = gko::clone(omp, hessenberg); + d_hessenberg_iter = gko::clone(omp, hessenberg_iter); + d_residual = gko::clone(omp, residual); + d_residual_norm = gko::clone(omp, residual_norm); + d_residual_norm_collection = gko::clone(omp, residual_norm_collection); + d_givens_sin = gko::clone(omp, givens_sin); + d_givens_cos = gko::clone(omp, givens_cos); d_stop_status = std::unique_ptr>( new gko::Array(omp, n)); *d_stop_status = *stop_status; @@ -309,10 +297,8 @@ TEST_F(Gmres, GmresApplyOneRHSIsEquivalentToRef) auto omp_solver = omp_gmres_factory->generate(gko::share(d_mtx)); auto b = gen_mtx(m, n); auto x = gen_mtx(m, n); - auto d_b = Mtx::create(omp); - auto d_x = Mtx::create(omp); - d_b->copy_from(b.get()); - d_x->copy_from(x.get()); + auto d_b = gko::clone(omp, b); + auto d_x = gko::clone(omp, x); ref_solver->apply(b.get(), x.get()); omp_solver->apply(d_b.get(), d_x.get()); diff --git a/omp/test/solver/idr_kernels.cpp b/omp/test/solver/idr_kernels.cpp index bf2ec5d8e65..f45ed653b1c 100644 --- a/omp/test/solver/idr_kernels.cpp +++ b/omp/test/solver/idr_kernels.cpp @@ -128,41 +128,23 @@ class Idr : public ::testing::Test { stop_status->get_data()[i].reset(); } - d_mtx = Mtx::create(omp); - d_x = Mtx::create(omp); - d_b = Mtx::create(omp); - d_r = Mtx::create(omp); - d_m = Mtx::create(omp); - d_f = Mtx::create(omp); - d_g = Mtx::create(omp); - d_u = Mtx::create(omp); - d_c = Mtx::create(omp); - d_v = Mtx::create(omp); - d_p = Mtx::create(omp); - d_alpha = Mtx::create(omp); - d_omega = Mtx::create(omp); - d_tht = Mtx::create(omp); - d_residual_norm = Mtx::create(omp); - d_stop_status = std::unique_ptr>( - new gko::Array(omp)); - - d_mtx->copy_from(mtx.get()); - d_x->copy_from(x.get()); - d_b->copy_from(b.get()); - d_r->copy_from(r.get()); - d_m->copy_from(m.get()); - d_f->copy_from(f.get()); - d_g->copy_from(g.get()); - d_u->copy_from(u.get()); - d_c->copy_from(c.get()); - d_v->copy_from(v.get()); - d_p->copy_from(p.get()); - d_alpha->copy_from(alpha.get()); - d_omega->copy_from(omega.get()); - d_tht->copy_from(tht.get()); - d_residual_norm->copy_from(residual_norm.get()); - *d_stop_status = - *stop_status; // copy_from is not a public member function of Array + d_mtx = gko::clone(omp, mtx); + d_x = gko::clone(omp, x); + d_b = gko::clone(omp, b); + d_r = gko::clone(omp, r); + d_m = gko::clone(omp, m); + d_f = gko::clone(omp, f); + d_g = gko::clone(omp, g); + d_u = gko::clone(omp, u); + d_c = gko::clone(omp, c); + d_v = gko::clone(omp, v); + d_p = gko::clone(omp, p); + d_alpha = gko::clone(omp, alpha); + d_omega = gko::clone(omp, omega); + d_tht = gko::clone(omp, tht); + d_residual_norm = gko::clone(omp, residual_norm); + d_stop_status = std::make_unique>( + omp, *stop_status); } std::shared_ptr ref; diff --git a/omp/test/solver/lower_trs_kernels.cpp b/omp/test/solver/lower_trs_kernels.cpp index 7065c7135e1..1a15fbe5647 100644 --- a/omp/test/solver/lower_trs_kernels.cpp +++ b/omp/test/solver/lower_trs_kernels.cpp @@ -93,25 +93,17 @@ class LowerTrs : public ::testing::Test { { b = gen_mtx(m, n); x = gen_mtx(m, n); - t_b = Mtx::create(ref); - t_x = Mtx::create(ref); - t_b->copy_from(b.get()); - t_x->copy_from(x.get()); - d_b = Mtx::create(omp); - d_b->copy_from(b.get()); - d_x = Mtx::create(omp); - d_x->copy_from(x.get()); - dt_b = Mtx::create(omp); - dt_b->copy_from(b.get()); - dt_x = Mtx::create(omp); - dt_x->copy_from(x.get()); + t_b = b->clone(); + t_x = x->clone(); + d_b = gko::clone(omp, b); + d_x = gko::clone(omp, x); + dt_b = gko::clone(omp, b); + dt_x = gko::clone(omp, x); mat = gen_l_mtx(m, m); csr_mat = CsrMtx::create(ref); mat->convert_to(csr_mat.get()); - d_mat = Mtx::create(omp); - d_mat->copy_from(mat.get()); - d_csr_mat = CsrMtx::create(omp); - d_csr_mat->copy_from(csr_mat.get()); + d_mat = gko::clone(omp, mat); + d_csr_mat = gko::clone(omp, csr_mat); } std::shared_ptr ref; diff --git a/omp/test/solver/upper_trs_kernels.cpp b/omp/test/solver/upper_trs_kernels.cpp index bc434aca064..d3381167f43 100644 --- a/omp/test/solver/upper_trs_kernels.cpp +++ b/omp/test/solver/upper_trs_kernels.cpp @@ -93,25 +93,17 @@ class UpperTrs : public ::testing::Test { { b = gen_mtx(m, n); x = gen_mtx(m, n); - t_b = Mtx::create(ref); - t_x = Mtx::create(ref); - t_b->copy_from(b.get()); - t_x->copy_from(x.get()); - d_b = Mtx::create(omp); - d_b->copy_from(b.get()); - d_x = Mtx::create(omp); - d_x->copy_from(x.get()); - dt_b = Mtx::create(omp); - dt_b->copy_from(b.get()); - dt_x = Mtx::create(omp); - dt_x->copy_from(x.get()); + t_b = b->clone(); + t_x = x->clone(); + d_b = gko::clone(omp, b); + d_x = gko::clone(omp, x); + dt_b = gko::clone(omp, b); + dt_x = gko::clone(omp, x); mat = gen_u_mtx(m, m); csr_mat = CsrMtx::create(ref); mat->convert_to(csr_mat.get()); - d_mat = Mtx::create(omp); - d_mat->copy_from(mat.get()); - d_csr_mat = CsrMtx::create(omp); - d_csr_mat->copy_from(csr_mat.get()); + d_mat = gko::clone(omp, mat); + d_csr_mat = gko::clone(omp, csr_mat); } std::shared_ptr ref; diff --git a/reference/test/factorization/ilu_kernels.cpp b/reference/test/factorization/ilu_kernels.cpp index 24e49be272a..94321f71829 100644 --- a/reference/test/factorization/ilu_kernels.cpp +++ b/reference/test/factorization/ilu_kernels.cpp @@ -473,8 +473,7 @@ TYPED_TEST(Ilu, GenerateForReverseCsrSmall) using Csr = typename TestFixture::Csr; const auto size = this->mtx_csr_small->get_size(); const auto nnz = size[0] * size[1]; - auto reverse_csr = gko::share(Csr::create(this->exec)); - reverse_csr->copy_from(gko::lend(this->mtx_csr_small)); + auto reverse_csr = gko::share(gko::clone(this->exec, this->mtx_csr_small)); // Fill the Csr matrix rows in reverse order for (size_t i = 0; i < size[0]; ++i) { const auto row_start = reverse_csr->get_row_ptrs()[i]; diff --git a/reference/test/factorization/par_ilu_kernels.cpp b/reference/test/factorization/par_ilu_kernels.cpp index 8efbf77dc4e..2869631cadd 100644 --- a/reference/test/factorization/par_ilu_kernels.cpp +++ b/reference/test/factorization/par_ilu_kernels.cpp @@ -730,8 +730,7 @@ TYPED_TEST(ParIlu, GenerateForReverseCsrSmall) using Csr = typename TestFixture::Csr; const auto size = this->mtx_csr_small->get_size(); const auto nnz = size[0] * size[1]; - auto reverse_csr = gko::share(Csr::create(this->exec)); - reverse_csr->copy_from(gko::lend(this->mtx_csr_small)); + auto reverse_csr = gko::share(gko::clone(this->exec, this->mtx_csr_small)); // Fill the Csr matrix rows in reverse order for (size_t i = 0; i < size[0]; ++i) { const auto row_start = reverse_csr->get_row_ptrs()[i]; diff --git a/test/matrix/dense_kernels.cpp b/test/matrix/dense_kernels.cpp index 306041ea4e1..1f4836f187e 100644 --- a/test/matrix/dense_kernels.cpp +++ b/test/matrix/dense_kernels.cpp @@ -123,12 +123,9 @@ class Dense : public ::testing::Test { } else { alpha = gko::initialize({2.0}, ref); } - dx = Mtx::create(exec); - dx->copy_from(x.get()); - dy = Mtx::create(exec); - dy->copy_from(y.get()); - dalpha = Mtx::create(exec); - dalpha->copy_from(alpha.get()); + dx = gko::clone(exec, x); + dy = gko::clone(exec, y); + dalpha = gko::clone(exec, alpha); expected = Mtx::create(ref, gko::dim<2>{1, num_vecs}); dresult = Mtx::create(exec, gko::dim<2>{1, num_vecs}); } @@ -142,20 +139,13 @@ class Dense : public ::testing::Test { alpha = gko::initialize({2.0}, ref); beta = gko::initialize({-1.0}, ref); square = gen_mtx(x->get_size()[0], x->get_size()[0]); - dx = Mtx::create(exec); - dx->copy_from(x.get()); - dc_x = ComplexMtx::create(exec); - dc_x->copy_from(c_x.get()); - dy = Mtx::create(exec); - dy->copy_from(y.get()); - dresult = Mtx::create(exec); - dresult->copy_from(expected.get()); - dalpha = Mtx::create(exec); - dalpha->copy_from(alpha.get()); - dbeta = Mtx::create(exec); - dbeta->copy_from(beta.get()); - dsquare = Mtx::create(exec); - dsquare->copy_from(square.get()); + dx = gko::clone(exec, x); + dc_x = gko::clone(exec, c_x); + dy = gko::clone(exec, y); + dresult = gko::clone(exec, expected); + dalpha = gko::clone(exec, alpha); + dbeta = gko::clone(exec, beta); + dsquare = gko::clone(exec, square); std::vector tmp(x->get_size()[0], 0); auto rng = std::default_random_engine{}; @@ -232,13 +222,11 @@ TEST_F(Dense, CopyRespectsStride) TEST_F(Dense, FillIsEquivalentToRef) { set_up_vector_data(3); - auto result = Mtx::create(ref); x->fill(42); dx->fill(42); - result->copy_from(dx.get()); - GKO_ASSERT_MTX_NEAR(result, x, 0); + GKO_ASSERT_MTX_NEAR(dx, x, 0); } @@ -249,13 +237,11 @@ TEST_F(Dense, StridedFillIsEquivalentToRef) 4, {I{1.0, 2.0}, I{3.0, 4.0}, I{5.0, 6.0}}, ref); auto dx = gko::initialize>( 4, {I{1.0, 2.0}, I{3.0, 4.0}, I{5.0, 6.0}}, exec); - auto result = Mtx::create(ref); x->fill(42); dx->fill(42); - result->copy_from(dx.get()); - GKO_ASSERT_MTX_NEAR(result, x, 0); + GKO_ASSERT_MTX_NEAR(dx, x, 0); } @@ -266,9 +252,7 @@ TEST_F(Dense, SingleVectorScaleIsEquivalentToRef) x->scale(alpha.get()); dx->scale(dalpha.get()); - auto result = Mtx::create(ref); - result->copy_from(dx.get()); - GKO_ASSERT_MTX_NEAR(result, x, r::value); + GKO_ASSERT_MTX_NEAR(dx, x, r::value); } @@ -279,9 +263,7 @@ TEST_F(Dense, SingleVectorInvScaleIsEquivalentToRef) x->inv_scale(alpha.get()); dx->inv_scale(dalpha.get()); - auto result = Mtx::create(ref); - result->copy_from(dx.get()); - GKO_ASSERT_MTX_NEAR(result, x, r::value); + GKO_ASSERT_MTX_NEAR(dx, x, r::value); } @@ -404,12 +386,9 @@ TEST_F(Dense, AddsScaledDiagIsEquivalentToRef) auto diag = gko::matrix::Diagonal::create(this->ref, 532, diag_values); auto alpha = gko::initialize({2.0}, this->ref); - auto dmat = Mtx::create(this->exec); - dmat->copy_from(mat.get()); - auto ddiag = gko::matrix::Diagonal::create(this->exec); - ddiag->copy_from(diag.get()); - auto dalpha = Mtx::create(this->exec); - dalpha->copy_from(alpha.get()); + auto dmat = gko::clone(this->exec, mat); + auto ddiag = gko::clone(this->exec, diag); + auto dalpha = gko::clone(this->exec, alpha); mat->add_scaled(alpha.get(), diag.get()); dmat->add_scaled(dalpha.get(), ddiag.get()); @@ -427,12 +406,9 @@ TEST_F(Dense, SubtractScaledDiagIsEquivalentToRef) auto diag = gko::matrix::Diagonal::create(this->ref, 532, diag_values); auto alpha = gko::initialize({2.0}, this->ref); - auto dmat = Mtx::create(this->exec); - dmat->copy_from(mat.get()); - auto ddiag = gko::matrix::Diagonal::create(this->exec); - ddiag->copy_from(diag.get()); - auto dalpha = Mtx::create(this->exec); - dalpha->copy_from(alpha.get()); + auto dmat = gko::clone(this->exec, mat); + auto ddiag = gko::clone(this->exec, diag); + auto dalpha = gko::clone(this->exec, alpha); mat->sub_scaled(alpha.get(), diag.get()); dmat->sub_scaled(dalpha.get(), ddiag.get()); diff --git a/test/solver/bicg_kernels.cpp b/test/solver/bicg_kernels.cpp index cd099445bf1..d7178babaeb 100644 --- a/test/solver/bicg_kernels.cpp +++ b/test/solver/bicg_kernels.cpp @@ -131,32 +131,19 @@ class Bicg : public ::testing::Test { // check correct handling for stopped columns stop_status->get_data()[1].stop(1); - d_b = Mtx::create(exec); - d_b->copy_from(b.get()); - d_r = Mtx::create(exec); - d_r->copy_from(r.get()); - d_z = Mtx::create(exec); - d_z->copy_from(z.get()); - d_p = Mtx::create(exec); - d_p->copy_from(p.get()); - d_q = Mtx::create(exec); - d_q->copy_from(q.get()); - d_r2 = Mtx::create(exec); - d_r2->copy_from(r2.get()); - d_z2 = Mtx::create(exec); - d_z2->copy_from(z2.get()); - d_p2 = Mtx::create(exec); - d_p2->copy_from(p2.get()); - d_q2 = Mtx::create(exec); - d_q2->copy_from(q2.get()); - d_x = Mtx::create(exec); - d_x->copy_from(x.get()); - d_beta = Mtx::create(exec); - d_beta->copy_from(beta.get()); - d_prev_rho = Mtx::create(exec); - d_prev_rho->copy_from(prev_rho.get()); - d_rho = Mtx::create(exec); - d_rho->copy_from(rho.get()); + d_b = gko::clone(exec, b); + d_r = gko::clone(exec, r); + d_z = gko::clone(exec, z); + d_p = gko::clone(exec, p); + d_q = gko::clone(exec, q); + d_r2 = gko::clone(exec, r2); + d_z2 = gko::clone(exec, z2); + d_p2 = gko::clone(exec, p2); + d_q2 = gko::clone(exec, q2); + d_x = gko::clone(exec, x); + d_beta = gko::clone(exec, beta); + d_prev_rho = gko::clone(exec, prev_rho); + d_rho = gko::clone(exec, rho); d_stop_status = std::unique_ptr>( new gko::Array(exec, n)); *d_stop_status = *stop_status; @@ -271,12 +258,9 @@ TEST_F(Bicg, ApplyWithSpdMatrixIsEquivalentToRef) gko::test::make_hpd(mtx.get()); auto x = gen_mtx(50, 3, 5); auto b = gen_mtx(50, 3, 4); - auto d_mtx = Mtx::create(exec); - d_mtx->copy_from(mtx.get()); - auto d_x = Mtx::create(exec); - d_x->copy_from(x.get()); - auto d_b = Mtx::create(exec); - d_b->copy_from(b.get()); + auto d_mtx = gko::clone(exec, mtx); + auto d_x = gko::clone(exec, x); + auto d_b = gko::clone(exec, b); auto bicg_factory = gko::solver::Bicg::build() .with_criteria( @@ -307,10 +291,8 @@ TEST_F(Bicg, ApplyWithSuiteSparseMatrixIsEquivalentToRef) { auto x = gen_mtx(36, 1, 2); auto b = gen_mtx(36, 1, 3); - auto d_x = Mtx::create(exec); - d_x->copy_from(x.get()); - auto d_b = Mtx::create(exec); - d_b->copy_from(b.get()); + auto d_x = gko::clone(exec, x); + auto d_b = gko::clone(exec, b); auto bicg_factory = gko::solver::Bicg::build() .with_criteria( diff --git a/test/solver/bicgstab_kernels.cpp b/test/solver/bicgstab_kernels.cpp index 9318d486a28..c4ade0336ee 100644 --- a/test/solver/bicgstab_kernels.cpp +++ b/test/solver/bicgstab_kernels.cpp @@ -76,8 +76,7 @@ class Bicgstab : public ::testing::Test { mtx = gen_mtx(123, 123, 125); gko::test::make_diag_dominant(mtx.get()); - d_mtx = Mtx::create(exec); - d_mtx->copy_from(mtx.get()); + d_mtx = gko::clone(exec, mtx); exec_bicgstab_factory = Solver::build() .with_criteria( @@ -150,43 +149,24 @@ class Bicgstab : public ::testing::Test { // check correct handling for stopped columns stop_status->get_data()[1].stop(1); - d_x = Mtx::create(exec); - d_b = Mtx::create(exec); - d_r = Mtx::create(exec); - d_z = Mtx::create(exec); - d_p = Mtx::create(exec); - d_t = Mtx::create(exec); - d_s = Mtx::create(exec); - d_y = Mtx::create(exec); - d_v = Mtx::create(exec); - d_rr = Mtx::create(exec); - d_prev_rho = Mtx::create(exec); - d_rho = Mtx::create(exec); - d_alpha = Mtx::create(exec); - d_beta = Mtx::create(exec); - d_gamma = Mtx::create(exec); - d_omega = Mtx::create(exec); - d_stop_status = std::unique_ptr>( - new gko::Array(exec)); - - d_x->copy_from(x.get()); - d_b->copy_from(b.get()); - d_r->copy_from(r.get()); - d_z->copy_from(z.get()); - d_p->copy_from(p.get()); - d_v->copy_from(v.get()); - d_y->copy_from(y.get()); - d_t->copy_from(t.get()); - d_s->copy_from(s.get()); - d_rr->copy_from(rr.get()); - d_prev_rho->copy_from(prev_rho.get()); - d_rho->copy_from(rho.get()); - d_alpha->copy_from(alpha.get()); - d_beta->copy_from(beta.get()); - d_gamma->copy_from(gamma.get()); - d_omega->copy_from(omega.get()); - *d_stop_status = - *stop_status; // copy_from is not a public member function of Array + d_x = gko::clone(exec, x); + d_b = gko::clone(exec, b); + d_r = gko::clone(exec, r); + d_z = gko::clone(exec, z); + d_p = gko::clone(exec, p); + d_t = gko::clone(exec, t); + d_s = gko::clone(exec, s); + d_y = gko::clone(exec, y); + d_v = gko::clone(exec, v); + d_rr = gko::clone(exec, rr); + d_prev_rho = gko::clone(exec, prev_rho); + d_rho = gko::clone(exec, rho); + d_alpha = gko::clone(exec, alpha); + d_beta = gko::clone(exec, beta); + d_gamma = gko::clone(exec, gamma); + d_omega = gko::clone(exec, omega); + d_stop_status = std::make_unique>( + exec, *stop_status); } std::shared_ptr ref; @@ -326,10 +306,8 @@ TEST_F(Bicgstab, BicgstabApplyOneRHSIsEquivalentToRef) auto exec_solver = exec_bicgstab_factory->generate(d_mtx); auto b = gen_mtx(m, n, n + 2); auto x = gen_mtx(m, n, n + 3); - auto d_b = Mtx::create(exec); - auto d_x = Mtx::create(exec); - d_b->copy_from(b.get()); - d_x->copy_from(x.get()); + auto d_b = gko::clone(exec, b); + auto d_x = gko::clone(exec, x); ref_solver->apply(b.get(), x.get()); exec_solver->apply(d_b.get(), d_x.get()); @@ -347,10 +325,8 @@ TEST_F(Bicgstab, BicgstabApplyMultipleRHSIsEquivalentToRef) auto ref_solver = ref_bicgstab_factory->generate(mtx); auto b = gen_mtx(m, n, n + 4); auto x = gen_mtx(m, n, n + 3); - auto d_b = Mtx::create(exec); - auto d_x = Mtx::create(exec); - d_b->copy_from(b.get()); - d_x->copy_from(x.get()); + auto d_b = gko::clone(exec, b); + auto d_x = gko::clone(exec, x); ref_solver->apply(b.get(), x.get()); exec_solver->apply(d_b.get(), d_x.get()); diff --git a/test/solver/cg_kernels.cpp b/test/solver/cg_kernels.cpp index 2a38b3c8b4b..ce81e04841c 100644 --- a/test/solver/cg_kernels.cpp +++ b/test/solver/cg_kernels.cpp @@ -116,24 +116,15 @@ class Cg : public ::testing::Test { // check correct handling for stopped columns stop_status->get_data()[1].stop(1); - d_b = Mtx::create(exec); - d_b->copy_from(b.get()); - d_r = Mtx::create(exec); - d_r->copy_from(r.get()); - d_z = Mtx::create(exec); - d_z->copy_from(z.get()); - d_p = Mtx::create(exec); - d_p->copy_from(p.get()); - d_q = Mtx::create(exec); - d_q->copy_from(q.get()); - d_x = Mtx::create(exec); - d_x->copy_from(x.get()); - d_beta = Mtx::create(exec); - d_beta->copy_from(beta.get()); - d_prev_rho = Mtx::create(exec); - d_prev_rho->copy_from(prev_rho.get()); - d_rho = Mtx::create(exec); - d_rho->copy_from(rho.get()); + d_b = gko::clone(exec, b); + d_r = gko::clone(exec, r); + d_z = gko::clone(exec, z); + d_p = gko::clone(exec, p); + d_q = gko::clone(exec, q); + d_x = gko::clone(exec, x); + d_beta = gko::clone(exec, beta); + d_prev_rho = gko::clone(exec, prev_rho); + d_rho = gko::clone(exec, rho); d_stop_status = std::unique_ptr>( new gko::Array(exec, n)); *d_stop_status = *stop_status; @@ -227,12 +218,9 @@ TEST_F(Cg, ApplyIsEquivalentToRef) gko::test::make_hpd(mtx.get()); auto x = gen_mtx(50, 3, 5); auto b = gen_mtx(50, 3, 4); - auto d_mtx = Mtx::create(exec); - d_mtx->copy_from(mtx.get()); - auto d_x = Mtx::create(exec); - d_x->copy_from(x.get()); - auto d_b = Mtx::create(exec); - d_b->copy_from(b.get()); + auto d_mtx = gko::clone(exec, mtx); + auto d_x = gko::clone(exec, x); + auto d_b = gko::clone(exec, b); auto cg_factory = gko::solver::Cg::build() .with_criteria( diff --git a/test/solver/cgs_kernels.cpp b/test/solver/cgs_kernels.cpp index ad8aaceb7cb..ea2e4157989 100644 --- a/test/solver/cgs_kernels.cpp +++ b/test/solver/cgs_kernels.cpp @@ -74,8 +74,7 @@ class Cgs : public ::testing::Test { mtx = gen_mtx(123, 123, 125); gko::test::make_diag_dominant(mtx.get()); - d_mtx = Mtx::create(exec); - d_mtx->copy_from(mtx.get()); + d_mtx = gko::clone(exec, mtx); exec_cgs_factory = Solver::build() .with_criteria( @@ -143,36 +142,21 @@ class Cgs : public ::testing::Test { // check correct handling for stopped columns stop_status->get_data()[1].stop(1); - d_b = Mtx::create(exec); - d_b->copy_from(b.get()); - d_r = Mtx::create(exec); - d_r->copy_from(r.get()); - d_r_tld = Mtx::create(exec); - d_r_tld->copy_from(r_tld.get()); - d_p = Mtx::create(exec); - d_p->copy_from(p.get()); - d_q = Mtx::create(exec); - d_q->copy_from(q.get()); - d_u = Mtx::create(exec); - d_u->copy_from(u.get()); - d_u_hat = Mtx::create(exec); - d_u_hat->copy_from(u_hat.get()); - d_v_hat = Mtx::create(exec); - d_v_hat->copy_from(v_hat.get()); - d_t = Mtx::create(exec); - d_t->copy_from(t.get()); - d_x = Mtx::create(exec); - d_x->copy_from(x.get()); - d_alpha = Mtx::create(exec); - d_alpha->copy_from(alpha.get()); - d_beta = Mtx::create(exec); - d_beta->copy_from(beta.get()); - d_gamma = Mtx::create(exec); - d_gamma->copy_from(gamma.get()); - d_rho_prev = Mtx::create(exec); - d_rho_prev->copy_from(rho_prev.get()); - d_rho = Mtx::create(exec); - d_rho->copy_from(rho.get()); + d_b = gko::clone(exec, b); + d_r = gko::clone(exec, r); + d_r_tld = gko::clone(exec, r_tld); + d_p = gko::clone(exec, p); + d_q = gko::clone(exec, q); + d_u = gko::clone(exec, u); + d_u_hat = gko::clone(exec, u_hat); + d_v_hat = gko::clone(exec, v_hat); + d_t = gko::clone(exec, t); + d_x = gko::clone(exec, x); + d_alpha = gko::clone(exec, alpha); + d_beta = gko::clone(exec, beta); + d_gamma = gko::clone(exec, gamma); + d_rho_prev = gko::clone(exec, rho_prev); + d_rho = gko::clone(exec, rho); d_stop_status = std::unique_ptr>( new gko::Array(exec, n)); // because there is no public function copy_from, use overloaded = @@ -315,10 +299,8 @@ TEST_F(Cgs, CgsApplyOneRHSIsEquivalentToRef) auto exec_solver = exec_cgs_factory->generate(d_mtx); auto b = gen_mtx(m, n, n + 4); auto x = gen_mtx(m, n, n + 2); - auto d_b = Mtx::create(exec); - auto d_x = Mtx::create(exec); - d_b->copy_from(b.get()); - d_x->copy_from(x.get()); + auto d_b = gko::clone(exec, b); + auto d_x = gko::clone(exec, x); ref_solver->apply(b.get(), x.get()); exec_solver->apply(d_b.get(), d_x.get()); @@ -336,10 +318,8 @@ TEST_F(Cgs, CgsApplyMultipleRHSIsEquivalentToRef) auto ref_solver = ref_cgs_factory->generate(mtx); auto b = gen_mtx(m, n, n + 1); auto x = gen_mtx(m, n, n); - auto d_b = Mtx::create(exec); - auto d_x = Mtx::create(exec); - d_b->copy_from(b.get()); - d_x->copy_from(x.get()); + auto d_b = gko::clone(exec, b); + auto d_x = gko::clone(exec, x); ref_solver->apply(b.get(), x.get()); exec_solver->apply(d_b.get(), d_x.get()); diff --git a/test/solver/fcg_kernels.cpp b/test/solver/fcg_kernels.cpp index 7dd0c0a2558..dedb5e02477 100644 --- a/test/solver/fcg_kernels.cpp +++ b/test/solver/fcg_kernels.cpp @@ -118,28 +118,17 @@ class Fcg : public ::testing::Test { // check correct handling for stopped columns stop_status->get_data()[1].stop(1); - d_b = Mtx::create(exec); - d_b->copy_from(b.get()); - d_r = Mtx::create(exec); - d_r->copy_from(r.get()); - d_t = Mtx::create(exec); - d_t->copy_from(t.get()); - d_z = Mtx::create(exec); - d_z->copy_from(z.get()); - d_p = Mtx::create(exec); - d_p->copy_from(p.get()); - d_q = Mtx::create(exec); - d_q->copy_from(q.get()); - d_x = Mtx::create(exec); - d_x->copy_from(x.get()); - d_beta = Mtx::create(exec); - d_beta->copy_from(beta.get()); - d_prev_rho = Mtx::create(exec); - d_prev_rho->copy_from(prev_rho.get()); - d_rho_t = Mtx::create(exec); - d_rho_t->copy_from(rho_t.get()); - d_rho = Mtx::create(exec); - d_rho->copy_from(rho.get()); + d_b = gko::clone(exec, b); + d_r = gko::clone(exec, r); + d_t = gko::clone(exec, t); + d_z = gko::clone(exec, z); + d_p = gko::clone(exec, p); + d_q = gko::clone(exec, q); + d_x = gko::clone(exec, x); + d_beta = gko::clone(exec, beta); + d_prev_rho = gko::clone(exec, prev_rho); + d_rho_t = gko::clone(exec, rho_t); + d_rho = gko::clone(exec, rho); d_stop_status = std::unique_ptr>( new gko::Array(exec, n)); *d_stop_status = *stop_status; @@ -238,12 +227,9 @@ TEST_F(Fcg, ApplyIsEquivalentToRef) gko::test::make_hpd(mtx.get()); auto x = gen_mtx(50, 3, 4); auto b = gen_mtx(50, 3, 5); - auto d_mtx = Mtx::create(exec); - d_mtx->copy_from(mtx.get()); - auto d_x = Mtx::create(exec); - d_x->copy_from(x.get()); - auto d_b = Mtx::create(exec); - d_b->copy_from(b.get()); + auto d_mtx = gko::clone(exec, mtx); + auto d_x = gko::clone(exec, x); + auto d_b = gko::clone(exec, b); auto fcg_factory = Solver::build() .with_criteria( From 7ec21da0be81aec67f0a812c170ff53191c72465 Mon Sep 17 00:00:00 2001 From: Tobias Ribizel Date: Fri, 20 Aug 2021 03:04:25 -0400 Subject: [PATCH 2/2] review update use make_unique in more places Co-authored-by: Yuhsiang M. Tsai --- cuda/test/solver/cb_gmres_kernels.cpp | 34 +++++++++++--------------- cuda/test/solver/gmres_kernels.cpp | 18 ++++++-------- cuda/test/solver/idr_kernels.cpp | 4 +-- dpcpp/test/solver/cb_gmres_kernels.cpp | 34 +++++++++++--------------- dpcpp/test/solver/gmres_kernels.cpp | 18 ++++++-------- dpcpp/test/solver/idr_kernels.cpp | 4 +-- hip/test/solver/cb_gmres_kernels.cpp | 34 +++++++++++--------------- hip/test/solver/gmres_kernels.cpp | 18 ++++++-------- hip/test/solver/idr_kernels.cpp | 4 +-- omp/test/solver/cb_gmres_kernels.cpp | 34 +++++++++++--------------- omp/test/solver/gmres_kernels.cpp | 17 ++++++------- omp/test/solver/idr_kernels.cpp | 4 +-- test/solver/bicg_kernels.cpp | 9 +++---- test/solver/bicgstab_kernels.cpp | 4 +-- test/solver/cg_kernels.cpp | 9 +++---- test/solver/cgs_kernels.cpp | 11 +++------ test/solver/fcg_kernels.cpp | 9 +++---- 17 files changed, 113 insertions(+), 152 deletions(-) diff --git a/cuda/test/solver/cb_gmres_kernels.cpp b/cuda/test/solver/cb_gmres_kernels.cpp index e1a41796aed..2bc9b17e6c6 100644 --- a/cuda/test/solver/cb_gmres_kernels.cpp +++ b/cuda/test/solver/cb_gmres_kernels.cpp @@ -143,23 +143,21 @@ class CbGmres : public ::testing::Test { residual_norm_collection = gen_mtx(default_krylov_dim_mixed + 1, n); givens_sin = gen_mtx(default_krylov_dim_mixed, n); givens_cos = gen_mtx(default_krylov_dim_mixed, n); - stop_status = std::unique_ptr>( - new gko::Array(ref, n)); + stop_status = + std::make_unique>(ref, n); for (size_t i = 0; i < stop_status->get_num_elems(); ++i) { stop_status->get_data()[i].reset(); } - reorth_status = std::unique_ptr>( - new gko::Array(ref, n)); + reorth_status = + std::make_unique>(ref, n); for (size_t i = 0; i < reorth_status->get_num_elems(); ++i) { reorth_status->get_data()[i].reset(); } - final_iter_nums = std::unique_ptr>( - new gko::Array(ref, n)); + final_iter_nums = std::make_unique>(ref, n); for (size_t i = 0; i < final_iter_nums->get_num_elems(); ++i) { final_iter_nums->get_data()[i] = 5; } - num_reorth = std::unique_ptr>( - new gko::Array(ref, n)); + num_reorth = std::make_unique>(ref, n); for (size_t i = 0; i < num_reorth->get_num_elems(); ++i) { num_reorth->get_data()[i] = 5; } @@ -180,18 +178,14 @@ class CbGmres : public ::testing::Test { d_residual_norm_collection = gko::clone(cuda, residual_norm_collection); d_givens_sin = gko::clone(cuda, givens_sin); d_givens_cos = gko::clone(cuda, givens_cos); - d_stop_status = std::unique_ptr>( - new gko::Array(cuda, n)); - *d_stop_status = *stop_status; - d_reorth_status = std::unique_ptr>( - new gko::Array(cuda, n)); - *d_reorth_status = *reorth_status; - d_final_iter_nums = std::unique_ptr>( - new gko::Array(cuda, n)); - *d_final_iter_nums = *final_iter_nums; - d_num_reorth = std::unique_ptr>( - new gko::Array(cuda, n)); - *d_num_reorth = *num_reorth; + d_stop_status = std::make_unique>( + cuda, *stop_status); + d_reorth_status = std::make_unique>( + cuda, *reorth_status); + d_final_iter_nums = std::make_unique>( + cuda, *final_iter_nums); + d_num_reorth = + std::make_unique>(cuda, *num_reorth); } void assert_krylov_bases_near() diff --git a/cuda/test/solver/gmres_kernels.cpp b/cuda/test/solver/gmres_kernels.cpp index f9a274953ea..1f2cac6fa3a 100644 --- a/cuda/test/solver/gmres_kernels.cpp +++ b/cuda/test/solver/gmres_kernels.cpp @@ -111,13 +111,13 @@ class Gmres : public ::testing::Test { gen_mtx(gko::solver::default_krylov_dim + 1, nrhs); givens_sin = gen_mtx(gko::solver::default_krylov_dim, nrhs); givens_cos = gen_mtx(gko::solver::default_krylov_dim, nrhs); - stop_status = std::unique_ptr>( - new gko::Array(ref, nrhs)); + stop_status = + std::make_unique>(ref, nrhs); for (size_t i = 0; i < stop_status->get_num_elems(); ++i) { stop_status->get_data()[i].reset(); } - final_iter_nums = std::unique_ptr>( - new gko::Array(ref, nrhs)); + final_iter_nums = + std::make_unique>(ref, nrhs); for (size_t i = 0; i < final_iter_nums->get_num_elems(); ++i) { final_iter_nums->get_data()[i] = 5; } @@ -134,12 +134,10 @@ class Gmres : public ::testing::Test { d_residual_norm_collection = gko::clone(cuda, residual_norm_collection); d_givens_sin = gko::clone(cuda, givens_sin); d_givens_cos = gko::clone(cuda, givens_cos); - d_stop_status = std::unique_ptr>( - new gko::Array(cuda, nrhs)); - *d_stop_status = *stop_status; - d_final_iter_nums = std::unique_ptr>( - new gko::Array(cuda, nrhs)); - *d_final_iter_nums = *final_iter_nums; + d_stop_status = std::make_unique>( + cuda, *stop_status); + d_final_iter_nums = std::make_unique>( + cuda, *final_iter_nums); } std::shared_ptr ref; diff --git a/cuda/test/solver/idr_kernels.cpp b/cuda/test/solver/idr_kernels.cpp index 4b0d49d8c0c..08b40989007 100644 --- a/cuda/test/solver/idr_kernels.cpp +++ b/cuda/test/solver/idr_kernels.cpp @@ -116,8 +116,8 @@ class Idr : public ::testing::Test { omega = gen_mtx(1, nrhs); tht = gen_mtx(1, nrhs); residual_norm = gen_mtx(1, nrhs); - stop_status = std::unique_ptr>( - new gko::Array(ref, nrhs)); + stop_status = + std::make_unique>(ref, nrhs); for (size_t i = 0; i < nrhs; ++i) { stop_status->get_data()[i].reset(); } diff --git a/dpcpp/test/solver/cb_gmres_kernels.cpp b/dpcpp/test/solver/cb_gmres_kernels.cpp index 41784c10f57..295b793873e 100644 --- a/dpcpp/test/solver/cb_gmres_kernels.cpp +++ b/dpcpp/test/solver/cb_gmres_kernels.cpp @@ -152,23 +152,21 @@ class CbGmres : public ::testing::Test { residual_norm_collection = gen_mtx(default_krylov_dim_mixed + 1, n); givens_sin = gen_mtx(default_krylov_dim_mixed, n); givens_cos = gen_mtx(default_krylov_dim_mixed, n); - stop_status = std::unique_ptr>( - new gko::Array(ref, n)); + stop_status = + std::make_unique>(ref, n); for (size_t i = 0; i < stop_status->get_num_elems(); ++i) { stop_status->get_data()[i].reset(); } - reorth_status = std::unique_ptr>( - new gko::Array(ref, n)); + reorth_status = + std::make_unique>(ref, n); for (size_t i = 0; i < reorth_status->get_num_elems(); ++i) { reorth_status->get_data()[i].reset(); } - final_iter_nums = std::unique_ptr>( - new gko::Array(ref, n)); + final_iter_nums = std::make_unique>(ref, n); for (size_t i = 0; i < final_iter_nums->get_num_elems(); ++i) { final_iter_nums->get_data()[i] = 5; } - num_reorth = std::unique_ptr>( - new gko::Array(ref, n)); + num_reorth = std::make_unique>(ref, n); for (size_t i = 0; i < num_reorth->get_num_elems(); ++i) { num_reorth->get_data()[i] = 5; } @@ -190,18 +188,14 @@ class CbGmres : public ::testing::Test { gko::clone(dpcpp, residual_norm_collection); d_givens_sin = gko::clone(dpcpp, givens_sin); d_givens_cos = gko::clone(dpcpp, givens_cos); - d_stop_status = std::unique_ptr>( - new gko::Array(dpcpp, n)); - *d_stop_status = *stop_status; - d_reorth_status = std::unique_ptr>( - new gko::Array(dpcpp, n)); - *d_reorth_status = *reorth_status; - d_final_iter_nums = std::unique_ptr>( - new gko::Array(dpcpp, n)); - *d_final_iter_nums = *final_iter_nums; - d_num_reorth = std::unique_ptr>( - new gko::Array(dpcpp, n)); - *d_num_reorth = *num_reorth; + d_stop_status = std::make_unique>( + dpcpp, *stop_status); + d_reorth_status = std::make_unique>( + dpcpp, *reorth_status); + d_final_iter_nums = std::make_unique>( + dpcpp, *final_iter_nums); + d_num_reorth = + std::make_unique>(dpcpp, *num_reorth); } void assert_krylov_bases_near() diff --git a/dpcpp/test/solver/gmres_kernels.cpp b/dpcpp/test/solver/gmres_kernels.cpp index 30f3c484ae5..c395f4ffd91 100644 --- a/dpcpp/test/solver/gmres_kernels.cpp +++ b/dpcpp/test/solver/gmres_kernels.cpp @@ -115,13 +115,13 @@ class Gmres : public ::testing::Test { gen_mtx(gko::solver::default_krylov_dim + 1, nrhs); givens_sin = gen_mtx(gko::solver::default_krylov_dim, nrhs); givens_cos = gen_mtx(gko::solver::default_krylov_dim, nrhs); - stop_status = std::unique_ptr>( - new gko::Array(ref, nrhs)); + stop_status = + std::make_unique>(ref, nrhs); for (size_t i = 0; i < stop_status->get_num_elems(); ++i) { stop_status->get_data()[i].reset(); } - final_iter_nums = std::unique_ptr>( - new gko::Array(ref, nrhs)); + final_iter_nums = + std::make_unique>(ref, nrhs); for (size_t i = 0; i < final_iter_nums->get_num_elems(); ++i) { final_iter_nums->get_data()[i] = 5; } @@ -139,12 +139,10 @@ class Gmres : public ::testing::Test { gko::clone(dpcpp, residual_norm_collection); d_givens_sin = gko::clone(dpcpp, givens_sin); d_givens_cos = gko::clone(dpcpp, givens_cos); - d_stop_status = std::unique_ptr>( - new gko::Array(dpcpp, nrhs)); - *d_stop_status = *stop_status; - d_final_iter_nums = std::unique_ptr>( - new gko::Array(dpcpp, nrhs)); - *d_final_iter_nums = *final_iter_nums; + d_stop_status = std::make_unique>( + dpcpp, *stop_status); + d_final_iter_nums = std::make_unique>( + dpcpp, *final_iter_nums); } std::shared_ptr ref; diff --git a/dpcpp/test/solver/idr_kernels.cpp b/dpcpp/test/solver/idr_kernels.cpp index d5df8d0a0de..515480aac12 100644 --- a/dpcpp/test/solver/idr_kernels.cpp +++ b/dpcpp/test/solver/idr_kernels.cpp @@ -126,8 +126,8 @@ class Idr : public ::testing::Test { omega = gen_mtx(1, nrhs); tht = gen_mtx(1, nrhs); residual_norm = gen_mtx(1, nrhs); - stop_status = std::unique_ptr>( - new gko::Array(ref, nrhs)); + stop_status = + std::make_unique>(ref, nrhs); for (size_t i = 0; i < nrhs; ++i) { stop_status->get_data()[i].reset(); } diff --git a/hip/test/solver/cb_gmres_kernels.cpp b/hip/test/solver/cb_gmres_kernels.cpp index b31162fa3bf..3d3d6b2c18d 100644 --- a/hip/test/solver/cb_gmres_kernels.cpp +++ b/hip/test/solver/cb_gmres_kernels.cpp @@ -143,23 +143,21 @@ class CbGmres : public ::testing::Test { residual_norm_collection = gen_mtx(default_krylov_dim_mixed + 1, n); givens_sin = gen_mtx(default_krylov_dim_mixed, n); givens_cos = gen_mtx(default_krylov_dim_mixed, n); - stop_status = std::unique_ptr>( - new gko::Array(ref, n)); + stop_status = + std::make_unique>(ref, n); for (size_t i = 0; i < stop_status->get_num_elems(); ++i) { stop_status->get_data()[i].reset(); } - reorth_status = std::unique_ptr>( - new gko::Array(ref, n)); + reorth_status = + std::make_unique>(ref, n); for (size_t i = 0; i < reorth_status->get_num_elems(); ++i) { reorth_status->get_data()[i].reset(); } - final_iter_nums = std::unique_ptr>( - new gko::Array(ref, n)); + final_iter_nums = std::make_unique>(ref, n); for (size_t i = 0; i < final_iter_nums->get_num_elems(); ++i) { final_iter_nums->get_data()[i] = 5; } - num_reorth = std::unique_ptr>( - new gko::Array(ref, n)); + num_reorth = std::make_unique>(ref, n); for (size_t i = 0; i < num_reorth->get_num_elems(); ++i) { num_reorth->get_data()[i] = 5; } @@ -180,18 +178,14 @@ class CbGmres : public ::testing::Test { d_residual_norm_collection = gko::clone(hip, residual_norm_collection); d_givens_sin = gko::clone(hip, givens_sin); d_givens_cos = gko::clone(hip, givens_cos); - d_stop_status = std::unique_ptr>( - new gko::Array(hip, n)); - *d_stop_status = *stop_status; - d_reorth_status = std::unique_ptr>( - new gko::Array(hip, n)); - *d_reorth_status = *reorth_status; - d_final_iter_nums = std::unique_ptr>( - new gko::Array(hip, n)); - *d_final_iter_nums = *final_iter_nums; - d_num_reorth = std::unique_ptr>( - new gko::Array(hip, n)); - *d_num_reorth = *num_reorth; + d_stop_status = std::make_unique>( + hip, *stop_status); + d_reorth_status = std::make_unique>( + hip, *reorth_status); + d_final_iter_nums = + std::make_unique>(hip, *final_iter_nums); + d_num_reorth = + std::make_unique>(hip, *num_reorth); } void assert_krylov_bases_near() diff --git a/hip/test/solver/gmres_kernels.cpp b/hip/test/solver/gmres_kernels.cpp index ec4f89e0d4c..fb36becf1b0 100644 --- a/hip/test/solver/gmres_kernels.cpp +++ b/hip/test/solver/gmres_kernels.cpp @@ -112,13 +112,13 @@ class Gmres : public ::testing::Test { gen_mtx(gko::solver::default_krylov_dim + 1, nrhs); givens_sin = gen_mtx(gko::solver::default_krylov_dim, nrhs); givens_cos = gen_mtx(gko::solver::default_krylov_dim, nrhs); - stop_status = std::unique_ptr>( - new gko::Array(ref, nrhs)); + stop_status = + std::make_unique>(ref, nrhs); for (size_t i = 0; i < stop_status->get_num_elems(); ++i) { stop_status->get_data()[i].reset(); } - final_iter_nums = std::unique_ptr>( - new gko::Array(ref, nrhs)); + final_iter_nums = + std::make_unique>(ref, nrhs); for (size_t i = 0; i < final_iter_nums->get_num_elems(); ++i) { final_iter_nums->get_data()[i] = 5; } @@ -135,12 +135,10 @@ class Gmres : public ::testing::Test { d_residual_norm_collection = gko::clone(hip, residual_norm_collection); d_givens_sin = gko::clone(hip, givens_sin); d_givens_cos = gko::clone(hip, givens_cos); - d_stop_status = std::unique_ptr>( - new gko::Array(hip, nrhs)); - *d_stop_status = *stop_status; - d_final_iter_nums = std::unique_ptr>( - new gko::Array(hip, nrhs)); - *d_final_iter_nums = *final_iter_nums; + d_stop_status = std::make_unique>( + hip, *stop_status); + d_final_iter_nums = + std::make_unique>(hip, *final_iter_nums); } std::shared_ptr ref; diff --git a/hip/test/solver/idr_kernels.cpp b/hip/test/solver/idr_kernels.cpp index 5c09f446b2b..04886d692cf 100644 --- a/hip/test/solver/idr_kernels.cpp +++ b/hip/test/solver/idr_kernels.cpp @@ -116,8 +116,8 @@ class Idr : public ::testing::Test { omega = gen_mtx(1, nrhs); tht = gen_mtx(1, nrhs); residual_norm = gen_mtx(1, nrhs); - stop_status = std::unique_ptr>( - new gko::Array(ref, nrhs)); + stop_status = + std::make_unique>(ref, nrhs); for (size_t i = 0; i < nrhs; ++i) { stop_status->get_data()[i].reset(); } diff --git a/omp/test/solver/cb_gmres_kernels.cpp b/omp/test/solver/cb_gmres_kernels.cpp index 30fad3da17c..e1cbe5b8e18 100644 --- a/omp/test/solver/cb_gmres_kernels.cpp +++ b/omp/test/solver/cb_gmres_kernels.cpp @@ -145,23 +145,21 @@ class CbGmres : public ::testing::Test { residual_norm_collection = gen_mtx(default_krylov_dim_mixed + 1, n); givens_sin = gen_mtx(default_krylov_dim_mixed, n); givens_cos = gen_mtx(default_krylov_dim_mixed, n); - stop_status = std::unique_ptr>( - new gko::Array(ref, n)); + stop_status = + std::make_unique>(ref, n); for (size_t i = 0; i < stop_status->get_num_elems(); ++i) { stop_status->get_data()[i].reset(); } - reorth_status = std::unique_ptr>( - new gko::Array(ref, n)); + reorth_status = + std::make_unique>(ref, n); for (size_t i = 0; i < reorth_status->get_num_elems(); ++i) { reorth_status->get_data()[i].reset(); } - final_iter_nums = std::unique_ptr>( - new gko::Array(ref, n)); + final_iter_nums = std::make_unique>(ref, n); for (size_t i = 0; i < final_iter_nums->get_num_elems(); ++i) { final_iter_nums->get_data()[i] = 5; } - num_reorth = std::unique_ptr>( - new gko::Array(ref, n)); + num_reorth = std::make_unique>(ref, n); for (size_t i = 0; i < num_reorth->get_num_elems(); ++i) { num_reorth->get_data()[i] = 0; } @@ -182,18 +180,14 @@ class CbGmres : public ::testing::Test { d_residual_norm_collection = gko::clone(omp, residual_norm_collection); d_givens_sin = gko::clone(omp, givens_sin); d_givens_cos = gko::clone(omp, givens_cos); - d_stop_status = std::unique_ptr>( - new gko::Array(omp, n)); - *d_stop_status = *stop_status; - d_reorth_status = std::unique_ptr>( - new gko::Array(omp, n)); - *d_reorth_status = *reorth_status; - d_final_iter_nums = std::unique_ptr>( - new gko::Array(omp, n)); - *d_final_iter_nums = *final_iter_nums; - d_num_reorth = std::unique_ptr>( - new gko::Array(omp, n)); - *d_num_reorth = *num_reorth; + d_stop_status = std::make_unique>( + omp, *stop_status); + d_reorth_status = std::make_unique>( + omp, *reorth_status); + d_final_iter_nums = + std::make_unique>(omp, *final_iter_nums); + d_num_reorth = + std::make_unique>(omp, *num_reorth); } void assert_krylov_bases_near() diff --git a/omp/test/solver/gmres_kernels.cpp b/omp/test/solver/gmres_kernels.cpp index 79ebc56e13a..395b2ec07e3 100644 --- a/omp/test/solver/gmres_kernels.cpp +++ b/omp/test/solver/gmres_kernels.cpp @@ -132,13 +132,12 @@ class Gmres : public ::testing::Test { gen_mtx(gko::solver::default_krylov_dim + 1, n); givens_sin = gen_mtx(gko::solver::default_krylov_dim, n); givens_cos = gen_mtx(gko::solver::default_krylov_dim, n); - stop_status = std::unique_ptr>( - new gko::Array(ref, n)); + stop_status = + std::make_unique>(ref, n); for (size_t i = 0; i < stop_status->get_num_elems(); ++i) { stop_status->get_data()[i].reset(); } - final_iter_nums = std::unique_ptr>( - new gko::Array(ref, n)); + final_iter_nums = std::make_unique>(ref, n); for (size_t i = 0; i < final_iter_nums->get_num_elems(); ++i) { final_iter_nums->get_data()[i] = 5; } @@ -155,12 +154,10 @@ class Gmres : public ::testing::Test { d_residual_norm_collection = gko::clone(omp, residual_norm_collection); d_givens_sin = gko::clone(omp, givens_sin); d_givens_cos = gko::clone(omp, givens_cos); - d_stop_status = std::unique_ptr>( - new gko::Array(omp, n)); - *d_stop_status = *stop_status; - d_final_iter_nums = std::unique_ptr>( - new gko::Array(omp, n)); - *d_final_iter_nums = *final_iter_nums; + d_stop_status = std::make_unique>( + omp, *stop_status); + d_final_iter_nums = + std::make_unique>(omp, *final_iter_nums); } std::shared_ptr ref; diff --git a/omp/test/solver/idr_kernels.cpp b/omp/test/solver/idr_kernels.cpp index f45ed653b1c..9232454425f 100644 --- a/omp/test/solver/idr_kernels.cpp +++ b/omp/test/solver/idr_kernels.cpp @@ -122,8 +122,8 @@ class Idr : public ::testing::Test { omega = gen_mtx(1, nrhs); tht = gen_mtx(1, nrhs); residual_norm = gen_mtx(1, nrhs); - stop_status = std::unique_ptr>( - new gko::Array(ref, nrhs)); + stop_status = + std::make_unique>(ref, nrhs); for (size_t i = 0; i < nrhs; ++i) { stop_status->get_data()[i].reset(); } diff --git a/test/solver/bicg_kernels.cpp b/test/solver/bicg_kernels.cpp index d7178babaeb..4dd7364277e 100644 --- a/test/solver/bicg_kernels.cpp +++ b/test/solver/bicg_kernels.cpp @@ -123,8 +123,8 @@ class Bicg : public ::testing::Test { // check correct handling for zero values beta->at(2) = 0.0; prev_rho->at(2) = 0.0; - stop_status = std::unique_ptr>( - new gko::Array(ref, n)); + stop_status = + std::make_unique>(ref, n); for (size_t i = 0; i < stop_status->get_num_elems(); ++i) { stop_status->get_data()[i].reset(); } @@ -144,9 +144,8 @@ class Bicg : public ::testing::Test { d_beta = gko::clone(exec, beta); d_prev_rho = gko::clone(exec, prev_rho); d_rho = gko::clone(exec, rho); - d_stop_status = std::unique_ptr>( - new gko::Array(exec, n)); - *d_stop_status = *stop_status; + d_stop_status = std::make_unique>( + exec, *stop_status); } std::shared_ptr ref; diff --git a/test/solver/bicgstab_kernels.cpp b/test/solver/bicgstab_kernels.cpp index c4ade0336ee..abfb2b2a60a 100644 --- a/test/solver/bicgstab_kernels.cpp +++ b/test/solver/bicgstab_kernels.cpp @@ -141,8 +141,8 @@ class Bicgstab : public ::testing::Test { beta->at(2) = 0.0; omega->at(2) = 0.0; omega->at(3) = 0.0; - stop_status = std::unique_ptr>( - new gko::Array(ref, n)); + stop_status = + std::make_unique>(ref, n); for (size_t i = 0; i < n; ++i) { stop_status->get_data()[i].reset(); } diff --git a/test/solver/cg_kernels.cpp b/test/solver/cg_kernels.cpp index ce81e04841c..4464af7241c 100644 --- a/test/solver/cg_kernels.cpp +++ b/test/solver/cg_kernels.cpp @@ -108,8 +108,8 @@ class Cg : public ::testing::Test { // check correct handling for zero values beta->at(2) = 0.0; prev_rho->at(2) = 0.0; - stop_status = std::unique_ptr>( - new gko::Array(ref, n)); + stop_status = + std::make_unique>(ref, n); for (size_t i = 0; i < stop_status->get_num_elems(); ++i) { stop_status->get_data()[i].reset(); } @@ -125,9 +125,8 @@ class Cg : public ::testing::Test { d_beta = gko::clone(exec, beta); d_prev_rho = gko::clone(exec, prev_rho); d_rho = gko::clone(exec, rho); - d_stop_status = std::unique_ptr>( - new gko::Array(exec, n)); - *d_stop_status = *stop_status; + d_stop_status = std::make_unique>( + exec, *stop_status); } std::shared_ptr ref; diff --git a/test/solver/cgs_kernels.cpp b/test/solver/cgs_kernels.cpp index ea2e4157989..81da7622947 100644 --- a/test/solver/cgs_kernels.cpp +++ b/test/solver/cgs_kernels.cpp @@ -134,8 +134,8 @@ class Cgs : public ::testing::Test { // check correct handling for zero values gamma->at(2) = 0.0; rho_prev->at(2) = 0.0; - stop_status = std::unique_ptr>( - new gko::Array(ref, n)); + stop_status = + std::make_unique>(ref, n); for (size_t i = 0; i < stop_status->get_num_elems(); ++i) { stop_status->get_data()[i].reset(); } @@ -157,11 +157,8 @@ class Cgs : public ::testing::Test { d_gamma = gko::clone(exec, gamma); d_rho_prev = gko::clone(exec, rho_prev); d_rho = gko::clone(exec, rho); - d_stop_status = std::unique_ptr>( - new gko::Array(exec, n)); - // because there is no public function copy_from, use overloaded = - // operator - *d_stop_status = *stop_status; + d_stop_status = std::make_unique>( + exec, *stop_status); } std::shared_ptr ref; diff --git a/test/solver/fcg_kernels.cpp b/test/solver/fcg_kernels.cpp index dedb5e02477..3dc7527850f 100644 --- a/test/solver/fcg_kernels.cpp +++ b/test/solver/fcg_kernels.cpp @@ -110,8 +110,8 @@ class Fcg : public ::testing::Test { // check correct handling for zero values beta->at(2) = 0.0; prev_rho->at(2) = 0.0; - stop_status = std::unique_ptr>( - new gko::Array(ref, n)); + stop_status = + std::make_unique>(ref, n); for (size_t i = 0; i < stop_status->get_num_elems(); ++i) { stop_status->get_data()[i].reset(); } @@ -129,9 +129,8 @@ class Fcg : public ::testing::Test { d_prev_rho = gko::clone(exec, prev_rho); d_rho_t = gko::clone(exec, rho_t); d_rho = gko::clone(exec, rho); - d_stop_status = std::unique_ptr>( - new gko::Array(exec, n)); - *d_stop_status = *stop_status; + d_stop_status = std::make_unique>( + exec, *stop_status); } std::shared_ptr ref;