MCPcopy Create free account
hub / github.com/apache/arrow / WriteTensorMessage

Function WriteTensorMessage

cpp/src/arrow/ipc/metadata_internal.cc:1330–1362  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1328}
1329
1330Result<std::shared_ptr<Buffer>> WriteTensorMessage(const Tensor& tensor,
1331 int64_t buffer_start_offset,
1332 const IpcWriteOptions& options) {
1333 using TensorDimOffset = flatbuffers::Offset<flatbuf::TensorDim>;
1334 using TensorOffset = flatbuffers::Offset<flatbuf::Tensor>;
1335
1336 FBB fbb;
1337 const int elem_size = tensor.type()->byte_width();
1338
1339 flatbuf::Type fb_type_type;
1340 Offset fb_type;
1341 RETURN_NOT_OK(TensorTypeToFlatbuffer(fbb, *tensor.type(), &fb_type_type, &fb_type));
1342
1343 std::vector<TensorDimOffset> dims;
1344 for (int i = 0; i < tensor.ndim(); ++i) {
1345 FBString name = fbb.CreateString(tensor.dim_name(i));
1346 dims.push_back(flatbuf::CreateTensorDim(fbb, tensor.shape()[i], name));
1347 }
1348
1349 auto fb_shape = fbb.CreateVector(dims.data(), dims.size());
1350
1351 flatbuffers::Offset<flatbuffers::Vector<int64_t>> fb_strides;
1352 fb_strides = fbb.CreateVector(tensor.strides().data(), tensor.strides().size());
1353 int64_t body_length = tensor.size() * elem_size;
1354 flatbuf::Buffer buffer(buffer_start_offset, body_length);
1355
1356 TensorOffset fb_tensor =
1357 flatbuf::CreateTensor(fbb, fb_type_type, fb_type, fb_shape, fb_strides, &buffer);
1358
1359 return WriteFBMessage(fbb, flatbuf::MessageHeader::MessageHeader_Tensor,
1360 fb_tensor.Union(), body_length, options.metadata_version,
1361 /*custom_metadata=*/nullptr, options.memory_pool);
1362}
1363
1364Result<std::shared_ptr<Buffer>> WriteSparseTensorMessage(
1365 const SparseTensor& sparse_tensor, int64_t body_length,

Callers 2

WriteTensorHeaderFunction · 0.85
GetTensorMessageFunction · 0.85

Calls 11

TensorTypeToFlatbufferFunction · 0.85
CreateTensorDimFunction · 0.85
CreateTensorFunction · 0.85
WriteFBMessageFunction · 0.85
push_backMethod · 0.80
stridesMethod · 0.80
byte_widthMethod · 0.45
typeMethod · 0.45
shapeMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected