summaryrefslogtreecommitdiff
path: root/src/routines/level2
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2017-10-27 22:01:15 +0200
committerCedric Nugteren <web@cedricnugteren.nl>2017-10-27 22:01:15 +0200
commit44f7fa628a42d1e928c7c1c3a1bfca5de37de276 (patch)
treefc7119a2810d68d08e3809ee92d9823f3212bf6a /src/routines/level2
parent8579b2b494cff3ec2c5b33ba3cbbc3500fab3fc4 (diff)
Added GEMV synchronisation for the TRSV routine: similar bug as in TRSM
Diffstat (limited to 'src/routines/level2')
-rw-r--r--src/routines/level2/xtrsv.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/routines/level2/xtrsv.cpp b/src/routines/level2/xtrsv.cpp
index d5d009ff..36c33a76 100644
--- a/src/routines/level2/xtrsv.cpp
+++ b/src/routines/level2/xtrsv.cpp
@@ -131,10 +131,13 @@ void Xtrsv<T>::DoTrsv(const Layout layout, const Triangle triangle,
if (i > 0) {
const auto gemv_m = (a_transpose == Transpose::kNo) ? block_size : i;
const auto gemv_n = (a_transpose == Transpose::kNo) ? i : block_size;
- DoGemv(layout, a_transpose, gemv_m, gemv_n, ConstantOne<T>(),
- a_buffer, a_offset + extra_offset_a, a_ld,
- x_buffer, x_offset + extra_offset_x, x_inc, ConstantOne<T>(),
- x_buffer, x_offset + extra_offset_b, x_inc );
+ auto gemv_event = Event();
+ auto gemv = Xgemv<T>(queue_, gemv_event.pointer());
+ gemv.DoGemv(layout, a_transpose, gemv_m, gemv_n, ConstantOne<T>(),
+ a_buffer, a_offset + extra_offset_a, a_ld,
+ x_buffer, x_offset + extra_offset_x, x_inc, ConstantOne<T>(),
+ x_buffer, x_offset + extra_offset_b, x_inc);
+ gemv_event.WaitForCompletion();
}
// Runs the triangular substitution for the block size