Skip to content

Commit 9ade7ce

Browse files
committed
update other backends
1 parent 6ff0e7a commit 9ade7ce

11 files changed

+23
-92
lines changed

.github/workflows/bench.yml.disabled

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ on:
2727
push:
2828
branches:
2929
- master
30-
paths: ['llama.cpp', 'ggml.c', 'ggml-backend.c', 'ggml-quants.c', '**/*.cu', 'examples/server/*.h*', 'examples/server/*.cpp']
30+
paths: ['llama.cpp', 'ggml.c', 'ggml-backend.cpp', 'ggml-quants.c', '**/*.cu', 'examples/server/*.h*', 'examples/server/*.cpp']
3131
pull_request_target:
3232
types: [opened, synchronize, reopened]
33-
paths: ['llama.cpp', 'ggml.c', 'ggml-backend.c', 'ggml-quants.c', '**/*.cu', 'examples/server/*.h*', 'examples/server/*.cpp']
33+
paths: ['llama.cpp', 'ggml.c', 'ggml-backend.cpp', 'ggml-quants.c', '**/*.cu', 'examples/server/*.h*', 'examples/server/*.cpp']
3434
schedule:
3535
- cron: '04 2 * * *'
3636

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ var sources = [
1111
"src/unicode-data.cpp",
1212
"ggml/src/ggml.c",
1313
"ggml/src/ggml-alloc.c",
14-
"ggml/src/ggml-backend.c",
14+
"ggml/src/ggml-backend.cpp",
1515
"ggml/src/ggml-quants.c",
1616
"ggml/src/ggml-aarch64.c",
1717
]

ggml/src/ggml-blas.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -322,11 +322,8 @@ static struct ggml_backend_i blas_backend_i = {
322322
/* .supports_op = */ ggml_backend_blas_supports_op,
323323
/* .supports_buft = */ ggml_backend_blas_supports_buft,
324324
/* .offload_op = */ NULL,
325-
/* .event_new = */ NULL,
326-
/* .event_free = */ NULL,
327325
/* .event_record = */ NULL,
328326
/* .event_wait = */ NULL,
329-
/* .event_synchronize = */ NULL,
330327
};
331328

332329
static ggml_guid_t ggml_backend_blas_guid(void) {
@@ -340,6 +337,7 @@ ggml_backend_t ggml_backend_blas_init(void) {
340337
ggml_backend_t backend = new ggml_backend {
341338
/* .guid = */ ggml_backend_blas_guid(),
342339
/* .interface = */ blas_backend_i,
340+
/* .device = */ nullptr,
343341
/* .context = */ ctx,
344342
};
345343

ggml/src/ggml-cann.cpp

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1326,6 +1326,7 @@ ggml_backend_buffer_type_t ggml_backend_cann_host_buffer_type() {
13261326
/* .get_alloc_size = */ ggml_backend_cpu_buffer_type()->iface.get_alloc_size,
13271327
/* .is_host = */ ggml_backend_cpu_buffer_type()->iface.is_host,
13281328
},
1329+
/* .device = */ nullptr,
13291330
/* .context = */ nullptr,
13301331
};
13311332

@@ -2021,11 +2022,8 @@ static ggml_backend_i ggml_backend_cann_interface = {
20212022
/* .supports_op = */ ggml_backend_cann_supports_op,
20222023
/* .supports_buft = */ ggml_backend_cann_supports_buft,
20232024
/* .offload_op = */ ggml_backend_cann_offload_op,
2024-
/* .event_new = */ ggml_backend_cann_event_new,
2025-
/* .event_free = */ ggml_backend_cann_event_free,
20262025
/* .event_record = */ ggml_backend_cann_event_record,
20272026
/* .event_wait = */ ggml_backend_cann_event_wait,
2028-
/* .event_synchronize = */ ggml_backend_cann_event_synchronize,
20292027
};
20302028

20312029
/**
@@ -2058,6 +2056,7 @@ ggml_backend_t ggml_backend_cann_init(int32_t device) {
20582056
ggml_backend_t cann_backend =
20592057
new ggml_backend{/* .guid = */ ggml_backend_cann_guid(),
20602058
/* .interface = */ ggml_backend_cann_interface,
2059+
/* .device = */ nullptr,
20612060
/* .context = */ ctx};
20622061

20632062
return cann_backend;
@@ -2105,28 +2104,3 @@ static ggml_backend_t ggml_backend_reg_cann_init(const char* params,
21052104

21062105
GGML_UNUSED(params);
21072106
}
2108-
2109-
extern "C" int ggml_backend_cann_reg_devices();
2110-
2111-
/**
2112-
* @brief Registers CANN (Ascend) devices as backend options.
2113-
*
2114-
* This function initializes ACL, retrieves the number of available CANN
2115-
* devices, and registers each device as a backend option using
2116-
* `ggml_backend_register`. Each device is given a unique name based on
2117-
* `GGML_CANN_NAME` followed by its index.
2118-
*
2119-
* @return int The number of CANN devices registered.
2120-
*/
2121-
int ggml_backend_cann_reg_devices() {
2122-
uint32_t device_count = ggml_backend_cann_get_device_count();
2123-
// initialization
2124-
for (uint32_t i = 0; i < device_count; i++) {
2125-
char name[128];
2126-
snprintf(name, sizeof(name), "CANN%d", i);
2127-
ggml_backend_register(name, ggml_backend_reg_cann_init,
2128-
ggml_backend_cann_buffer_type(i),
2129-
(void*)(intptr_t)i);
2130-
}
2131-
return device_count;
2132-
}

ggml/src/ggml-kompute.cpp

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1921,6 +1921,7 @@ ggml_backend_buffer_type_t ggml_backend_kompute_buffer_type(int device) {
19211921
for (const auto & dev : devices) {
19221922
vec.push_back({
19231923
/* .iface = */ ggml_backend_kompute_buffer_type_interface,
1924+
/* .device = */ nullptr,
19241925
/* .context = */ new ggml_backend_kompute_buffer_type_context(dev.index, dev.bufferAlignment, dev.maxAlloc)
19251926
});
19261927
}
@@ -1989,11 +1990,8 @@ static struct ggml_backend_i kompute_backend_i = {
19891990
/* .supports_op = */ ggml_backend_kompute_supports_op,
19901991
/* .supports_buft = */ ggml_backend_kompute_supports_buft,
19911992
/* .offload_op = */ NULL,
1992-
/* .event_new = */ NULL,
1993-
/* .event_free = */ NULL,
19941993
/* .event_record = */ NULL,
19951994
/* .event_wait = */ NULL,
1996-
/* .event_synchronize = */ NULL,
19971995
};
19981996

19991997
static ggml_guid_t ggml_backend_kompute_guid() {
@@ -2008,6 +2006,7 @@ ggml_backend_t ggml_backend_kompute_init(int device) {
20082006
ggml_backend_t kompute_backend = new ggml_backend {
20092007
/* .guid = */ ggml_backend_kompute_guid(),
20102008
/* .interface = */ kompute_backend_i,
2009+
/* .device = */ nullptr,
20112010
/* .context = */ s_kompute_context,
20122011
};
20132012

@@ -2022,18 +2021,3 @@ static ggml_backend_t ggml_backend_reg_kompute_init(const char * params, void *
20222021
GGML_UNUSED(params);
20232022
return ggml_backend_kompute_init(intptr_t(user_data));
20242023
}
2025-
2026-
extern "C" int ggml_backend_kompute_reg_devices();
2027-
2028-
int ggml_backend_kompute_reg_devices() {
2029-
auto devices = ggml_vk_available_devices_internal(0);
2030-
for (const auto & device : devices) {
2031-
ggml_backend_register(
2032-
ggml_kompute_format_name(device.index).c_str(),
2033-
ggml_backend_reg_kompute_init,
2034-
ggml_backend_kompute_buffer_type(device.index),
2035-
reinterpret_cast<void *>(intptr_t(device.index))
2036-
);
2037-
}
2038-
return devices.size();
2039-
}

ggml/src/ggml-metal.m

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3380,6 +3380,7 @@ ggml_backend_buffer_type_t ggml_backend_metal_buffer_type(void) {
33803380
/* .get_alloc_size = */ NULL, // defaults to ggml_nbytes
33813381
/* .is_host = */ ggml_backend_metal_buffer_type_is_host,
33823382
},
3383+
/* .device = */ NULL,
33833384
/* .context = */ NULL,
33843385
};
33853386

@@ -3539,11 +3540,8 @@ static void ggml_backend_metal_set_n_cb(ggml_backend_t backend, int n_cb) {
35393540
/* .supports_op = */ ggml_backend_metal_supports_op,
35403541
/* .supports_buft = */ ggml_backend_metal_supports_buft,
35413542
/* .offload_op = */ NULL,
3542-
/* .event_new = */ NULL,
3543-
/* .event_free = */ NULL,
35443543
/* .event_record = */ NULL,
35453544
/* .event_wait = */ NULL,
3546-
/* .event_synchronize = */ NULL,
35473545
};
35483546

35493547
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) {
35683566
*backend = (struct ggml_backend) {
35693567
/* .guid = */ ggml_backend_metal_guid(),
35703568
/* .interface = */ ggml_backend_metal_i,
3569+
/* .device = */ NULL,
35713570
/* .context = */ ctx,
35723571
};
35733572

ggml/src/ggml-rpc.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -662,11 +662,8 @@ static ggml_backend_i ggml_backend_rpc_interface = {
662662
/* .supports_op = */ ggml_backend_rpc_supports_op,
663663
/* .supports_buft = */ ggml_backend_rpc_supports_buft,
664664
/* .offload_op = */ NULL,
665-
/* .event_new = */ NULL,
666-
/* .event_free = */ NULL,
667665
/* .event_record = */ NULL,
668666
/* .event_wait = */ NULL,
669-
/* .event_synchronize = */ NULL,
670667
};
671668

672669
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
694691

695692
ggml_backend_buffer_type_t buft = new ggml_backend_buffer_type {
696693
/* .iface = */ ggml_backend_rpc_buffer_type_interface,
694+
/* .device = */ nullptr,
697695
/* .context = */ buft_ctx
698696
};
699697
buft_map[endpoint] = buft;
@@ -709,6 +707,7 @@ ggml_backend_t ggml_backend_rpc_init(const char * endpoint) {
709707
ggml_backend_t backend = new ggml_backend {
710708
/* .guid = */ ggml_backend_rpc_guid(),
711709
/* .interface = */ ggml_backend_rpc_interface,
710+
/* .device = */ nullptr,
712711
/* .context = */ ctx
713712
};
714713
return backend;

ggml/src/ggml-sycl.cpp

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4424,6 +4424,7 @@ ggml_backend_buffer_type_t ggml_backend_sycl_buffer_type(int device) {
44244424
queue_ptr stream = &(device_i.default_queue());
44254425
ggml_backend_sycl_buffer_types[i] = {
44264426
/* .iface = */ ggml_backend_sycl_buffer_type_interface,
4427+
/* .device = */ nullptr,
44274428
/* .context = */ new ggml_backend_sycl_buffer_type_context{i, GGML_SYCL_NAME + std::to_string(i), stream},
44284429
};
44294430
}
@@ -4449,6 +4450,7 @@ ggml_backend_buffer_type_t ggml_backend_sycl_buffer_type(ggml_backend_sycl_conte
44494450
for (int i = 0; i < ggml_sycl_info().device_count; i++) {
44504451
ggml_backend_sycl_buffer_types[i] = {
44514452
/* .iface = */ ggml_backend_sycl_buffer_type_interface,
4453+
/* .device = */ nullptr,
44524454
/* .context = */ new ggml_backend_sycl_buffer_type_context{i, GGML_SYCL_NAME + std::to_string(i), ctx->stream(i, 0)},
44534455
};
44544456
}
@@ -4837,6 +4839,7 @@ ggml_backend_buffer_type_t ggml_backend_sycl_split_buffer_type(const float * ten
48374839

48384840
struct ggml_backend_buffer_type buft {
48394841
/* .iface = */ ggml_backend_sycl_split_buffer_type_interface,
4842+
/* .device = */ nullptr,
48404843
/* .context = */ new ggml_backend_sycl_split_buffer_type_context{tensor_split_arr},
48414844
};
48424845

@@ -4890,6 +4893,7 @@ ggml_backend_buffer_type_t ggml_backend_sycl_host_buffer_type() {
48904893
/* .get_alloc_size = */ ggml_backend_cpu_buffer_type()->iface.get_alloc_size,
48914894
/* .is_host = */ ggml_backend_cpu_buffer_type()->iface.is_host,
48924895
},
4896+
/* .device = */ nullptr,
48934897
/* .context = */ nullptr,
48944898
};
48954899

@@ -5197,11 +5201,8 @@ static ggml_backend_i ggml_backend_sycl_interface = {
51975201
/* .supports_op = */ ggml_backend_sycl_supports_op,
51985202
/* .supports_buft = */ ggml_backend_sycl_supports_buft,
51995203
/* .offload_op = */ ggml_backend_sycl_offload_op,
5200-
/* .event_new = */ NULL,
5201-
/* .event_free = */ NULL,
52025204
/* .event_record = */ NULL,
52035205
/* .event_wait = */ NULL,
5204-
/* .event_synchronize = */ NULL,
52055206
};
52065207

52075208
static ggml_guid_t ggml_backend_sycl_guid() {
@@ -5224,6 +5225,7 @@ ggml_backend_t ggml_backend_sycl_init(int device) {
52245225
ggml_backend_t sycl_backend = new ggml_backend {
52255226
/* .guid = */ ggml_backend_sycl_guid(),
52265227
/* .interface = */ ggml_backend_sycl_interface,
5228+
/* .device = */ nullptr,
52275229
/* .context = */ ctx
52285230
};
52295231

@@ -5245,15 +5247,3 @@ static ggml_backend_t ggml_backend_reg_sycl_init(const char * params, void * use
52455247

52465248
UNUSED(params);
52475249
}
5248-
5249-
extern "C" int ggml_backend_sycl_reg_devices();
5250-
5251-
int ggml_backend_sycl_reg_devices() {
5252-
assert(ggml_sycl_info().device_count>0);
5253-
for (int i = 0; i < ggml_sycl_info().device_count; i++) {
5254-
char name[128];
5255-
snprintf(name, sizeof(name), "%s%d", GGML_SYCL_NAME, i);
5256-
ggml_backend_register(name, ggml_backend_reg_sycl_init, ggml_backend_sycl_buffer_type(i), (void *) (intptr_t) i);
5257-
}
5258-
return ggml_sycl_info().device_count;
5259-
}

ggml/src/ggml-vulkan.cpp

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1938,6 +1938,7 @@ static vk_device ggml_vk_get_device(size_t idx) {
19381938

19391939
device->buffer_type = {
19401940
/* .iface = */ ggml_backend_vk_buffer_type_interface,
1941+
/* .device = */ nullptr,
19411942
/* .context = */ new ggml_backend_vk_buffer_type_context{ device->name, device },
19421943
};
19431944

@@ -6409,6 +6410,7 @@ ggml_backend_buffer_type_t ggml_backend_vk_host_buffer_type() {
64096410
/* .get_alloc_size = */ ggml_backend_cpu_buffer_type()->iface.get_alloc_size,
64106411
/* .is_host = */ ggml_backend_cpu_buffer_type()->iface.is_host,
64116412
},
6413+
/* .device = */ nullptr,
64126414
/* .context = */ nullptr,
64136415
};
64146416

@@ -6771,11 +6773,8 @@ static ggml_backend_i ggml_backend_vk_interface = {
67716773
/* .supports_op = */ ggml_backend_vk_supports_op,
67726774
/* .supports_buft = */ ggml_backend_vk_supports_buft,
67736775
/* .offload_op = */ ggml_backend_vk_offload_op,
6774-
/* .event_new = */ NULL,
6775-
/* .event_free = */ NULL,
67766776
/* .event_record = */ NULL,
67776777
/* .event_wait = */ NULL,
6778-
/* .event_synchronize = */ NULL,
67796778
};
67806779

67816780
static ggml_guid_t ggml_backend_vk_guid() {
@@ -6792,6 +6791,7 @@ ggml_backend_t ggml_backend_vk_init(size_t dev_num) {
67926791
ggml_backend_t vk_backend = new ggml_backend {
67936792
/* .guid = */ ggml_backend_vk_guid(),
67946793
/* .interface = */ ggml_backend_vk_interface,
6794+
/* .device = */ nullptr,
67956795
/* .context = */ ctx,
67966796
};
67976797

@@ -6834,19 +6834,6 @@ static ggml_backend_t ggml_backend_reg_vk_init(const char * params, void * user_
68346834
UNUSED(params);
68356835
}
68366836

6837-
extern "C" int ggml_backend_vk_reg_devices();
6838-
6839-
int ggml_backend_vk_reg_devices() {
6840-
ggml_vk_instance_init();
6841-
6842-
for (size_t i = 0; i < vk_instance.device_indices.size(); i++) {
6843-
char name[128];
6844-
snprintf(name, sizeof(name), "%s%ld", GGML_VK_NAME, i);
6845-
ggml_backend_register(name, ggml_backend_reg_vk_init, ggml_backend_vk_buffer_type(i), (void *) (intptr_t) i); // NOLINT
6846-
}
6847-
return vk_instance.device_indices.size();
6848-
}
6849-
68506837
// Extension availability
68516838
static bool ggml_vk_instance_validation_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions) {
68526839
#ifdef GGML_VULKAN_VALIDATE

scripts/sync-ggml-am.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ if [ -f $SRC_LLAMA/ggml-src.patch ]; then
122122
# src/ggml-aarch64.h -> ggml/src/ggml-aarch64.h
123123
# src/ggml-alloc.c -> ggml/src/ggml-alloc.c
124124
# src/ggml-backend-impl.h -> ggml/src/ggml-backend-impl.h
125-
# src/ggml-backend.c -> ggml/src/ggml-backend.c
125+
# src/ggml-backend.cpp -> ggml/src/ggml-backend.cpp
126126
# src/ggml-cann/* -> ggml/src/ggml-cann/
127127
# src/ggml-cann.cpp -> ggml/src/ggml-cann.cpp
128128
# src/ggml-common.h -> ggml/src/ggml-common.h
@@ -169,7 +169,7 @@ if [ -f $SRC_LLAMA/ggml-src.patch ]; then
169169
-e 's/([[:space:]]|[ab]\/)src\/ggml-aarch64\.h/\1ggml\/src\/ggml-aarch64.h/g' \
170170
-e 's/([[:space:]]|[ab]\/)src\/ggml-alloc\.c/\1ggml\/src\/ggml-alloc.c/g' \
171171
-e 's/([[:space:]]|[ab]\/)src\/ggml-backend-impl\.h/\1ggml\/src\/ggml-backend-impl.h/g' \
172-
-e 's/([[:space:]]|[ab]\/)src\/ggml-backend\.c/\1ggml\/src\/ggml-backend.c/g' \
172+
-e 's/([[:space:]]|[ab]\/)src\/ggml-backend\.cpp/\1ggml\/src\/ggml-backend.cpp/g' \
173173
-e 's/([[:space:]]|[ab]\/)src\/ggml-cann\//\1ggml\/src\/ggml-cann\//g' \
174174
-e 's/([[:space:]]|[ab]\/)src\/ggml-cann\.cpp/\1ggml\/src\/ggml-cann.cpp/g' \
175175
-e 's/([[:space:]]|[ab]\/)src\/ggml-common\.h/\1ggml\/src\/ggml-common.h/g' \

scripts/sync-ggml.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ cp -rpv ../ggml/src/ggml-aarch64.c ./ggml/src/ggml-aarch64.c
99
cp -rpv ../ggml/src/ggml-aarch64.h ./ggml/src/ggml-aarch64.h
1010
cp -rpv ../ggml/src/ggml-alloc.c ./ggml/src/ggml-alloc.c
1111
cp -rpv ../ggml/src/ggml-backend-impl.h ./ggml/src/ggml-backend-impl.h
12-
cp -rpv ../ggml/src/ggml-backend.c ./ggml/src/ggml-backend.c
12+
cp -rpv ../ggml/src/ggml-backend.cpp ./ggml/src/ggml-backend.cpp
1313
cp -rpv ../ggml/src/ggml-cann/* ./ggml/src/ggml-cann/
1414
cp -rpv ../ggml/src/ggml-cann.cpp ./ggml/src/ggml-cann.cpp
1515
cp -rpv ../ggml/src/ggml-common.h ./ggml/src/ggml-common.h

0 commit comments

Comments
 (0)