MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / CopyFromProto

Method CopyFromProto

tensorflow/compiler/xla/literal.cc:1864–1962  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1862} // namespace
1863
1864Status LiteralBase::Piece::CopyFromProto(const LiteralProto& proto) {
1865 // These conditions should have been checked in
1866 // MutableLiteralBase::CreateFromProto.
1867 TF_RET_CHECK(proto.has_shape());
1868 Shape shape(proto.shape());
1869 TF_RET_CHECK(LayoutUtil::HasLayout(shape));
1870 TF_RET_CHECK(ShapeUtil::Equal(shape, subshape()));
1871
1872 switch (subshape().element_type()) {
1873 case PRED:
1874 TF_RETURN_IF_ERROR(CopyFromRepeatedField(data<bool>(), proto.preds()));
1875 break;
1876 case S8: {
1877 auto s8_data = data<int8>();
1878 TF_RET_CHECK(proto.s8s().size() == s8_data.size());
1879 std::copy(proto.s8s().begin(), proto.s8s().end(), s8_data.begin());
1880 } break;
1881 case U8: {
1882 auto u8_data = data<uint8>();
1883 TF_RET_CHECK(proto.u8s().size() == u8_data.size());
1884 std::copy(proto.u8s().begin(), proto.u8s().end(), u8_data.begin());
1885 } break;
1886 case S32:
1887 TF_RETURN_IF_ERROR(CopyFromRepeatedField(data<int32>(), proto.s32s()));
1888 break;
1889 case S64:
1890 TF_RETURN_IF_ERROR(CopyFromRepeatedField(data<int64>(), proto.s64s()));
1891 break;
1892 case U32:
1893 TF_RETURN_IF_ERROR(CopyFromRepeatedField(data<uint32>(), proto.u32s()));
1894 break;
1895 case U64:
1896 TF_RETURN_IF_ERROR(CopyFromRepeatedField(data<uint64>(), proto.u64s()));
1897 break;
1898 case S16: {
1899 const string& s(proto.s16s());
1900 TF_RET_CHECK(data<int16_t>().size() * sizeof(int16_t) == s.size());
1901 memcpy(untyped_data(), s.data(), s.size());
1902 if (!kLittleEndian) {
1903 ConvertEndianShort(reinterpret_cast<char*>(untyped_data()), s.size());
1904 }
1905 } break;
1906 case U16: {
1907 const string& s(proto.u16s());
1908 TF_RET_CHECK(data<uint16_t>().size() * sizeof(uint16_t) == s.size());
1909 memcpy(untyped_data(), s.data(), s.size());
1910 if (!kLittleEndian) {
1911 ConvertEndianShort(reinterpret_cast<char*>(untyped_data()), s.size());
1912 }
1913 } break;
1914 case F16: {
1915 const string& s(proto.f16s());
1916 TF_RET_CHECK(data<half>().size() * sizeof(half) == s.size());
1917 memcpy(untyped_data(), s.data(), s.size());
1918 if (!kLittleEndian) {
1919 ConvertEndianShort(reinterpret_cast<char*>(untyped_data()), s.size());
1920 }
1921 } break;

Callers 1

CreateFromProtoMethod · 0.80

Calls 12

CopyFromRepeatedFieldFunction · 0.85
ConvertEndianShortFunction · 0.85
InvalidArgumentFunction · 0.85
has_shapeMethod · 0.80
EqualClass · 0.70
copyFunction · 0.50
shapeMethod · 0.45
element_typeMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected