mirror of
https://github.com/zebrajr/ollama.git
synced 2025-12-06 12:19:56 +01:00
vulkan: Get FilterID from Backend for Vulkan (#12655)
* vulkan: Get FilterID from Backend for Vulkan * Fixing patch
This commit is contained in:
parent
4be41d2d45
commit
c744134287
|
|
@ -550,13 +550,6 @@ func bootstrapDevices(ctx context.Context, ollamaLibDirs []string, extraEnvs []s
|
||||||
}
|
}
|
||||||
logutil.Trace("runner enumerated devices", "OLLAMA_LIBRARY_PATH", ollamaLibDirs, "devices", devices)
|
logutil.Trace("runner enumerated devices", "OLLAMA_LIBRARY_PATH", ollamaLibDirs, "devices", devices)
|
||||||
|
|
||||||
// Enumerate returned devices starting at 0 per library and assign the per-library index as FilteredID
|
|
||||||
libCounts := make(map[string]int)
|
|
||||||
for i := range devices {
|
|
||||||
lib := devices[i].Library
|
|
||||||
devices[i].FilteredID = strconv.Itoa(libCounts[lib])
|
|
||||||
libCounts[lib]++
|
|
||||||
}
|
|
||||||
return devices
|
return devices
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ diff --git a/ggml/include/ggml-backend.h b/ggml/include/ggml-backend.h
|
||||||
index ba181d09..09ff75f9 100644
|
index ba181d09..09ff75f9 100644
|
||||||
--- a/ggml/include/ggml-backend.h
|
--- a/ggml/include/ggml-backend.h
|
||||||
+++ b/ggml/include/ggml-backend.h
|
+++ b/ggml/include/ggml-backend.h
|
||||||
@@ -169,6 +169,15 @@ extern "C" {
|
@@ -169,6 +169,17 @@ extern "C" {
|
||||||
const char * device_id;
|
const char * device_id;
|
||||||
// device capabilities
|
// device capabilities
|
||||||
struct ggml_backend_dev_caps caps;
|
struct ggml_backend_dev_caps caps;
|
||||||
|
|
@ -35,6 +35,8 @@ index ba181d09..09ff75f9 100644
|
||||||
+ int pci_device_id;
|
+ int pci_device_id;
|
||||||
+ int pci_domain_id;
|
+ int pci_domain_id;
|
||||||
+ const char *library;
|
+ const char *library;
|
||||||
|
+ // number with which the devices are accessed (Vulkan)
|
||||||
|
+ const char *numeric_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
GGML_API const char * ggml_backend_dev_name(ggml_backend_dev_t device);
|
GGML_API const char * ggml_backend_dev_name(ggml_backend_dev_t device);
|
||||||
|
|
|
||||||
|
|
@ -175,7 +175,7 @@ index adea7783..fb7204ce 100644
|
||||||
ggml_backend_vk_device_get_memory(dev, &props->memory_free, &props->memory_total);
|
ggml_backend_vk_device_get_memory(dev, &props->memory_free, &props->memory_total);
|
||||||
props->caps = {
|
props->caps = {
|
||||||
/* .async = */ false,
|
/* .async = */ false,
|
||||||
@@ -12564,6 +12633,16 @@ static void ggml_backend_vk_device_get_props(ggml_backend_dev_t dev, struct ggml
|
@@ -12564,6 +12633,17 @@ static void ggml_backend_vk_device_get_props(ggml_backend_dev_t dev, struct ggml
|
||||||
/* .buffer_from_host_ptr = */ false,
|
/* .buffer_from_host_ptr = */ false,
|
||||||
/* .events = */ false,
|
/* .events = */ false,
|
||||||
};
|
};
|
||||||
|
|
@ -189,6 +189,7 @@ index adea7783..fb7204ce 100644
|
||||||
+ props->pci_device_id = ctx->pci_device_id;
|
+ props->pci_device_id = ctx->pci_device_id;
|
||||||
+ props->pci_domain_id = ctx->pci_domain_id;
|
+ props->pci_domain_id = ctx->pci_domain_id;
|
||||||
+ props->library = GGML_VK_NAME;
|
+ props->library = GGML_VK_NAME;
|
||||||
|
+ props->numeric_id = ctx->id.empty() ? nullptr : ctx->id.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
static ggml_backend_t ggml_backend_vk_device_init(ggml_backend_dev_t dev, const char * params) {
|
static ggml_backend_t ggml_backend_vk_device_init(ggml_backend_dev_t dev, const char * params) {
|
||||||
|
|
|
||||||
|
|
@ -726,6 +726,9 @@ func (b *Backend) BackendDevices() []ml.DeviceInfo {
|
||||||
}
|
}
|
||||||
info.PCIID = fmt.Sprintf("%02x:%02x.%x", props.pci_bus_id, props.pci_device_id, props.pci_domain_id)
|
info.PCIID = fmt.Sprintf("%02x:%02x.%x", props.pci_bus_id, props.pci_device_id, props.pci_domain_id)
|
||||||
info.LibraryPath = ggml.LibPaths()
|
info.LibraryPath = ggml.LibPaths()
|
||||||
|
if props.numeric_id != nil {
|
||||||
|
info.FilteredID = C.GoString(props.numeric_id)
|
||||||
|
}
|
||||||
|
|
||||||
C.ggml_backend_dev_memory(dev, &props.memory_free, &props.memory_total)
|
C.ggml_backend_dev_memory(dev, &props.memory_free, &props.memory_total)
|
||||||
info.TotalMemory = (uint64)(props.memory_total)
|
info.TotalMemory = (uint64)(props.memory_total)
|
||||||
|
|
|
||||||
2
ml/backend/ggml/ggml/include/ggml-backend.h
vendored
2
ml/backend/ggml/ggml/include/ggml-backend.h
vendored
|
|
@ -178,6 +178,8 @@ extern "C" {
|
||||||
int pci_device_id;
|
int pci_device_id;
|
||||||
int pci_domain_id;
|
int pci_domain_id;
|
||||||
const char *library;
|
const char *library;
|
||||||
|
// number with which the devices are accessed (Vulkan)
|
||||||
|
const char *numeric_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
GGML_API const char * ggml_backend_dev_name(ggml_backend_dev_t device);
|
GGML_API const char * ggml_backend_dev_name(ggml_backend_dev_t device);
|
||||||
|
|
|
||||||
|
|
@ -12640,6 +12640,7 @@ static void ggml_backend_vk_device_get_props(ggml_backend_dev_t dev, struct ggml
|
||||||
props->pci_device_id = ctx->pci_device_id;
|
props->pci_device_id = ctx->pci_device_id;
|
||||||
props->pci_domain_id = ctx->pci_domain_id;
|
props->pci_domain_id = ctx->pci_domain_id;
|
||||||
props->library = GGML_VK_NAME;
|
props->library = GGML_VK_NAME;
|
||||||
|
props->numeric_id = ctx->id.empty() ? nullptr : ctx->id.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
static ggml_backend_t ggml_backend_vk_device_init(ggml_backend_dev_t dev, const char * params) {
|
static ggml_backend_t ggml_backend_vk_device_init(ggml_backend_dev_t dev, const char * params) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user