fix build error

This commit is contained in:
Zijun Yu 2025-05-13 14:31:23 +08:00 committed by Mustafa Cavus
parent ffabe95e2a
commit 4c905b2b25
4 changed files with 40 additions and 78 deletions

View File

@ -14,37 +14,29 @@ extern "C" {
#define GGML_OPENVINO_MAX_DEVICES 16
// backend API
GGML_API ggml_backend_t ggml_backend_openvino_init(int device);
GGML_BACKEND_API ggml_backend_t ggml_backend_openvino_init(int device);
GGML_API bool ggml_backend_is_openvino(ggml_backend_t backend);
GGML_BACKEND_API bool ggml_backend_is_openvino(ggml_backend_t backend);
// device buffer
GGML_API ggml_backend_buffer_type_t
ggml_backend_openvino_buffer_type(int device);
GGML_BACKEND_API ggml_backend_buffer_type_t ggml_backend_openvino_buffer_type(int device);
// split tensor buffer that splits matrices by rows across multiple devices
GGML_API ggml_backend_buffer_type_t
ggml_backend_openvino_split_buffer_type(const float *tensor_split);
GGML_BACKEND_API ggml_backend_buffer_type_t ggml_backend_openvino_split_buffer_type(const float * tensor_split);
// pinned host buffer for use with the CPU backend for faster copies between CPU
// and GPU
GGML_API ggml_backend_buffer_type_t
ggml_backend_openvino_host_buffer_type(void);
GGML_BACKEND_API ggml_backend_buffer_type_t ggml_backend_openvino_host_buffer_type(void);
GGML_API int ggml_backend_openvino_get_device_count(void);
// GGML_API void ggml_backend_openvino_get_device_description(int device,
// char *description,
// size_t
// description_size);
// GGML_API void ggml_backend_openvino_get_device_memory(int device, size_t
// *free,
// size_t *total);
GGML_BACKEND_API int ggml_backend_openvino_get_device_count(void);
// GGML_BACKEND_API void ggml_backend_openvino_get_device_description(int device, char * description,
// size_t description_size);
// GGML_BACKEND_API void ggml_backend_openvino_get_device_memory(int device, size_t * free, size_t * total);
// GGML_API bool ggml_backend_openvino_register_host_buffer(void *buffer, size_t
// size); GGML_API void ggml_backend_openvino_unregister_host_buffer(void
// *buffer);
// GGML_BACKEND_API bool ggml_backend_openvino_register_host_buffer(void * buffer, size_t size);
// GGML_BACKEND_API void ggml_backend_openvino_unregister_host_buffer(void * buffer);
GGML_API ggml_backend_reg_t ggml_backend_openvino_reg(void);
GGML_BACKEND_API ggml_backend_reg_t ggml_backend_openvino_reg(void);
struct ggml_openvino_device_info {
int device_count;

View File

@ -1,42 +1,19 @@
find_package(OpenVINO REQUIRED)
list(APPEND GGML_EXTRA_LIBS_PRIVATE openvino::runtime)
# Set header and libs
file(GLOB GGML_HEADERS_OPENVINO "ggml-openvino/*.h")
list(APPEND GGML_HEADERS_OPENVINO "../include/ggml-openvino.h")
file(GLOB GGML_SOURCES_OPENVINO "ggml-openvino/*.cpp")
list(APPEND GGML_SOURCES_OPENVINO "ggml-openvino.cpp")
file(GLOB_RECURSE GGML_HEADERS_OPENVINO "*.h" "*.hpp")
file(GLOB_RECURSE GGML_SOURCES_OPENVINO "*.cpp")
list(APPEND GGML_CDEF_PUBLIC GGML_USE_OPENVINO)
ggml_add_backend_library(ggml-openvino
${GGML_SOURCES_OPENVINO}
${GGML_HEADERS_OPENVINO}
)
if (OPENVINO_DEVICE)
if (OPENVINO_DEVICE STREQUAL "GPU")
add_compile_definitions(GGML_OPENVINO_GPU)
elseif (OPENVINO_DEVICE STREQUAL "NPU")
add_compile_definitions(GGML_OPENVINO_NPU)
target_link_libraries(ggml-openvino PRIVATE openvino::runtime)
if (GGML_OPENVINO)
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64")
else()
message(FATAL_ERROR "OpenVINO: OpenVINO toolkit supports x86-64 and arm64 but not ${CMAKE_SYSTEM_PROCESSOR}")
endif()
endif()
if(NOT DEFINED GGML_OV_FRONTEND)
set(GGML_OV_FRONTEND OpenVINO_DIR)
endif()
add_definitions(-DGGML_OV_FRONTEND="${GGML_OV_FRONTEND}")
if (OpenVINO_DIR)
if (GGML_OPENVINO)
if (NOT UNIX)
set(GGML_OPENVINO OFF)
message(WARNING "OpenVINO: OpenVINO toolkit supports unix but not ${CMAKE_SYSTEM_NAME}. Turning off GGML_OPENVINO")
endif()
endif()
if (GGML_OPENVINO)
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64")
else()
set(GGML_OPENVINO OFF)
message(WARNING "OpenVINO: OpenVINO toolkit supports x86-64 and arm64 but not ${CMAKE_SYSTEM_PROCESSOR}. Turning off GGML_OPENVINO")
endif()
endif()
endif()

View File

@ -14,6 +14,7 @@
#include <openvino/core/node.hpp>
#include <openvino/core/type/float16.hpp>
#include <openvino/op/constant.hpp>
#include <openvino/op/parameter.hpp>
#include <openvino/runtime/tensor.hpp>
#include <ostream>
#include <set>
@ -278,8 +279,7 @@ void GgmlOvDecoder::dump_cgraph(const struct ggml_cgraph* cgraph) {
<< std::setw(5) << node->ne[2] << ", "
<< std::setw(5) << node->ne[3] << "] "
<< std::left << std::setw(20) << ggml_op_name(node->op) << std::right << " "
<< std::left << std::setw(44) << node->name << std::right
<< ((node->flags & GGML_TENSOR_FLAG_PARAM) ? "x" : node->grad ? "g" : " ")
<< std::left << std::setw(45) << node->name << std::right
<< std::setw(2) << "[ "
<< std::setw(0) << node->nb[0] << ", "
<< std::setw(5) << node->nb[1] << ", "
@ -486,4 +486,4 @@ const std::string& GgmlOvDecoder::get_op_type() const {
}
static const std::string unknown_op = "UNKNOWN_OP";
return unknown_op;
}
}

View File

@ -62,7 +62,6 @@ ggml_backend_openvino_graph_compute(ggml_backend_t backend, struct ggml_cgraph *
static const ggml_backend_i ggml_backend_openvino_interface = {
/* .get_name = */ ggml_backend_openvino_get_name,
/* .free = */ ggml_backend_openvino_free,
/* .get_default_buffer_type = */ ggml_backend_openvino_get_default_buffer_type,
/* .set_tensor_async = */ NULL,
/* .get_tensor_async = */ NULL,
/* .cpy_tensor_async = */ NULL,
@ -72,9 +71,6 @@ static const ggml_backend_i ggml_backend_openvino_interface = {
/* .graph_plan_update = */ NULL,
/* .graph_plan_compute = */ NULL,
/* .graph_compute = */ ggml_backend_openvino_graph_compute,
/* .supports_op = */ NULL,
/* .supports_buft = */ NULL,
/* .offload_op = */ NULL,
/* .event_record = */ NULL,
/* .event_wait = */ NULL,
};
@ -89,7 +85,7 @@ static ggml_guid_t ggml_backend_openvino_guid(void) {
}
// backend API
GGML_API ggml_backend_t ggml_backend_openvino_init(int device) {
GGML_BACKEND_API ggml_backend_t ggml_backend_openvino_init(int device) {
if (device < 0 || device >= ggml_backend_openvino_get_device_count()) {
GGML_LOG_ERROR("%s: invalid device %d\n", __func__, device);
return nullptr;
@ -111,30 +107,28 @@ GGML_API ggml_backend_t ggml_backend_openvino_init(int device) {
return openvino_backend;
}
GGML_API bool ggml_backend_is_openvino(ggml_backend_t backend) {
GGML_BACKEND_API bool ggml_backend_is_openvino(ggml_backend_t backend) {
GGML_ASSERT(backend->context != nullptr);
return true;
}
// device buffer
GGML_API ggml_backend_buffer_type_t
ggml_backend_openvino_buffer_type(int device) {
GGML_BACKEND_API ggml_backend_buffer_type_t ggml_backend_openvino_buffer_type(int device) {
GGML_ASSERT(device >= 0);
return nullptr;
}
// split tensor buffer that splits matrices by rows across multiple devices
GGML_API ggml_backend_buffer_type_t
ggml_backend_openvino_split_buffer_type(const float *tensor_split) {
GGML_BACKEND_API ggml_backend_buffer_type_t ggml_backend_openvino_split_buffer_type(const float * tensor_split) {
GGML_ASSERT(tensor_split != nullptr);
return nullptr;
}
// pinned host buffer for use with the CPU backend for faster copies between CPU
// and GPU
GGML_API ggml_backend_buffer_type_t
ggml_backend_openvino_host_buffer_type(void) { return nullptr;}
GGML_BACKEND_API ggml_backend_buffer_type_t ggml_backend_openvino_host_buffer_type(void) {
return nullptr;
}
struct ggml_backend_openvino_buffer_type_context {
int device;
@ -367,7 +361,7 @@ const ggml_openvino_device_info & ggml_openvino_info() {
return info;
}
GGML_API ggml_backend_reg_t ggml_backend_openvino_reg(void) {
GGML_BACKEND_API ggml_backend_reg_t ggml_backend_openvino_reg(void) {
static ggml_backend_reg reg;
static bool initialized = false;
@ -394,14 +388,13 @@ GGML_API ggml_backend_reg_t ggml_backend_openvino_reg(void) {
ctx->devices.push_back(dev);
}
reg = ggml_backend_reg {
/* .interface = */ ggml_backend_openvino_reg_interface,
/* .context = */ ctx
};
reg = ggml_backend_reg{ /* .api_version = */ GGML_BACKEND_API_VERSION,
/* .iface = */ ggml_backend_openvino_reg_interface,
/* .context = */ ctx };
}
initialized = true;
}
return &reg;
}
}