Skip to content

Commit

Permalink
improve code style and fix sonarqube warnings
Browse files Browse the repository at this point in the history
This also adds a true complex HIP conj_transpose test,
which was missing before.
  • Loading branch information
upsj committed Oct 26, 2020
1 parent 3c2c0af commit c916a74
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 140 deletions.
65 changes: 30 additions & 35 deletions cuda/test/matrix/csr_kernels.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -429,26 +429,23 @@ TEST_F(Csr, TransposeIsEquivalentToRef)
{
set_up_apply_data(std::make_shared<Mtx::automatical>(cuda));

auto trans = mtx->transpose();
auto d_trans = dmtx->transpose();
auto trans = gko::as<Mtx>(mtx->transpose());
auto d_trans = gko::as<Mtx>(dmtx->transpose());

GKO_ASSERT_MTX_NEAR(static_cast<Mtx *>(d_trans.get()),
static_cast<Mtx *>(trans.get()), 0.0);
ASSERT_TRUE(static_cast<Mtx *>(d_trans.get())->is_sorted_by_column_index());
GKO_ASSERT_MTX_NEAR(d_trans, trans, 0.0);
ASSERT_TRUE(d_trans->is_sorted_by_column_index());
}


TEST_F(Csr, ConjugateTransposeIsEquivalentToRef)
{
set_up_apply_complex_data(std::make_shared<ComplexMtx::automatical>(cuda));

auto trans = complex_mtx->conj_transpose();
auto d_trans = complex_dmtx->conj_transpose();
auto trans = gko::as<ComplexMtx>(complex_mtx->conj_transpose());
auto d_trans = gko::as<ComplexMtx>(complex_dmtx->conj_transpose());

GKO_ASSERT_MTX_NEAR(static_cast<ComplexMtx *>(d_trans.get()),
static_cast<ComplexMtx *>(trans.get()), 0.0);
ASSERT_TRUE(
static_cast<ComplexMtx *>(d_trans.get())->is_sorted_by_column_index());
GKO_ASSERT_MTX_NEAR(d_trans, trans, 0.0);
ASSERT_TRUE(d_trans->is_sorted_by_column_index());
}


Expand Down Expand Up @@ -674,56 +671,54 @@ TEST_F(Csr, MoveToHybridIsEquivalentToRef)
TEST_F(Csr, IsRowPermutable)
{
set_up_apply_data(std::make_shared<Mtx::classical>());
auto r_permute = gko::share(mtx->row_permute(rpermute_idxs.get()));
auto dr_permute = gko::share(dmtx->row_permute(drpermute_idxs.get()));

GKO_ASSERT_MTX_EQ_SPARSITY(gko::as<Mtx>(r_permute),
gko::as<Mtx>(dr_permute));
GKO_ASSERT_MTX_NEAR(gko::as<Mtx>(r_permute), gko::as<Mtx>(dr_permute), 0);
auto r_permute = gko::as<Mtx>(mtx->row_permute(rpermute_idxs.get()));
auto dr_permute = gko::as<Mtx>(dmtx->row_permute(drpermute_idxs.get()));

GKO_ASSERT_MTX_EQ_SPARSITY(r_permute, dr_permute);
GKO_ASSERT_MTX_NEAR(r_permute, dr_permute, 0);
}


TEST_F(Csr, IsColPermutable)
{
set_up_apply_data(std::make_shared<Mtx::classical>());
auto c_permute = gko::share(mtx->column_permute(cpermute_idxs.get()));
auto dc_permute = gko::share(dmtx->column_permute(dcpermute_idxs.get()));

ASSERT_TRUE(gko::as<Mtx>(dc_permute)->is_sorted_by_column_index());
GKO_ASSERT_MTX_EQ_SPARSITY(gko::as<Mtx>(c_permute),
gko::as<Mtx>(dc_permute));
GKO_ASSERT_MTX_NEAR(gko::as<Mtx>(c_permute), gko::as<Mtx>(dc_permute), 0);
auto c_permute = gko::as<Mtx>(mtx->column_permute(cpermute_idxs.get()));
auto dc_permute = gko::as<Mtx>(dmtx->column_permute(dcpermute_idxs.get()));

ASSERT_TRUE(dc_permute->is_sorted_by_column_index());
GKO_ASSERT_MTX_EQ_SPARSITY(c_permute, dc_permute);
GKO_ASSERT_MTX_NEAR(c_permute, dc_permute, 0);
}


TEST_F(Csr, IsInverseRowPermutable)
{
set_up_apply_data(std::make_shared<Mtx::classical>());

auto inverse_r_permute =
gko::share(mtx->inverse_row_permute(rpermute_idxs.get()));
gko::as<Mtx>(mtx->inverse_row_permute(rpermute_idxs.get()));
auto d_inverse_r_permute =
gko::share(dmtx->inverse_row_permute(drpermute_idxs.get()));
gko::as<Mtx>(dmtx->inverse_row_permute(drpermute_idxs.get()));

GKO_ASSERT_MTX_EQ_SPARSITY(gko::as<Mtx>(inverse_r_permute),
gko::as<Mtx>(d_inverse_r_permute));
GKO_ASSERT_MTX_NEAR(gko::as<Mtx>(inverse_r_permute),
gko::as<Mtx>(d_inverse_r_permute), 0);
GKO_ASSERT_MTX_EQ_SPARSITY(inverse_r_permute, d_inverse_r_permute);
GKO_ASSERT_MTX_NEAR(inverse_r_permute, d_inverse_r_permute, 0);
}


TEST_F(Csr, IsInverseColPermutable)
{
set_up_apply_data(std::make_shared<Mtx::classical>());

auto inverse_c_permute =
gko::share(mtx->inverse_column_permute(cpermute_idxs.get()));
gko::as<Mtx>(mtx->inverse_column_permute(cpermute_idxs.get()));
auto d_inverse_c_permute =
gko::share(dmtx->inverse_column_permute(dcpermute_idxs.get()));
gko::as<Mtx>(dmtx->inverse_column_permute(dcpermute_idxs.get()));

ASSERT_TRUE(gko::as<Mtx>(d_inverse_c_permute)->is_sorted_by_column_index());
GKO_ASSERT_MTX_EQ_SPARSITY(gko::as<Mtx>(inverse_c_permute),
gko::as<Mtx>(d_inverse_c_permute));
GKO_ASSERT_MTX_NEAR(gko::as<Mtx>(inverse_c_permute),
gko::as<Mtx>(d_inverse_c_permute), 0);
ASSERT_TRUE(d_inverse_c_permute->is_sorted_by_column_index());
GKO_ASSERT_MTX_EQ_SPARSITY(inverse_c_permute, d_inverse_c_permute);
GKO_ASSERT_MTX_NEAR(inverse_c_permute, d_inverse_c_permute, 0);
}


Expand Down
67 changes: 31 additions & 36 deletions hip/test/matrix/csr_kernels.hip.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -428,26 +428,23 @@ TEST_F(Csr, TransposeIsEquivalentToRef)
{
set_up_apply_data(std::make_shared<Mtx::automatical>(hip));

auto trans = mtx->transpose();
auto d_trans = dmtx->transpose();
auto trans = gko::as<Mtx>(mtx->transpose());
auto d_trans = gko::as<Mtx>(dmtx->transpose());

GKO_ASSERT_MTX_NEAR(static_cast<Mtx *>(d_trans.get()),
static_cast<Mtx *>(trans.get()), 0.0);
ASSERT_TRUE(static_cast<Mtx *>(d_trans.get())->is_sorted_by_column_index());
GKO_ASSERT_MTX_NEAR(d_trans, trans, 0.0);
ASSERT_TRUE(d_trans->is_sorted_by_column_index());
}


TEST_F(Csr, ConjugateTransposeIsEquivalentToRef)
{
set_up_apply_data(std::make_shared<Mtx::automatical>(hip));
set_up_apply_complex_data(std::make_shared<ComplexMtx::automatical>(hip));

auto ctrans = mtx->conj_transpose();
auto d_ctrans = dmtx->conj_transpose();
auto trans = gko::as<ComplexMtx>(complex_mtx->conj_transpose());
auto d_trans = gko::as<ComplexMtx>(complex_dmtx->conj_transpose());

GKO_ASSERT_MTX_NEAR(static_cast<Mtx *>(d_ctrans.get()),
static_cast<Mtx *>(ctrans.get()), 0.0);
ASSERT_TRUE(
static_cast<Mtx *>(d_ctrans.get())->is_sorted_by_column_index());
GKO_ASSERT_MTX_NEAR(d_trans, trans, 0.0);
ASSERT_TRUE(d_trans->is_sorted_by_column_index());
}


Expand Down Expand Up @@ -673,56 +670,54 @@ TEST_F(Csr, MoveToHybridIsEquivalentToRef)
TEST_F(Csr, IsRowPermutable)
{
set_up_apply_data(std::make_shared<Mtx::classical>());
auto r_permute = gko::share(mtx->row_permute(rpermute_idxs.get()));
auto dr_permute = gko::share(dmtx->row_permute(drpermute_idxs.get()));

GKO_ASSERT_MTX_EQ_SPARSITY(gko::as<Mtx>(r_permute),
gko::as<Mtx>(dr_permute));
GKO_ASSERT_MTX_NEAR(gko::as<Mtx>(r_permute), gko::as<Mtx>(dr_permute), 0);
auto r_permute = gko::as<Mtx>(mtx->row_permute(rpermute_idxs.get()));
auto dr_permute = gko::as<Mtx>(dmtx->row_permute(drpermute_idxs.get()));

GKO_ASSERT_MTX_EQ_SPARSITY(r_permute, dr_permute);
GKO_ASSERT_MTX_NEAR(r_permute, dr_permute, 0);
}


TEST_F(Csr, IsColPermutable)
{
set_up_apply_data(std::make_shared<Mtx::classical>());
auto c_permute = gko::share(mtx->column_permute(cpermute_idxs.get()));
auto dc_permute = gko::share(dmtx->column_permute(dcpermute_idxs.get()));

ASSERT_TRUE(gko::as<Mtx>(dc_permute)->is_sorted_by_column_index());
GKO_ASSERT_MTX_EQ_SPARSITY(gko::as<Mtx>(c_permute),
gko::as<Mtx>(dc_permute));
GKO_ASSERT_MTX_NEAR(gko::as<Mtx>(c_permute), gko::as<Mtx>(dc_permute), 0);
auto c_permute = gko::as<Mtx>(mtx->column_permute(cpermute_idxs.get()));
auto dc_permute = gko::as<Mtx>(dmtx->column_permute(dcpermute_idxs.get()));

ASSERT_TRUE(dc_permute->is_sorted_by_column_index());
GKO_ASSERT_MTX_EQ_SPARSITY(c_permute, dc_permute);
GKO_ASSERT_MTX_NEAR(c_permute, dc_permute, 0);
}


TEST_F(Csr, IsInverseRowPermutable)
{
set_up_apply_data(std::make_shared<Mtx::classical>());

auto inverse_r_permute =
gko::share(mtx->inverse_row_permute(rpermute_idxs.get()));
gko::as<Mtx>(mtx->inverse_row_permute(rpermute_idxs.get()));
auto d_inverse_r_permute =
gko::share(dmtx->inverse_row_permute(drpermute_idxs.get()));
gko::as<Mtx>(dmtx->inverse_row_permute(drpermute_idxs.get()));

GKO_ASSERT_MTX_EQ_SPARSITY(gko::as<Mtx>(inverse_r_permute),
gko::as<Mtx>(d_inverse_r_permute));
GKO_ASSERT_MTX_NEAR(gko::as<Mtx>(inverse_r_permute),
gko::as<Mtx>(d_inverse_r_permute), 0);
GKO_ASSERT_MTX_EQ_SPARSITY(inverse_r_permute, d_inverse_r_permute);
GKO_ASSERT_MTX_NEAR(inverse_r_permute, d_inverse_r_permute, 0);
}


TEST_F(Csr, IsInverseColPermutable)
{
set_up_apply_data(std::make_shared<Mtx::classical>());

auto inverse_c_permute =
gko::share(mtx->inverse_column_permute(cpermute_idxs.get()));
gko::as<Mtx>(mtx->inverse_column_permute(cpermute_idxs.get()));
auto d_inverse_c_permute =
gko::share(dmtx->inverse_column_permute(dcpermute_idxs.get()));
gko::as<Mtx>(dmtx->inverse_column_permute(dcpermute_idxs.get()));

ASSERT_TRUE(gko::as<Mtx>(d_inverse_c_permute)->is_sorted_by_column_index());
GKO_ASSERT_MTX_EQ_SPARSITY(gko::as<Mtx>(inverse_c_permute),
gko::as<Mtx>(d_inverse_c_permute));
GKO_ASSERT_MTX_NEAR(gko::as<Mtx>(inverse_c_permute),
gko::as<Mtx>(d_inverse_c_permute), 0);
ASSERT_TRUE(d_inverse_c_permute->is_sorted_by_column_index());
GKO_ASSERT_MTX_EQ_SPARSITY(inverse_c_permute, d_inverse_c_permute);
GKO_ASSERT_MTX_NEAR(inverse_c_permute, d_inverse_c_permute, 0);
}


