summaryrefslogtreecommitdiff
path: root/src/routines/level3/xsymm.cc
diff options
context:
space:
mode:
authorcnugteren <web@cedricnugteren.nl>2016-04-09 22:22:24 -0600
committercnugteren <web@cedricnugteren.nl>2016-04-09 22:22:24 -0600
commit1d3d38a2618c5663bf1549b08805137fd85f2efa (patch)
tree5de200346fc3d87c6e353d84744c59b2c703c16d /src/routines/level3/xsymm.cc
parentc2cfee76c4d8f7486d5b62b3e0a878867a32a070 (diff)
Events are now properly implemented using event waiting list and asking the user to wait for event completion
Diffstat (limited to 'src/routines/level3/xsymm.cc')
-rw-r--r--src/routines/level3/xsymm.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/routines/level3/xsymm.cc b/src/routines/level3/xsymm.cc
index 583d5c7d..914a326a 100644
--- a/src/routines/level3/xsymm.cc
+++ b/src/routines/level3/xsymm.cc
@@ -21,7 +21,7 @@ namespace clblast {
// Constructor: forwards to base class constructor
template <typename T>
-Xsymm<T>::Xsymm(Queue &queue, Event &event, const std::string &name):
+Xsymm<T>::Xsymm(Queue &queue, EventPointer event, const std::string &name):
Xgemm<T>(queue, event, name) {
}
@@ -79,9 +79,13 @@ StatusCode Xsymm<T>::DoSymm(const Layout layout, const Side side, const Triangle
auto global = std::vector<size_t>{Ceil(CeilDiv(k, db_["PAD_WPTX"]), db_["PAD_DIMX"]),
Ceil(CeilDiv(k, db_["PAD_WPTY"]), db_["PAD_DIMY"])};
auto local = std::vector<size_t>{db_["PAD_DIMX"], db_["PAD_DIMY"]};
- status = RunKernel(kernel, global, local);
+ auto kernelEvent = Event();
+ status = RunKernel(kernel, global, local, kernelEvent.pointer());
if (ErrorIn(status)) { return status; }
+ // Synchronize now: 'DoGemm' does not accept a list of events to wait for
+ kernelEvent.WaitForCompletion();
+
// Runs the regular Xgemm code with either "C := AB+C" or ...
if (side == Side::kLeft) {
status = DoGemm(layout, Transpose::kNo, Transpose::kNo,