diff options
Diffstat (limited to 'src/routines/level3/xhemm.cc')
-rw-r--r-- | src/routines/level3/xhemm.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/routines/level3/xhemm.cc b/src/routines/level3/xhemm.cc index bcc60dee..c0a4306a 100644 --- a/src/routines/level3/xhemm.cc +++ b/src/routines/level3/xhemm.cc @@ -21,7 +21,7 @@ namespace clblast { // Constructor: forwards to base class constructor template <typename T> -Xhemm<T>::Xhemm(Queue &queue, Event &event, const std::string &name): +Xhemm<T>::Xhemm(Queue &queue, EventPointer event, const std::string &name): Xgemm<T>(queue, event, name) { } @@ -79,9 +79,13 @@ StatusCode Xhemm<T>::DoHemm(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, |