fix compiling error after merge latest master
This commit is contained in:
parent
8b677d1b2f
commit
38f88d5fb1
2 changed files with 15 additions and 30 deletions
|
@ -321,9 +321,7 @@ static bool ggml_qnn_can_handle_op(ggml_backend_qnn_context * ctx,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ggml_qnn_compute_forward(ggml_backend_qnn_context * ctx,
|
bool ggml_qnn_compute_forward(ggml_backend_qnn_context * ctx, struct ggml_tensor * tensor) {
|
||||||
struct ggml_compute_params * params,
|
|
||||||
struct ggml_tensor * tensor) {
|
|
||||||
auto func = qnn::ggml_qnn_op_array()[tensor->op];
|
auto func = qnn::ggml_qnn_op_array()[tensor->op];
|
||||||
if (!func) {
|
if (!func) {
|
||||||
QNN_LOG_WARN("unsupported op %d", tensor->op);
|
QNN_LOG_WARN("unsupported op %d", tensor->op);
|
||||||
|
@ -515,13 +513,6 @@ GGML_CALL static size_t ggml_backend_qnn_buffer_type_get_max_size(ggml_backend_b
|
||||||
return (96 * 1024 * 1024);
|
return (96 * 1024 * 1024);
|
||||||
}
|
}
|
||||||
|
|
||||||
GGML_CALL static bool ggml_backend_qnn_buffer_type_supports_backend(
|
|
||||||
ggml_backend_buffer_type_t buft, ggml_backend_t backend) {
|
|
||||||
GGML_UNUSED(buft);
|
|
||||||
|
|
||||||
return ggml_backend_is_qnn(backend) || ggml_backend_is_cpu(backend);
|
|
||||||
}
|
|
||||||
|
|
||||||
GGML_CALL static bool ggml_backend_qnn_buffer_is_host(ggml_backend_buffer_type_t buft) {
|
GGML_CALL static bool ggml_backend_qnn_buffer_is_host(ggml_backend_buffer_type_t buft) {
|
||||||
GGML_UNUSED(buft);
|
GGML_UNUSED(buft);
|
||||||
return true;
|
return true;
|
||||||
|
@ -574,9 +565,6 @@ GGML_CALL static ggml_status ggml_backend_qnn_graph_compute(ggml_backend_t backe
|
||||||
ggml_backend_qnn_context * ctx = (ggml_backend_qnn_context *) backend->context;
|
ggml_backend_qnn_context * ctx = (ggml_backend_qnn_context *) backend->context;
|
||||||
GGML_UNUSED(ctx);
|
GGML_UNUSED(ctx);
|
||||||
|
|
||||||
ggml_compute_params params = {};
|
|
||||||
params.type = GGML_TASK_TYPE_COMPUTE;
|
|
||||||
params.ith = 0;
|
|
||||||
for (int i = 0; i < cgraph->n_nodes; i++) {
|
for (int i = 0; i < cgraph->n_nodes; i++) {
|
||||||
ggml_tensor * node = cgraph->nodes[i];
|
ggml_tensor * node = cgraph->nodes[i];
|
||||||
if (ggml_is_empty(node) || node->op == GGML_OP_RESHAPE ||
|
if (ggml_is_empty(node) || node->op == GGML_OP_RESHAPE ||
|
||||||
|
@ -584,7 +572,7 @@ GGML_CALL static ggml_status ggml_backend_qnn_graph_compute(ggml_backend_t backe
|
||||||
node->op == GGML_OP_PERMUTE || node->op == GGML_OP_NONE) {
|
node->op == GGML_OP_PERMUTE || node->op == GGML_OP_NONE) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
bool ok = ggml_qnn_compute_forward(ctx, ¶ms, node);
|
bool ok = ggml_qnn_compute_forward(ctx, node);
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
QNN_LOG_DEBUG("error: op not supported %s (%s)\n", node->name, ggml_op_name(node->op));
|
QNN_LOG_DEBUG("error: op not supported %s (%s)\n", node->name, ggml_op_name(node->op));
|
||||||
}
|
}
|
||||||
|
@ -616,9 +604,11 @@ static ggml_backend_i ggml_backend_qnn_interface = {
|
||||||
/* .synchronize = */ nullptr,
|
/* .synchronize = */ nullptr,
|
||||||
/* .graph_plan_create = */ nullptr,
|
/* .graph_plan_create = */ nullptr,
|
||||||
/* .graph_plan_free = */ nullptr,
|
/* .graph_plan_free = */ nullptr,
|
||||||
|
/* .graph_plan_update = */ nullptr,
|
||||||
/* .graph_plan_compute = */ nullptr,
|
/* .graph_plan_compute = */ nullptr,
|
||||||
/* .graph_compute = */ ggml_backend_qnn_graph_compute,
|
/* .graph_compute = */ ggml_backend_qnn_graph_compute,
|
||||||
/* .supports_op = */ ggml_backend_qnn_supports_op,
|
/* .supports_op = */ ggml_backend_qnn_supports_op,
|
||||||
|
/* .supports_buft = */ nullptr,
|
||||||
/* .offload_op = */ ggml_backend_qnn_offload_op,
|
/* .offload_op = */ ggml_backend_qnn_offload_op,
|
||||||
/* .event_new = */ nullptr,
|
/* .event_new = */ nullptr,
|
||||||
/* .event_free = */ nullptr,
|
/* .event_free = */ nullptr,
|
||||||
|
@ -702,10 +692,9 @@ ggml_backend_buffer_type_t ggml_backend_qnn_buffer_type(size_t device) {
|
||||||
/* .get_alignment = */ ggml_backend_qnn_buffer_type_get_alignment,
|
/* .get_alignment = */ ggml_backend_qnn_buffer_type_get_alignment,
|
||||||
/* .get_max_size = */ ggml_backend_qnn_buffer_type_get_max_size,
|
/* .get_max_size = */ ggml_backend_qnn_buffer_type_get_max_size,
|
||||||
/* .get_alloc_size = */ nullptr, // defaults to ggml_nbytes
|
/* .get_alloc_size = */ nullptr, // defaults to ggml_nbytes
|
||||||
/* .supports_backend = */ ggml_backend_qnn_buffer_type_supports_backend,
|
|
||||||
/* .is_host = */ ggml_backend_qnn_buffer_is_host
|
/* .is_host = */ ggml_backend_qnn_buffer_is_host
|
||||||
},
|
},
|
||||||
/* .context = */ & context,
|
/* .context = */ &context,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
ggml_backend_qnn_buffer_type_initialized = true;
|
ggml_backend_qnn_buffer_type_initialized = true;
|
||||||
|
|
|
@ -8,21 +8,17 @@
|
||||||
|
|
||||||
static bool qnn_is_valid_params(ggml_backend_qnn_context* ctx, const ggml_tensor* src0,
|
static bool qnn_is_valid_params(ggml_backend_qnn_context* ctx, const ggml_tensor* src0,
|
||||||
const ggml_tensor* src1, ggml_tensor* dst) {
|
const ggml_tensor* src1, ggml_tensor* dst) {
|
||||||
if ((nullptr == ctx) || (nullptr == src0) || (nullptr == src1) || (nullptr == dst)) {
|
if (!ctx || !src0 || !src1 || !dst) {
|
||||||
QNN_LOG_WARN("invalid params\n");
|
QNN_LOG_WARN("invalid params\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
qnn::qnn_instance* instance = nullptr;
|
auto* instance = ctx->instance;
|
||||||
Qnn_Tensor_t* tensor_0 = nullptr;
|
auto* tensor0 = src0->extra;
|
||||||
Qnn_Tensor_t* tensor_1 = nullptr;
|
auto* tensor1 = src1->extra;
|
||||||
Qnn_Tensor_t* tensor_2 = nullptr;
|
auto* tensor2 = dst->extra;
|
||||||
tensor_0 = (Qnn_Tensor_t*)src0->extra;
|
if (!instance || !tensor0 || !tensor1 || !tensor2) {
|
||||||
tensor_1 = (Qnn_Tensor_t*)src1->extra;
|
QNN_LOG_WARN("invalid tensors\n");
|
||||||
tensor_2 = (Qnn_Tensor_t*)dst->extra;
|
|
||||||
instance = ctx->instance;
|
|
||||||
if ((nullptr == instance) || (nullptr == tensor_0) || (nullptr == tensor_1) || (nullptr == tensor_2)) {
|
|
||||||
QNN_LOG_WARN("invalid params\n");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +56,7 @@ static void ggml_qnn_add(ggml_backend_qnn_context* ctx, const ggml_tensor* src0,
|
||||||
qnn::qnn_perf perf("ggml_qnn_add");
|
qnn::qnn_perf perf("ggml_qnn_add");
|
||||||
perf.start();
|
perf.start();
|
||||||
|
|
||||||
std::string map_entry = std::string(ggml_op_name(ggmlop));
|
std::string map_entry(ggml_op_name(ggmlop));
|
||||||
if (instance->_qnn_graph_map.find(map_entry) !=
|
if (instance->_qnn_graph_map.find(map_entry) !=
|
||||||
instance->_qnn_graph_map.end()) {
|
instance->_qnn_graph_map.end()) {
|
||||||
graph_initialized = true;
|
graph_initialized = true;
|
||||||
|
@ -141,8 +137,8 @@ static void ggml_qnn_add(ggml_backend_qnn_context* ctx, const ggml_tensor* src0,
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
Qnn_Tensor_t tensor_inputs[] = { *tensor_input0.get_qnn_tensor(), *tensor_input1.get_qnn_tensor() };
|
Qnn_Tensor_t tensor_inputs[] = { *tensor_input0.get_qnn_tensor(), *tensor_input1.get_qnn_tensor() };
|
||||||
Qnn_Tensor_t tensor_outputs[] = { *tensor_output.get_qnn_tensor() };
|
Qnn_Tensor_t tensor_outputs[] = { *tensor_output.get_qnn_tensor() };
|
||||||
Qnn_OpConfig_t op_config = {
|
Qnn_OpConfig_t op_config = {
|
||||||
(Qnn_OpConfigVersion_t)1,
|
(Qnn_OpConfigVersion_t)1,
|
||||||
.v1 = {"ggml_op_add",
|
.v1 = {"ggml_op_add",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue