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

Method ParseBatchRequestFromBuf

serving/processor/serving/message_coding.cc:77–124  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

75}
76
77Status ProtoBufParser::ParseBatchRequestFromBuf(
78 const void* input_data[], int* input_size,
79 BatchCall& call, const SignatureInfo* signature_info) {
80 auto size = sizeof(input_data) / sizeof(void*);
81 call.call_num = size;
82 auto do_work = [&call, input_data, input_size,
83 signature_info](size_t begin, size_t end) {
84 for (size_t i = begin; i < end; ++i) {
85 eas::PredictRequest request;
86 request.ParseFromArray(input_data[i], input_size[i]);
87
88 for (auto& input : request.inputs()) {
89 if (signature_info->input_key_idx.find(input.first) ==
90 signature_info->input_key_idx.end()) {
91 LOG(FATAL) << "Request contain invalid input key : " << input.first;
92 }
93 int idx = signature_info->input_key_idx.at(input.first);
94 auto pb_to_tensor = util::Proto2Tensor(input.first, input.second);
95 if (!pb_to_tensor.status.ok()) {
96 return pb_to_tensor.status;
97 }
98 call.request[i].inputs.emplace_back(
99 signature_info->input_value_name[idx],
100 std::move(pb_to_tensor.tensor));
101 }
102
103 if (i == 0) {
104 if (request.output_filter().size() > 0) {
105 call.request[0].output_tensor_names.reserve(request.output_filter().size());
106 for (auto key : request.output_filter()) {
107 if (signature_info->output_key_idx.find(key) ==
108 signature_info->output_key_idx.end()) {
109 LOG(FATAL) << "Request contain invalid output filter: " << key;
110 }
111 call.request[0].output_tensor_names.emplace_back(
112 signature_info->output_value_name[signature_info->output_key_idx.at(key)]);
113 }
114 } else {
115 call.request[0].output_tensor_names =
116 signature_info->output_value_name;
117 }
118 }
119 }
120 };
121 thread_pool_->ParallelFor(size, 10000, do_work);
122
123 return call.BatchRequest();
124}
125
126Status ProtoBufParser::ParseBatchResponseToBuf(
127 BatchCall& call, void* output_data[],

Callers 1

BatchPredictMethod · 0.45

Calls 11

ParallelForMethod · 0.80
BatchRequestMethod · 0.80
Proto2TensorFunction · 0.70
inputsMethod · 0.45
findMethod · 0.45
endMethod · 0.45
atMethod · 0.45
okMethod · 0.45
emplace_backMethod · 0.45
sizeMethod · 0.45
reserveMethod · 0.45

Tested by

no test coverage detected