ggml_backend_buffer_t buffer = tensor->buffer;
ggml_backend_rpc_buffer_context * ctx = (ggml_backend_rpc_buffer_context *)buffer->context;
result.buffer = ctx != nullptr ? ctx->remote_ptr : 0;
+ result.data = reinterpret_cast<uint64_t>(tensor->data);
} else {
result.buffer = 0;
+ result.data = 0;
}
for (uint32_t i = 0; i < GGML_MAX_DIMS; i++) {
result.ne[i] = tensor->ne[i];
}
result.view_src = reinterpret_cast<uint64_t>(tensor->view_src);
result.view_offs = tensor->view_offs;
- result.data = reinterpret_cast<uint64_t>(tensor->data);
// Avoid sending uninitialized data over the wire
memset(result.name, 0, sizeof(result.name));
const rpc_tensor * tensor = it_ptr->second;
struct ggml_tensor * result = deserialize_tensor(ctx, tensor);
- if (result == nullptr || result->buffer == nullptr) {
- GGML_LOG_ERROR("[%s] invalid tensor: null %s (id=%" PRIu64 ")\n",
- __func__, result == nullptr ? "tensor" : "buffer", id);
+ if (result == nullptr) {
+ return nullptr;
+ }
+ if (result->buffer == nullptr && result->data != nullptr) {
+ GGML_LOG_ERROR("[%s] invalid data ptr", __func__);
return nullptr;
}
tensor_map[id] = result;