| 898 | |
| 899 | template <typename T> |
| 900 | DeviceMemory<T> StreamExecutor::GetSubBuffer(DeviceMemory<T> *parent, |
| 901 | uint64 element_offset, |
| 902 | uint64 element_count) { |
| 903 | if (element_offset + element_count > parent->ElementCount()) { |
| 904 | LOG(ERROR) << "requested sub-buffer allocation (offset + size) is greater " |
| 905 | << "than parent allocation size: (" << element_offset << " + " |
| 906 | << element_count << ") vs. (" << parent->ElementCount() << ")"; |
| 907 | return DeviceMemory<T>{}; |
| 908 | } |
| 909 | |
| 910 | void *opaque = implementation_->GetSubBuffer( |
| 911 | parent, sizeof(T) * element_offset, sizeof(T) * element_count); |
| 912 | if (opaque == nullptr) { |
| 913 | return DeviceMemory<T>{}; |
| 914 | } |
| 915 | return DeviceMemory<T>(DeviceMemoryBase(opaque, sizeof(T) * element_count)); |
| 916 | } |
| 917 | |
| 918 | template <typename... Params, typename... Args> |
| 919 | inline Stream &Stream::ThenLaunch(ThreadDim thread_dims, BlockDim block_dims, |
nothing calls this directly
no test coverage detected