update other backends
ggml-ci
This commit is contained in:
parent
6ff0e7a32e
commit
04ef648f3e
11 changed files with 23 additions and 92 deletions
4
.github/workflows/bench.yml.disabled
vendored
4
.github/workflows/bench.yml.disabled
vendored
|
@ -27,10 +27,10 @@ on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
paths: ['llama.cpp', 'ggml.c', 'ggml-backend.c', 'ggml-quants.c', '**/*.cu', 'examples/server/*.h*', 'examples/server/*.cpp']
|
paths: ['llama.cpp', 'ggml.c', 'ggml-backend.cpp', 'ggml-quants.c', '**/*.cu', 'examples/server/*.h*', 'examples/server/*.cpp']
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
types: [opened, synchronize, reopened]
|
types: [opened, synchronize, reopened]
|
||||||
paths: ['llama.cpp', 'ggml.c', 'ggml-backend.c', 'ggml-quants.c', '**/*.cu', 'examples/server/*.h*', 'examples/server/*.cpp']
|
paths: ['llama.cpp', 'ggml.c', 'ggml-backend.cpp', 'ggml-quants.c', '**/*.cu', 'examples/server/*.h*', 'examples/server/*.cpp']
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '04 2 * * *'
|
- cron: '04 2 * * *'
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ var sources = [
|
||||||
"src/unicode-data.cpp",
|
"src/unicode-data.cpp",
|
||||||
"ggml/src/ggml.c",
|
"ggml/src/ggml.c",
|
||||||
"ggml/src/ggml-alloc.c",
|
"ggml/src/ggml-alloc.c",
|
||||||
"ggml/src/ggml-backend.c",
|
"ggml/src/ggml-backend.cpp",
|
||||||
"ggml/src/ggml-quants.c",
|
"ggml/src/ggml-quants.c",
|
||||||
"ggml/src/ggml-aarch64.c",
|
"ggml/src/ggml-aarch64.c",
|
||||||
]
|
]
|
||||||
|
|
|
@ -322,11 +322,8 @@ static struct ggml_backend_i blas_backend_i = {
|
||||||
/* .supports_op = */ ggml_backend_blas_supports_op,
|
/* .supports_op = */ ggml_backend_blas_supports_op,
|
||||||
/* .supports_buft = */ ggml_backend_blas_supports_buft,
|
/* .supports_buft = */ ggml_backend_blas_supports_buft,
|
||||||
/* .offload_op = */ NULL,
|
/* .offload_op = */ NULL,
|
||||||
/* .event_new = */ NULL,
|
|
||||||
/* .event_free = */ NULL,
|
|
||||||
/* .event_record = */ NULL,
|
/* .event_record = */ NULL,
|
||||||
/* .event_wait = */ NULL,
|
/* .event_wait = */ NULL,
|
||||||
/* .event_synchronize = */ NULL,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static ggml_guid_t ggml_backend_blas_guid(void) {
|
static ggml_guid_t ggml_backend_blas_guid(void) {
|
||||||
|
@ -340,6 +337,7 @@ ggml_backend_t ggml_backend_blas_init(void) {
|
||||||
ggml_backend_t backend = new ggml_backend {
|
ggml_backend_t backend = new ggml_backend {
|
||||||
/* .guid = */ ggml_backend_blas_guid(),
|
/* .guid = */ ggml_backend_blas_guid(),
|
||||||
/* .interface = */ blas_backend_i,
|
/* .interface = */ blas_backend_i,
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ ctx,
|
/* .context = */ ctx,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1326,6 +1326,7 @@ ggml_backend_buffer_type_t ggml_backend_cann_host_buffer_type() {
|
||||||
/* .get_alloc_size = */ ggml_backend_cpu_buffer_type()->iface.get_alloc_size,
|
/* .get_alloc_size = */ ggml_backend_cpu_buffer_type()->iface.get_alloc_size,
|
||||||
/* .is_host = */ ggml_backend_cpu_buffer_type()->iface.is_host,
|
/* .is_host = */ ggml_backend_cpu_buffer_type()->iface.is_host,
|
||||||
},
|
},
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ nullptr,
|
/* .context = */ nullptr,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2021,11 +2022,8 @@ static ggml_backend_i ggml_backend_cann_interface = {
|
||||||
/* .supports_op = */ ggml_backend_cann_supports_op,
|
/* .supports_op = */ ggml_backend_cann_supports_op,
|
||||||
/* .supports_buft = */ ggml_backend_cann_supports_buft,
|
/* .supports_buft = */ ggml_backend_cann_supports_buft,
|
||||||
/* .offload_op = */ ggml_backend_cann_offload_op,
|
/* .offload_op = */ ggml_backend_cann_offload_op,
|
||||||
/* .event_new = */ ggml_backend_cann_event_new,
|
|
||||||
/* .event_free = */ ggml_backend_cann_event_free,
|
|
||||||
/* .event_record = */ ggml_backend_cann_event_record,
|
/* .event_record = */ ggml_backend_cann_event_record,
|
||||||
/* .event_wait = */ ggml_backend_cann_event_wait,
|
/* .event_wait = */ ggml_backend_cann_event_wait,
|
||||||
/* .event_synchronize = */ ggml_backend_cann_event_synchronize,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2058,6 +2056,7 @@ ggml_backend_t ggml_backend_cann_init(int32_t device) {
|
||||||
ggml_backend_t cann_backend =
|
ggml_backend_t cann_backend =
|
||||||
new ggml_backend{/* .guid = */ ggml_backend_cann_guid(),
|
new ggml_backend{/* .guid = */ ggml_backend_cann_guid(),
|
||||||
/* .interface = */ ggml_backend_cann_interface,
|
/* .interface = */ ggml_backend_cann_interface,
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ ctx};
|
/* .context = */ ctx};
|
||||||
|
|
||||||
return cann_backend;
|
return cann_backend;
|
||||||
|
@ -2105,28 +2104,3 @@ static ggml_backend_t ggml_backend_reg_cann_init(const char* params,
|
||||||
|
|
||||||
GGML_UNUSED(params);
|
GGML_UNUSED(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" int ggml_backend_cann_reg_devices();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Registers CANN (Ascend) devices as backend options.
|
|
||||||
*
|
|
||||||
* This function initializes ACL, retrieves the number of available CANN
|
|
||||||
* devices, and registers each device as a backend option using
|
|
||||||
* `ggml_backend_register`. Each device is given a unique name based on
|
|
||||||
* `GGML_CANN_NAME` followed by its index.
|
|
||||||
*
|
|
||||||
* @return int The number of CANN devices registered.
|
|
||||||
*/
|
|
||||||
int ggml_backend_cann_reg_devices() {
|
|
||||||
uint32_t device_count = ggml_backend_cann_get_device_count();
|
|
||||||
// initialization
|
|
||||||
for (uint32_t i = 0; i < device_count; i++) {
|
|
||||||
char name[128];
|
|
||||||
snprintf(name, sizeof(name), "CANN%d", i);
|
|
||||||
ggml_backend_register(name, ggml_backend_reg_cann_init,
|
|
||||||
ggml_backend_cann_buffer_type(i),
|
|
||||||
(void*)(intptr_t)i);
|
|
||||||
}
|
|
||||||
return device_count;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1921,6 +1921,7 @@ ggml_backend_buffer_type_t ggml_backend_kompute_buffer_type(int device) {
|
||||||
for (const auto & dev : devices) {
|
for (const auto & dev : devices) {
|
||||||
vec.push_back({
|
vec.push_back({
|
||||||
/* .iface = */ ggml_backend_kompute_buffer_type_interface,
|
/* .iface = */ ggml_backend_kompute_buffer_type_interface,
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ new ggml_backend_kompute_buffer_type_context(dev.index, dev.bufferAlignment, dev.maxAlloc)
|
/* .context = */ new ggml_backend_kompute_buffer_type_context(dev.index, dev.bufferAlignment, dev.maxAlloc)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1989,11 +1990,8 @@ static struct ggml_backend_i kompute_backend_i = {
|
||||||
/* .supports_op = */ ggml_backend_kompute_supports_op,
|
/* .supports_op = */ ggml_backend_kompute_supports_op,
|
||||||
/* .supports_buft = */ ggml_backend_kompute_supports_buft,
|
/* .supports_buft = */ ggml_backend_kompute_supports_buft,
|
||||||
/* .offload_op = */ NULL,
|
/* .offload_op = */ NULL,
|
||||||
/* .event_new = */ NULL,
|
|
||||||
/* .event_free = */ NULL,
|
|
||||||
/* .event_record = */ NULL,
|
/* .event_record = */ NULL,
|
||||||
/* .event_wait = */ NULL,
|
/* .event_wait = */ NULL,
|
||||||
/* .event_synchronize = */ NULL,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static ggml_guid_t ggml_backend_kompute_guid() {
|
static ggml_guid_t ggml_backend_kompute_guid() {
|
||||||
|
@ -2008,6 +2006,7 @@ ggml_backend_t ggml_backend_kompute_init(int device) {
|
||||||
ggml_backend_t kompute_backend = new ggml_backend {
|
ggml_backend_t kompute_backend = new ggml_backend {
|
||||||
/* .guid = */ ggml_backend_kompute_guid(),
|
/* .guid = */ ggml_backend_kompute_guid(),
|
||||||
/* .interface = */ kompute_backend_i,
|
/* .interface = */ kompute_backend_i,
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ s_kompute_context,
|
/* .context = */ s_kompute_context,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2022,18 +2021,3 @@ static ggml_backend_t ggml_backend_reg_kompute_init(const char * params, void *
|
||||||
GGML_UNUSED(params);
|
GGML_UNUSED(params);
|
||||||
return ggml_backend_kompute_init(intptr_t(user_data));
|
return ggml_backend_kompute_init(intptr_t(user_data));
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" int ggml_backend_kompute_reg_devices();
|
|
||||||
|
|
||||||
int ggml_backend_kompute_reg_devices() {
|
|
||||||
auto devices = ggml_vk_available_devices_internal(0);
|
|
||||||
for (const auto & device : devices) {
|
|
||||||
ggml_backend_register(
|
|
||||||
ggml_kompute_format_name(device.index).c_str(),
|
|
||||||
ggml_backend_reg_kompute_init,
|
|
||||||
ggml_backend_kompute_buffer_type(device.index),
|
|
||||||
reinterpret_cast<void *>(intptr_t(device.index))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return devices.size();
|
|
||||||
}
|
|
||||||
|
|
|
@ -3380,6 +3380,7 @@ ggml_backend_buffer_type_t ggml_backend_metal_buffer_type(void) {
|
||||||
/* .get_alloc_size = */ NULL, // defaults to ggml_nbytes
|
/* .get_alloc_size = */ NULL, // defaults to ggml_nbytes
|
||||||
/* .is_host = */ ggml_backend_metal_buffer_type_is_host,
|
/* .is_host = */ ggml_backend_metal_buffer_type_is_host,
|
||||||
},
|
},
|
||||||
|
/* .device = */ NULL,
|
||||||
/* .context = */ NULL,
|
/* .context = */ NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3539,11 +3540,8 @@ static struct ggml_backend_i ggml_backend_metal_i = {
|
||||||
/* .supports_op = */ ggml_backend_metal_supports_op,
|
/* .supports_op = */ ggml_backend_metal_supports_op,
|
||||||
/* .supports_buft = */ ggml_backend_metal_supports_buft,
|
/* .supports_buft = */ ggml_backend_metal_supports_buft,
|
||||||
/* .offload_op = */ NULL,
|
/* .offload_op = */ NULL,
|
||||||
/* .event_new = */ NULL,
|
|
||||||
/* .event_free = */ NULL,
|
|
||||||
/* .event_record = */ NULL,
|
/* .event_record = */ NULL,
|
||||||
/* .event_wait = */ NULL,
|
/* .event_wait = */ NULL,
|
||||||
/* .event_synchronize = */ NULL,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void ggml_backend_metal_log_set_callback(ggml_log_callback log_callback, void * user_data) {
|
void ggml_backend_metal_log_set_callback(ggml_log_callback log_callback, void * user_data) {
|
||||||
|
@ -3568,6 +3566,7 @@ ggml_backend_t ggml_backend_metal_init(void) {
|
||||||
*backend = (struct ggml_backend) {
|
*backend = (struct ggml_backend) {
|
||||||
/* .guid = */ ggml_backend_metal_guid(),
|
/* .guid = */ ggml_backend_metal_guid(),
|
||||||
/* .interface = */ ggml_backend_metal_i,
|
/* .interface = */ ggml_backend_metal_i,
|
||||||
|
/* .device = */ NULL,
|
||||||
/* .context = */ ctx,
|
/* .context = */ ctx,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -662,11 +662,8 @@ static ggml_backend_i ggml_backend_rpc_interface = {
|
||||||
/* .supports_op = */ ggml_backend_rpc_supports_op,
|
/* .supports_op = */ ggml_backend_rpc_supports_op,
|
||||||
/* .supports_buft = */ ggml_backend_rpc_supports_buft,
|
/* .supports_buft = */ ggml_backend_rpc_supports_buft,
|
||||||
/* .offload_op = */ NULL,
|
/* .offload_op = */ NULL,
|
||||||
/* .event_new = */ NULL,
|
|
||||||
/* .event_free = */ NULL,
|
|
||||||
/* .event_record = */ NULL,
|
/* .event_record = */ NULL,
|
||||||
/* .event_wait = */ NULL,
|
/* .event_wait = */ NULL,
|
||||||
/* .event_synchronize = */ NULL,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
GGML_API ggml_backend_buffer_type_t ggml_backend_rpc_buffer_type(const char * endpoint) {
|
GGML_API ggml_backend_buffer_type_t ggml_backend_rpc_buffer_type(const char * endpoint) {
|
||||||
|
@ -694,6 +691,7 @@ GGML_API ggml_backend_buffer_type_t ggml_backend_rpc_buffer_type(const char * en
|
||||||
|
|
||||||
ggml_backend_buffer_type_t buft = new ggml_backend_buffer_type {
|
ggml_backend_buffer_type_t buft = new ggml_backend_buffer_type {
|
||||||
/* .iface = */ ggml_backend_rpc_buffer_type_interface,
|
/* .iface = */ ggml_backend_rpc_buffer_type_interface,
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ buft_ctx
|
/* .context = */ buft_ctx
|
||||||
};
|
};
|
||||||
buft_map[endpoint] = buft;
|
buft_map[endpoint] = buft;
|
||||||
|
@ -709,6 +707,7 @@ ggml_backend_t ggml_backend_rpc_init(const char * endpoint) {
|
||||||
ggml_backend_t backend = new ggml_backend {
|
ggml_backend_t backend = new ggml_backend {
|
||||||
/* .guid = */ ggml_backend_rpc_guid(),
|
/* .guid = */ ggml_backend_rpc_guid(),
|
||||||
/* .interface = */ ggml_backend_rpc_interface,
|
/* .interface = */ ggml_backend_rpc_interface,
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ ctx
|
/* .context = */ ctx
|
||||||
};
|
};
|
||||||
return backend;
|
return backend;
|
||||||
|
|
|
@ -4424,6 +4424,7 @@ ggml_backend_buffer_type_t ggml_backend_sycl_buffer_type(int device) {
|
||||||
queue_ptr stream = &(device_i.default_queue());
|
queue_ptr stream = &(device_i.default_queue());
|
||||||
ggml_backend_sycl_buffer_types[i] = {
|
ggml_backend_sycl_buffer_types[i] = {
|
||||||
/* .iface = */ ggml_backend_sycl_buffer_type_interface,
|
/* .iface = */ ggml_backend_sycl_buffer_type_interface,
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ new ggml_backend_sycl_buffer_type_context{i, GGML_SYCL_NAME + std::to_string(i), stream},
|
/* .context = */ new ggml_backend_sycl_buffer_type_context{i, GGML_SYCL_NAME + std::to_string(i), stream},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -4449,6 +4450,7 @@ ggml_backend_buffer_type_t ggml_backend_sycl_buffer_type(ggml_backend_sycl_conte
|
||||||
for (int i = 0; i < ggml_sycl_info().device_count; i++) {
|
for (int i = 0; i < ggml_sycl_info().device_count; i++) {
|
||||||
ggml_backend_sycl_buffer_types[i] = {
|
ggml_backend_sycl_buffer_types[i] = {
|
||||||
/* .iface = */ ggml_backend_sycl_buffer_type_interface,
|
/* .iface = */ ggml_backend_sycl_buffer_type_interface,
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ new ggml_backend_sycl_buffer_type_context{i, GGML_SYCL_NAME + std::to_string(i), ctx->stream(i, 0)},
|
/* .context = */ new ggml_backend_sycl_buffer_type_context{i, GGML_SYCL_NAME + std::to_string(i), ctx->stream(i, 0)},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -4837,6 +4839,7 @@ ggml_backend_buffer_type_t ggml_backend_sycl_split_buffer_type(const float * ten
|
||||||
|
|
||||||
struct ggml_backend_buffer_type buft {
|
struct ggml_backend_buffer_type buft {
|
||||||
/* .iface = */ ggml_backend_sycl_split_buffer_type_interface,
|
/* .iface = */ ggml_backend_sycl_split_buffer_type_interface,
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ new ggml_backend_sycl_split_buffer_type_context{tensor_split_arr},
|
/* .context = */ new ggml_backend_sycl_split_buffer_type_context{tensor_split_arr},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -4890,6 +4893,7 @@ ggml_backend_buffer_type_t ggml_backend_sycl_host_buffer_type() {
|
||||||
/* .get_alloc_size = */ ggml_backend_cpu_buffer_type()->iface.get_alloc_size,
|
/* .get_alloc_size = */ ggml_backend_cpu_buffer_type()->iface.get_alloc_size,
|
||||||
/* .is_host = */ ggml_backend_cpu_buffer_type()->iface.is_host,
|
/* .is_host = */ ggml_backend_cpu_buffer_type()->iface.is_host,
|
||||||
},
|
},
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ nullptr,
|
/* .context = */ nullptr,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -5197,11 +5201,8 @@ static ggml_backend_i ggml_backend_sycl_interface = {
|
||||||
/* .supports_op = */ ggml_backend_sycl_supports_op,
|
/* .supports_op = */ ggml_backend_sycl_supports_op,
|
||||||
/* .supports_buft = */ ggml_backend_sycl_supports_buft,
|
/* .supports_buft = */ ggml_backend_sycl_supports_buft,
|
||||||
/* .offload_op = */ ggml_backend_sycl_offload_op,
|
/* .offload_op = */ ggml_backend_sycl_offload_op,
|
||||||
/* .event_new = */ NULL,
|
|
||||||
/* .event_free = */ NULL,
|
|
||||||
/* .event_record = */ NULL,
|
/* .event_record = */ NULL,
|
||||||
/* .event_wait = */ NULL,
|
/* .event_wait = */ NULL,
|
||||||
/* .event_synchronize = */ NULL,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static ggml_guid_t ggml_backend_sycl_guid() {
|
static ggml_guid_t ggml_backend_sycl_guid() {
|
||||||
|
@ -5224,6 +5225,7 @@ ggml_backend_t ggml_backend_sycl_init(int device) {
|
||||||
ggml_backend_t sycl_backend = new ggml_backend {
|
ggml_backend_t sycl_backend = new ggml_backend {
|
||||||
/* .guid = */ ggml_backend_sycl_guid(),
|
/* .guid = */ ggml_backend_sycl_guid(),
|
||||||
/* .interface = */ ggml_backend_sycl_interface,
|
/* .interface = */ ggml_backend_sycl_interface,
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ ctx
|
/* .context = */ ctx
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -5245,15 +5247,3 @@ static ggml_backend_t ggml_backend_reg_sycl_init(const char * params, void * use
|
||||||
|
|
||||||
UNUSED(params);
|
UNUSED(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" int ggml_backend_sycl_reg_devices();
|
|
||||||
|
|
||||||
int ggml_backend_sycl_reg_devices() {
|
|
||||||
assert(ggml_sycl_info().device_count>0);
|
|
||||||
for (int i = 0; i < ggml_sycl_info().device_count; i++) {
|
|
||||||
char name[128];
|
|
||||||
snprintf(name, sizeof(name), "%s%d", GGML_SYCL_NAME, i);
|
|
||||||
ggml_backend_register(name, ggml_backend_reg_sycl_init, ggml_backend_sycl_buffer_type(i), (void *) (intptr_t) i);
|
|
||||||
}
|
|
||||||
return ggml_sycl_info().device_count;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1938,6 +1938,7 @@ static vk_device ggml_vk_get_device(size_t idx) {
|
||||||
|
|
||||||
device->buffer_type = {
|
device->buffer_type = {
|
||||||
/* .iface = */ ggml_backend_vk_buffer_type_interface,
|
/* .iface = */ ggml_backend_vk_buffer_type_interface,
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ new ggml_backend_vk_buffer_type_context{ device->name, device },
|
/* .context = */ new ggml_backend_vk_buffer_type_context{ device->name, device },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -6409,6 +6410,7 @@ ggml_backend_buffer_type_t ggml_backend_vk_host_buffer_type() {
|
||||||
/* .get_alloc_size = */ ggml_backend_cpu_buffer_type()->iface.get_alloc_size,
|
/* .get_alloc_size = */ ggml_backend_cpu_buffer_type()->iface.get_alloc_size,
|
||||||
/* .is_host = */ ggml_backend_cpu_buffer_type()->iface.is_host,
|
/* .is_host = */ ggml_backend_cpu_buffer_type()->iface.is_host,
|
||||||
},
|
},
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ nullptr,
|
/* .context = */ nullptr,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -6771,11 +6773,8 @@ static ggml_backend_i ggml_backend_vk_interface = {
|
||||||
/* .supports_op = */ ggml_backend_vk_supports_op,
|
/* .supports_op = */ ggml_backend_vk_supports_op,
|
||||||
/* .supports_buft = */ ggml_backend_vk_supports_buft,
|
/* .supports_buft = */ ggml_backend_vk_supports_buft,
|
||||||
/* .offload_op = */ ggml_backend_vk_offload_op,
|
/* .offload_op = */ ggml_backend_vk_offload_op,
|
||||||
/* .event_new = */ NULL,
|
|
||||||
/* .event_free = */ NULL,
|
|
||||||
/* .event_record = */ NULL,
|
/* .event_record = */ NULL,
|
||||||
/* .event_wait = */ NULL,
|
/* .event_wait = */ NULL,
|
||||||
/* .event_synchronize = */ NULL,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static ggml_guid_t ggml_backend_vk_guid() {
|
static ggml_guid_t ggml_backend_vk_guid() {
|
||||||
|
@ -6792,6 +6791,7 @@ ggml_backend_t ggml_backend_vk_init(size_t dev_num) {
|
||||||
ggml_backend_t vk_backend = new ggml_backend {
|
ggml_backend_t vk_backend = new ggml_backend {
|
||||||
/* .guid = */ ggml_backend_vk_guid(),
|
/* .guid = */ ggml_backend_vk_guid(),
|
||||||
/* .interface = */ ggml_backend_vk_interface,
|
/* .interface = */ ggml_backend_vk_interface,
|
||||||
|
/* .device = */ nullptr,
|
||||||
/* .context = */ ctx,
|
/* .context = */ ctx,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -6834,19 +6834,6 @@ static ggml_backend_t ggml_backend_reg_vk_init(const char * params, void * user_
|
||||||
UNUSED(params);
|
UNUSED(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" int ggml_backend_vk_reg_devices();
|
|
||||||
|
|
||||||
int ggml_backend_vk_reg_devices() {
|
|
||||||
ggml_vk_instance_init();
|
|
||||||
|
|
||||||
for (size_t i = 0; i < vk_instance.device_indices.size(); i++) {
|
|
||||||
char name[128];
|
|
||||||
snprintf(name, sizeof(name), "%s%ld", GGML_VK_NAME, i);
|
|
||||||
ggml_backend_register(name, ggml_backend_reg_vk_init, ggml_backend_vk_buffer_type(i), (void *) (intptr_t) i); // NOLINT
|
|
||||||
}
|
|
||||||
return vk_instance.device_indices.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Extension availability
|
// Extension availability
|
||||||
static bool ggml_vk_instance_validation_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions) {
|
static bool ggml_vk_instance_validation_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions) {
|
||||||
#ifdef GGML_VULKAN_VALIDATE
|
#ifdef GGML_VULKAN_VALIDATE
|
||||||
|
|
|
@ -122,7 +122,7 @@ if [ -f $SRC_LLAMA/ggml-src.patch ]; then
|
||||||
# src/ggml-aarch64.h -> ggml/src/ggml-aarch64.h
|
# src/ggml-aarch64.h -> ggml/src/ggml-aarch64.h
|
||||||
# src/ggml-alloc.c -> ggml/src/ggml-alloc.c
|
# src/ggml-alloc.c -> ggml/src/ggml-alloc.c
|
||||||
# src/ggml-backend-impl.h -> ggml/src/ggml-backend-impl.h
|
# src/ggml-backend-impl.h -> ggml/src/ggml-backend-impl.h
|
||||||
# src/ggml-backend.c -> ggml/src/ggml-backend.c
|
# src/ggml-backend.cpp -> ggml/src/ggml-backend.cpp
|
||||||
# src/ggml-cann/* -> ggml/src/ggml-cann/
|
# src/ggml-cann/* -> ggml/src/ggml-cann/
|
||||||
# src/ggml-cann.cpp -> ggml/src/ggml-cann.cpp
|
# src/ggml-cann.cpp -> ggml/src/ggml-cann.cpp
|
||||||
# src/ggml-common.h -> ggml/src/ggml-common.h
|
# src/ggml-common.h -> ggml/src/ggml-common.h
|
||||||
|
@ -169,7 +169,7 @@ if [ -f $SRC_LLAMA/ggml-src.patch ]; then
|
||||||
-e 's/([[:space:]]|[ab]\/)src\/ggml-aarch64\.h/\1ggml\/src\/ggml-aarch64.h/g' \
|
-e 's/([[:space:]]|[ab]\/)src\/ggml-aarch64\.h/\1ggml\/src\/ggml-aarch64.h/g' \
|
||||||
-e 's/([[:space:]]|[ab]\/)src\/ggml-alloc\.c/\1ggml\/src\/ggml-alloc.c/g' \
|
-e 's/([[:space:]]|[ab]\/)src\/ggml-alloc\.c/\1ggml\/src\/ggml-alloc.c/g' \
|
||||||
-e 's/([[:space:]]|[ab]\/)src\/ggml-backend-impl\.h/\1ggml\/src\/ggml-backend-impl.h/g' \
|
-e 's/([[:space:]]|[ab]\/)src\/ggml-backend-impl\.h/\1ggml\/src\/ggml-backend-impl.h/g' \
|
||||||
-e 's/([[:space:]]|[ab]\/)src\/ggml-backend\.c/\1ggml\/src\/ggml-backend.c/g' \
|
-e 's/([[:space:]]|[ab]\/)src\/ggml-backend\.cpp/\1ggml\/src\/ggml-backend.cpp/g' \
|
||||||
-e 's/([[:space:]]|[ab]\/)src\/ggml-cann\//\1ggml\/src\/ggml-cann\//g' \
|
-e 's/([[:space:]]|[ab]\/)src\/ggml-cann\//\1ggml\/src\/ggml-cann\//g' \
|
||||||
-e 's/([[:space:]]|[ab]\/)src\/ggml-cann\.cpp/\1ggml\/src\/ggml-cann.cpp/g' \
|
-e 's/([[:space:]]|[ab]\/)src\/ggml-cann\.cpp/\1ggml\/src\/ggml-cann.cpp/g' \
|
||||||
-e 's/([[:space:]]|[ab]\/)src\/ggml-common\.h/\1ggml\/src\/ggml-common.h/g' \
|
-e 's/([[:space:]]|[ab]\/)src\/ggml-common\.h/\1ggml\/src\/ggml-common.h/g' \
|
||||||
|
|
|
@ -9,7 +9,7 @@ cp -rpv ../ggml/src/ggml-aarch64.c ./ggml/src/ggml-aarch64.c
|
||||||
cp -rpv ../ggml/src/ggml-aarch64.h ./ggml/src/ggml-aarch64.h
|
cp -rpv ../ggml/src/ggml-aarch64.h ./ggml/src/ggml-aarch64.h
|
||||||
cp -rpv ../ggml/src/ggml-alloc.c ./ggml/src/ggml-alloc.c
|
cp -rpv ../ggml/src/ggml-alloc.c ./ggml/src/ggml-alloc.c
|
||||||
cp -rpv ../ggml/src/ggml-backend-impl.h ./ggml/src/ggml-backend-impl.h
|
cp -rpv ../ggml/src/ggml-backend-impl.h ./ggml/src/ggml-backend-impl.h
|
||||||
cp -rpv ../ggml/src/ggml-backend.c ./ggml/src/ggml-backend.c
|
cp -rpv ../ggml/src/ggml-backend.cpp ./ggml/src/ggml-backend.cpp
|
||||||
cp -rpv ../ggml/src/ggml-cann/* ./ggml/src/ggml-cann/
|
cp -rpv ../ggml/src/ggml-cann/* ./ggml/src/ggml-cann/
|
||||||
cp -rpv ../ggml/src/ggml-cann.cpp ./ggml/src/ggml-cann.cpp
|
cp -rpv ../ggml/src/ggml-cann.cpp ./ggml/src/ggml-cann.cpp
|
||||||
cp -rpv ../ggml/src/ggml-common.h ./ggml/src/ggml-common.h
|
cp -rpv ../ggml/src/ggml-common.h ./ggml/src/ggml-common.h
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue