| 95 | } |
| 96 | |
| 97 | OclKernelCommand::OclKernelCommand(cl_kernel kernel, cl_uint work_dim, |
| 98 | const size_t *global_work_offset, |
| 99 | const size_t *global_work_size, |
| 100 | const size_t *local_work_size, |
| 101 | cl_uint num_events_in_wait_list, |
| 102 | const cl_event *event_wait_list, |
| 103 | cl_event *event, |
| 104 | std::shared_ptr<std::list<KernelArgument>> args) |
| 105 | : OclCommand(num_events_in_wait_list, event_wait_list, event) |
| 106 | , kernel_(kernel) , work_dim_(work_dim), args_(args) |
| 107 | { |
| 108 | if (work_dim_ <= 0) return; |
| 109 | |
| 110 | const size_t buf_size = work_dim_ * sizeof(size_t); |
| 111 | global_work_size_ = (size_t *)malloc(buf_size); |
| 112 | XASSERT(global_work_size_ != nullptr, "failed to malloc global_work_size_"); |
| 113 | XASSERT(global_work_size != nullptr, "global_work_size is nullptr"); |
| 114 | memcpy(global_work_size_, global_work_size, buf_size); |
| 115 | |
| 116 | // local_work_size is optional and can be nullptr |
| 117 | if (local_work_size != nullptr) { |
| 118 | local_work_size_ = (size_t *)malloc(buf_size); |
| 119 | XASSERT(local_work_size_ != nullptr, "failed to malloc local_work_size_"); |
| 120 | memcpy(local_work_size_, local_work_size, buf_size); |
| 121 | } |
| 122 | |
| 123 | // global_work_offset is optional and can be nullptr |
| 124 | if (global_work_offset != nullptr) { |
| 125 | global_work_offset_ = (size_t *)malloc(buf_size); |
| 126 | XASSERT(global_work_offset_ != nullptr, "failed to malloc global_work_offset_"); |
| 127 | memcpy(global_work_offset_, global_work_offset, buf_size); |
| 128 | } |
| 129 | } |
| 130 | |
| 131 | OclKernelCommand::~OclKernelCommand() |
| 132 | { |
nothing calls this directly
no outgoing calls
no test coverage detected