Expand Down
4 changes: 1 addition & 3 deletions omp/matrix/csr_kernels.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -604,7 +604,7 @@ void invert_permutation(std::shared_ptr<const DefaultExecutor> exec,
IndexType *inv_permutation)
{
#pragma omp parallel for
for (size_type i = 0; i < size; ++i) {
for (IndexType i = 0; i < static_cast<IndexType>(size); ++i) {
inv_permutation[permutation_indices[i]] = i;
}
}
Expand All @@ -624,7 +624,6 @@ void row_permute(std::shared_ptr<const OmpExecutor> exec, const IndexType *perm,
auto rp_col_idxs = row_permuted->get_col_idxs();
auto rp_vals = row_permuted->get_values();
size_type num_rows = orig->get_size()[0];
size_type num_nnz = orig->get_num_stored_elements();

#pragma omp parallel for
for (size_type row = 0; row < num_rows; ++row) {
Expand Down Expand Up @@ -664,7 +663,6 @@ void inverse_row_permute(std::shared_ptr<const OmpExecutor> exec,
auto rp_col_idxs = row_permuted->get_col_idxs();
auto rp_vals = row_permuted->get_values();
size_type num_rows = orig->get_size()[0];
size_type num_nnz = orig->get_num_stored_elements();

#pragma omp parallel for
for (size_type row = 0; row < num_rows; ++row) {
Expand Down
65 changes: 30 additions & 35 deletions omp/test/matrix/csr_kernels.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -291,26 +291,23 @@ TEST_F(Csr, TransposeIsEquivalentToRef)
{
set_up_apply_data();

auto trans = mtx->transpose();
auto d_trans = dmtx->transpose();
auto trans = gko::as<Mtx>(mtx->transpose());
auto d_trans = gko::as<Mtx>(dmtx->transpose());

GKO_ASSERT_MTX_NEAR(static_cast<Mtx *>(d_trans.get()),
static_cast<Mtx *>(trans.get()), 0.0);
ASSERT_TRUE(static_cast<Mtx *>(d_trans.get())->is_sorted_by_column_index());
GKO_ASSERT_MTX_NEAR(d_trans, trans, 0.0);
ASSERT_TRUE(d_trans->is_sorted_by_column_index());
}


TEST_F(Csr, ConjugateTransposeIsEquivalentToRef)
{
set_up_apply_data();

auto trans = complex_mtx->conj_transpose();
auto d_trans = complex_dmtx->conj_transpose();
auto trans = gko::as<ComplexMtx>(complex_mtx->conj_transpose());
auto d_trans = gko::as<ComplexMtx>(complex_dmtx->conj_transpose());

GKO_ASSERT_MTX_NEAR(static_cast<ComplexMtx *>(d_trans.get()),
static_cast<ComplexMtx *>(trans.get()), 0.0);
ASSERT_TRUE(
static_cast<ComplexMtx *>(d_trans.get())->is_sorted_by_column_index());
GKO_ASSERT_MTX_NEAR(d_trans, trans, 0.0);
ASSERT_TRUE(d_trans->is_sorted_by_column_index());
}


Expand Down Expand Up @@ -442,56 +439,54 @@ TEST_F(Csr, MoveToHybridIsEquivalentToRef)
TEST_F(Csr, IsRowPermutable)
{
set_up_apply_data();
auto r_permute = gko::share(mtx->row_permute(rpermute_idxs.get()));
auto dr_permute = gko::share(dmtx->row_permute(drpermute_idxs.get()));

GKO_ASSERT_MTX_EQ_SPARSITY(gko::as<Mtx>(r_permute),
gko::as<Mtx>(dr_permute));
GKO_ASSERT_MTX_NEAR(gko::as<Mtx>(r_permute), gko::as<Mtx>(dr_permute), 0);
auto r_permute = gko::as<Mtx>(mtx->row_permute(rpermute_idxs.get()));
auto dr_permute = gko::as<Mtx>(dmtx->row_permute(drpermute_idxs.get()));

GKO_ASSERT_MTX_EQ_SPARSITY(r_permute, dr_permute);
GKO_ASSERT_MTX_NEAR(r_permute, dr_permute, 0);
}


TEST_F(Csr, IsColPermutable)
{
set_up_apply_data();
auto c_permute = gko::share(mtx->column_permute(cpermute_idxs.get()));
auto dc_permute = gko::share(dmtx->column_permute(dcpermute_idxs.get()));

ASSERT_TRUE(gko::as<Mtx>(dc_permute)->is_sorted_by_column_index());
GKO_ASSERT_MTX_EQ_SPARSITY(gko::as<Mtx>(c_permute),
gko::as<Mtx>(dc_permute));
GKO_ASSERT_MTX_NEAR(gko::as<Mtx>(c_permute), gko::as<Mtx>(dc_permute), 0);
auto c_permute = gko::as<Mtx>(mtx->column_permute(cpermute_idxs.get()));
auto dc_permute = gko::as<Mtx>(dmtx->column_permute(dcpermute_idxs.get()));

ASSERT_TRUE(dc_permute->is_sorted_by_column_index());
GKO_ASSERT_MTX_EQ_SPARSITY(c_permute, dc_permute);
GKO_ASSERT_MTX_NEAR(c_permute, dc_permute, 0);
}


TEST_F(Csr, IsInverseRowPermutable)
{
set_up_apply_data();

auto inverse_r_permute =
gko::share(mtx->inverse_row_permute(rpermute_idxs.get()));
gko::as<Mtx>(mtx->inverse_row_permute(rpermute_idxs.get()));
auto d_inverse_r_permute =
gko::share(dmtx->inverse_row_permute(drpermute_idxs.get()));
gko::as<Mtx>(dmtx->inverse_row_permute(drpermute_idxs.get()));

GKO_ASSERT_MTX_EQ_SPARSITY(gko::as<Mtx>(inverse_r_permute),
gko::as<Mtx>(d_inverse_r_permute));
GKO_ASSERT_MTX_NEAR(gko::as<Mtx>(inverse_r_permute),
gko::as<Mtx>(d_inverse_r_permute), 0);
GKO_ASSERT_MTX_EQ_SPARSITY(inverse_r_permute, d_inverse_r_permute);
GKO_ASSERT_MTX_NEAR(inverse_r_permute, d_inverse_r_permute, 0);
}


TEST_F(Csr, IsInverseColPermutable)
{
set_up_apply_data();

auto inverse_c_permute =
gko::share(mtx->inverse_column_permute(cpermute_idxs.get()));
gko::as<Mtx>(mtx->inverse_column_permute(cpermute_idxs.get()));
auto d_inverse_c_permute =
gko::share(dmtx->inverse_column_permute(dcpermute_idxs.get()));
gko::as<Mtx>(dmtx->inverse_column_permute(dcpermute_idxs.get()));

ASSERT_TRUE(gko::as<Mtx>(d_inverse_c_permute)->is_sorted_by_column_index());
GKO_ASSERT_MTX_EQ_SPARSITY(gko::as<Mtx>(inverse_c_permute),
gko::as<Mtx>(d_inverse_c_permute));
GKO_ASSERT_MTX_NEAR(gko::as<Mtx>(inverse_c_permute),
gko::as<Mtx>(d_inverse_c_permute), 0);
ASSERT_TRUE(d_inverse_c_permute->is_sorted_by_column_index());
GKO_ASSERT_MTX_EQ_SPARSITY(inverse_c_permute, d_inverse_c_permute);
GKO_ASSERT_MTX_NEAR(inverse_c_permute, d_inverse_c_permute, 0);
}


Expand Down
4 changes: 1 addition & 3 deletions reference/matrix/csr_kernels.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -694,7 +694,7 @@ void invert_permutation(std::shared_ptr<const DefaultExecutor> exec,
size_type size, const IndexType *permutation_indices,
IndexType *inv_permutation)
{
for (size_type i = 0; i < size; ++i) {
for (IndexType i = 0; i < static_cast<IndexType>(size); ++i) {
inv_permutation[permutation_indices[i]] = i;
}
}
Expand All @@ -715,7 +715,6 @@ void row_permute(std::shared_ptr<const ReferenceExecutor> exec,
auto rp_col_idxs = row_permuted->get_col_idxs();
auto rp_vals = row_permuted->get_values();
size_type num_rows = orig->get_size()[0];
size_type num_nnz = orig->get_num_stored_elements();

for (size_type row = 0; row < num_rows; ++row) {
auto src_row = perm[row];
Expand Down Expand Up @@ -751,7 +750,6 @@ void inverse_row_permute(std::shared_ptr<const ReferenceExecutor> exec,
auto rp_col_idxs = row_permuted->get_col_idxs();
auto rp_vals = row_permuted->get_values();
size_type num_rows = orig->get_size()[0];
size_type num_nnz = orig->get_num_stored_elements();

for (size_type row = 0; row < num_rows; ++row) {
auto src_row = row;
Expand Down
Loading

0 comments on commit c916a74

Please sign in to comment.