diff options
author | Cedric Nugteren <web@cedricnugteren.nl> | 2016-07-26 20:53:31 +0200 |
---|---|---|
committer | Cedric Nugteren <web@cedricnugteren.nl> | 2016-07-26 20:53:31 +0200 |
commit | 5053f6ebc6107ddea4258e5534671a2021de3f6e (patch) | |
tree | c37e040d7224fdb95f656c6807a7c0910a313509 /src/clpp11.hpp | |
parent | 798d32edad091b6faaa1627a7514868fc28c5fd9 (diff) | |
parent | 1ec21421d7dedd715badbc7cf8f555d3b76a022b (diff) |
Merge branch 'development' into gemm_direct
Diffstat (limited to 'src/clpp11.hpp')
-rw-r--r-- | src/clpp11.hpp | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/src/clpp11.hpp b/src/clpp11.hpp index af9d2ea4..d57223dd 100644 --- a/src/clpp11.hpp +++ b/src/clpp11.hpp @@ -109,7 +109,9 @@ class Event { // Accessor to the private data-member cl_event& operator()() { return *event_; } + const cl_event& operator()() const { return *event_; } cl_event* pointer() { return &(*event_); } + const cl_event* pointer() const { return &(*event_); } private: std::shared_ptr<cl_event> event_; }; @@ -686,30 +688,21 @@ class Kernel { // As above, but with an event waiting list void Launch(const Queue &queue, const std::vector<size_t> &global, const std::vector<size_t> &local, EventPointer event, - std::vector<Event>& waitForEvents) { - if (waitForEvents.size() == 0) { return Launch(queue, global, local, event); } - + const std::vector<Event> &waitForEvents) { // Builds a plain version of the events waiting list auto waitForEventsPlain = std::vector<cl_event>(); for (auto &waitEvent : waitForEvents) { - waitForEventsPlain.push_back(waitEvent()); + if (waitEvent()) { waitForEventsPlain.push_back(waitEvent()); } } // Launches the kernel while waiting for other events CheckError(clEnqueueNDRangeKernel(queue(), *kernel_, static_cast<cl_uint>(global.size()), - nullptr, global.data(), local.data(), + nullptr, global.data(), !local.empty() ? local.data() : nullptr, static_cast<cl_uint>(waitForEventsPlain.size()), - waitForEventsPlain.data(), + !waitForEventsPlain.empty() ? waitForEventsPlain.data() : nullptr, event)); } - // As above, but with the default local workgroup size - void Launch(const Queue &queue, const std::vector<size_t> &global, EventPointer event) { - CheckError(clEnqueueNDRangeKernel(queue(), *kernel_, static_cast<cl_uint>(global.size()), - nullptr, global.data(), nullptr, - 0, nullptr, event)); - } - // Accessor to the private data-member const cl_kernel& operator()() const { return *kernel_; } private: |