Skip to content

Commit 6a73634

Browse files
committed
use
1 parent 995969d commit 6a73634

File tree

1 file changed

+19
-27
lines changed

1 file changed

+19
-27
lines changed

core/solver/pipe_cg.cpp

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "core/distributed/helpers.hpp"
1919
#include "core/solver/pipe_cg_kernels.hpp"
2020
#include "core/solver/solver_boilerplate.hpp"
21+
#include "ginkgo/core/base/range.hpp"
2122

2223

2324
namespace gko {
@@ -112,32 +113,25 @@ void PipeCg<ValueType>::apply_dense_impl(const VectorType* dense_b,
112113

113114
LocalVector* rw = this->template create_workspace_op<LocalVector>(
114115
GKO_SOLVER_TRAITS::rw, conjoined_size);
115-
auto r_unique = LocalVector::create(
116-
exec, original_size,
117-
make_array_view(exec, original_size[0] * b_stride * 2,
118-
rw->get_values()),
119-
b_stride * 2);
116+
auto r_unique =
117+
rw->create_submatrix(local_span{0, original_size[0]},
118+
local_span{0, original_size[1]}, original_size);
120119
auto* r = r_unique.get();
121-
auto w_unique = LocalVector::create(
122-
exec, original_size,
123-
make_array_view(exec, original_size[0] * b_stride * 2,
124-
rw->get_values() + b_stride),
125-
b_stride * 2);
120+
auto w_unique = rw->create_submatrix(
121+
local_span{0, original_size[0]},
122+
local_span{b_stride, b_stride + original_size[1]}, original_size);
126123
auto* w = w_unique.get();
127124

128125
// z now consists of two identical repeating parts: z1 and z2, again, for
129126
// the same reason
130127
GKO_SOLVER_VECTOR(z, rw);
131-
auto z1_unique = LocalVector::create(
132-
exec, original_size,
133-
make_array_view(exec, original_size[0] * b_stride * 2, z->get_values()),
134-
b_stride * 2);
128+
auto z1_unique =
129+
z->create_submatrix(local_span{0, original_size[0]},
130+
local_span{0, original_size[1]}, original_size);
135131
auto* z1 = z1_unique.get();
136-
auto z2_unique = LocalVector::create(
137-
exec, original_size,
138-
make_array_view(exec, original_size[0] * b_stride * 2,
139-
z->get_values() + b_stride),
140-
b_stride * 2);
132+
auto z2_unique = z->create_submatrix(
133+
local_span{0, original_size[0]},
134+
local_span{b_stride, b_stride + original_size[1]}, original_size);
141135
auto* z2 = z2_unique.get();
142136

143137
GKO_SOLVER_VECTOR(p, dense_b);
@@ -149,15 +143,13 @@ void PipeCg<ValueType>::apply_dense_impl(const VectorType* dense_b,
149143

150144
// rho and delta become combined as well
151145
GKO_SOLVER_SCALAR(rhodelta, rw);
152-
auto rho_unique = LocalVector::create(
153-
exec, dim<2>{1, original_size[1]},
154-
make_array_view(exec, b_stride, rhodelta->get_values()), b_stride * 2);
146+
auto rho_unique = rhodelta->create_submatrix(
147+
local_span{0, 1}, local_span{0, original_size[1]},
148+
dim<2>{1, original_size[1]});
155149
auto* rho = rho_unique.get();
156-
157-
auto delta_unique = LocalVector::create(
158-
exec, dim<2>{1, original_size[1]},
159-
make_array_view(exec, b_stride, rhodelta->get_values() + b_stride),
160-
b_stride * 2);
150+
auto delta_unique = rhodelta->create_submatrix(
151+
local_span{0, 1}, local_span{b_stride, b_stride + original_size[1]},
152+
dim<2>{1, original_size[1]});
161153
auto* delta = delta_unique.get();
162154

163155
GKO_SOLVER_SCALAR(beta, dense_b);

0 commit comments

Comments
 (0)