| 27 | } |
| 28 | |
| 29 | uint64_t StarMessage::SerializeTensorMessage( |
| 30 | const Tensor& in, const TensorProto& inp, |
| 31 | bool is_dead, StarBuf* message_buf, |
| 32 | StarBuf* tensor_buf) { |
| 33 | StarMessage sm; |
| 34 | sm.tensor_shape_ = in.shape(); |
| 35 | sm.data_type_ = in.dtype(); |
| 36 | sm.is_dead_ = is_dead; |
| 37 | |
| 38 | bool can_memcpy = DataTypeCanUseMemcpy(sm.data_type_); |
| 39 | |
| 40 | if (can_memcpy) { |
| 41 | sm.tensor_bytes_ = in.TotalBytes(); |
| 42 | |
| 43 | tensor_buf->len_ = sm.tensor_bytes_; |
| 44 | tensor_buf->data_ = const_cast<char*>(in.tensor_data().data()); |
| 45 | tensor_buf->owned_ = false; |
| 46 | } else { |
| 47 | sm.tensor_bytes_ = inp.ByteSize(); |
| 48 | |
| 49 | tensor_buf->len_ = sm.tensor_bytes_; |
| 50 | tensor_buf->data_ = new char[tensor_buf->len_](); |
| 51 | inp.SerializeToArray(tensor_buf->data_, tensor_buf->len_); |
| 52 | } |
| 53 | |
| 54 | message_buf->len_ = StarMessage::kMessageTotalBytes; |
| 55 | message_buf->data_ = new char[message_buf->len_]; |
| 56 | StarMessage::SerializeMessage(sm, message_buf->data_); |
| 57 | |
| 58 | return StarMessage::kMessageTotalBytes + sm.tensor_bytes_; |
| 59 | } |
| 60 | |
| 61 | } // namespace tensorflow |
nothing calls this directly
no test coverage detected