summaryrefslogtreecommitdiff
path: root/src/clpp11.hpp
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2016-07-26 20:53:31 +0200
committerCedric Nugteren <web@cedricnugteren.nl>2016-07-26 20:53:31 +0200
commit5053f6ebc6107ddea4258e5534671a2021de3f6e (patch)
treec37e040d7224fdb95f656c6807a7c0910a313509 /src/clpp11.hpp
parent798d32edad091b6faaa1627a7514868fc28c5fd9 (diff)
parent1ec21421d7dedd715badbc7cf8f555d3b76a022b (diff)
Merge branch 'development' into gemm_direct
Diffstat (limited to 'src/clpp11.hpp')
-rw-r--r--src/clpp11.hpp19
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: