| 518 | |
| 519 | template<typename T> |
| 520 | void writeDeviceDataArray(Array<T> &arr, const void *const data, |
| 521 | const size_t bytes) { |
| 522 | if (!arr.isOwner()) { arr = copyArray<T>(arr); } |
| 523 | |
| 524 | Buffer &buf = *arr.get(); |
| 525 | |
| 526 | clRetainMemObject(reinterpret_cast<cl_mem>(const_cast<void *>(data))); |
| 527 | Buffer data_buf = |
| 528 | Buffer(reinterpret_cast<cl_mem>(const_cast<void *>(data))); |
| 529 | |
| 530 | getQueue().enqueueCopyBuffer(data_buf, buf, 0, |
| 531 | static_cast<size_t>(arr.getOffset()), bytes); |
| 532 | } |
| 533 | |
| 534 | template<typename T> |
| 535 | void Array<T>::setDataDims(const dim4 &new_dims) { |