Spaces:
Sleeping
Sleeping
vulkan : improve ggml_vk_create_buffer error handling (llama/9898)
Browse files- ggml/src/ggml-vulkan.cpp +1 -4
ggml/src/ggml-vulkan.cpp
CHANGED
|
@@ -1047,7 +1047,6 @@ static vk_buffer ggml_vk_create_buffer(vk_device& device, size_t size, vk::Memor
|
|
| 1047 |
return buf;
|
| 1048 |
}
|
| 1049 |
|
| 1050 |
-
buf->size = size;
|
| 1051 |
vk::BufferCreateInfo buffer_create_info{
|
| 1052 |
vk::BufferCreateFlags(),
|
| 1053 |
size,
|
|
@@ -1075,7 +1074,6 @@ static vk_buffer ggml_vk_create_buffer(vk_device& device, size_t size, vk::Memor
|
|
| 1075 |
|
| 1076 |
if (memory_type_index == UINT32_MAX) {
|
| 1077 |
device->device.destroyBuffer(buf->buffer);
|
| 1078 |
-
buf->size = 0;
|
| 1079 |
throw vk::OutOfDeviceMemoryError("No suitable memory type found");
|
| 1080 |
}
|
| 1081 |
|
|
@@ -1092,13 +1090,11 @@ static vk_buffer ggml_vk_create_buffer(vk_device& device, size_t size, vk::Memor
|
|
| 1092 |
}
|
| 1093 |
catch (const vk::SystemError& e) {
|
| 1094 |
device->device.destroyBuffer(buf->buffer);
|
| 1095 |
-
buf->size = 0;
|
| 1096 |
throw e;
|
| 1097 |
}
|
| 1098 |
} else {
|
| 1099 |
// Out of Host/Device memory, clean up buffer
|
| 1100 |
device->device.destroyBuffer(buf->buffer);
|
| 1101 |
-
buf->size = 0;
|
| 1102 |
throw e;
|
| 1103 |
}
|
| 1104 |
}
|
|
@@ -1111,6 +1107,7 @@ static vk_buffer ggml_vk_create_buffer(vk_device& device, size_t size, vk::Memor
|
|
| 1111 |
device->device.bindBufferMemory(buf->buffer, buf->device_memory, 0);
|
| 1112 |
|
| 1113 |
buf->device = device;
|
|
|
|
| 1114 |
|
| 1115 |
#ifdef GGML_VULKAN_MEMORY_DEBUG
|
| 1116 |
device->memory_logger->log_allocation(buf, size);
|
|
|
|
| 1047 |
return buf;
|
| 1048 |
}
|
| 1049 |
|
|
|
|
| 1050 |
vk::BufferCreateInfo buffer_create_info{
|
| 1051 |
vk::BufferCreateFlags(),
|
| 1052 |
size,
|
|
|
|
| 1074 |
|
| 1075 |
if (memory_type_index == UINT32_MAX) {
|
| 1076 |
device->device.destroyBuffer(buf->buffer);
|
|
|
|
| 1077 |
throw vk::OutOfDeviceMemoryError("No suitable memory type found");
|
| 1078 |
}
|
| 1079 |
|
|
|
|
| 1090 |
}
|
| 1091 |
catch (const vk::SystemError& e) {
|
| 1092 |
device->device.destroyBuffer(buf->buffer);
|
|
|
|
| 1093 |
throw e;
|
| 1094 |
}
|
| 1095 |
} else {
|
| 1096 |
// Out of Host/Device memory, clean up buffer
|
| 1097 |
device->device.destroyBuffer(buf->buffer);
|
|
|
|
| 1098 |
throw e;
|
| 1099 |
}
|
| 1100 |
}
|
|
|
|
| 1107 |
device->device.bindBufferMemory(buf->buffer, buf->device_memory, 0);
|
| 1108 |
|
| 1109 |
buf->device = device;
|
| 1110 |
+
buf->size = size;
|
| 1111 |
|
| 1112 |
#ifdef GGML_VULKAN_MEMORY_DEBUG
|
| 1113 |
device->memory_logger->log_allocation(buf, size);
|