Skip to content

Commit

Permalink
add weird barrier in idr and fix precision
Browse files Browse the repository at this point in the history
  • Loading branch information
yhmtsai committed Jul 28, 2021
1 parent 717f00f commit 5816d61
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 10 deletions.
7 changes: 4 additions & 3 deletions dpcpp/solver/idr_kernels.dp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,8 @@ void orthonormalize_subspace_vectors_kernel(
*/
dot += values[row * stride + j] * conj(values[i * stride + j]);
}

// TODO: check with intel why we need this here.
item_ct1.barrier();
reduction_helper[tidx] = dot;

/*
Expand Down Expand Up @@ -595,8 +596,8 @@ void compute_omega_kernel(
if (!stop_status[global_id].has_stopped()) {
auto thr = omega[global_id];
omega[global_id] /= tht[global_id];
auto absrho = std::abs(thr / (std::sqrt((float)(real(tht[global_id]))) *
residual_norm[global_id]));
auto absrho = std::abs(
thr / (std::sqrt(real(tht[global_id])) * residual_norm[global_id]));

if (absrho < kappa) {
omega[global_id] *= kappa / absrho;
Expand Down
14 changes: 7 additions & 7 deletions dpcpp/test/solver/idr_kernels.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -273,11 +273,11 @@ TEST_F(Idr, IdrStep3IsEquivalentToRef)
dpcpp, nrhs, k, d_p.get(), d_g.get(), d_v.get(), d_u.get(), d_m.get(),
d_f.get(), d_alpha.get(), d_r.get(), d_x.get(), d_stop_status.get());

GKO_ASSERT_MTX_NEAR(g, d_g, rr<value_type>::value);
GKO_ASSERT_MTX_NEAR(g, d_g, 2 * rr<value_type>::value);
GKO_ASSERT_MTX_NEAR(v, d_v, rr<value_type>::value);
GKO_ASSERT_MTX_NEAR(u, d_u, rr<value_type>::value);
GKO_ASSERT_MTX_NEAR(m, d_m, rr<value_type>::value);
GKO_ASSERT_MTX_NEAR(f, d_f, rr<value_type>::value);
GKO_ASSERT_MTX_NEAR(f, d_f, 2 * rr<value_type>::value);
GKO_ASSERT_MTX_NEAR(r, d_r, rr<value_type>::value);
GKO_ASSERT_MTX_NEAR(x, d_x, rr<value_type>::value);
}
Expand All @@ -287,7 +287,7 @@ TEST_F(Idr, IdrComputeOmegaIsEquivalentToRef)
{
initialize_data();

double kappa = 0.7;
value_type kappa = 0.7;
gko::kernels::reference::idr::compute_omega(ref, nrhs, kappa, tht.get(),
residual_norm.get(),
omega.get(), stop_status.get());
Expand Down Expand Up @@ -350,8 +350,8 @@ TEST_F(Idr, IdrIterationWithComplexSubspaceOneRHSIsEquivalentToRef)
ref_solver->apply(b.get(), x.get());
dpcpp_solver->apply(d_b.get(), d_x.get());

GKO_ASSERT_MTX_NEAR(d_b, b, rr<value_type>::value * 10);
GKO_ASSERT_MTX_NEAR(d_x, x, rr<value_type>::value * 10);
GKO_ASSERT_MTX_NEAR(d_b, b, rr<value_type>::value * 100);
GKO_ASSERT_MTX_NEAR(d_x, x, rr<value_type>::value * 100);
}


Expand All @@ -371,8 +371,8 @@ TEST_F(Idr, IdrIterationMultipleRHSIsEquivalentToRef)
ref_solver->apply(b.get(), x.get());
dpcpp_solver->apply(d_b.get(), d_x.get());

GKO_ASSERT_MTX_NEAR(d_b, b, 1e-12);
GKO_ASSERT_MTX_NEAR(d_x, x, 1e-12);
GKO_ASSERT_MTX_NEAR(d_b, b, rr<value_type>::value * 500);
GKO_ASSERT_MTX_NEAR(d_x, x, rr<value_type>::value * 500);
}


Expand Down

0 comments on commit 5816d61

Please sign in to comment.