From: Shupei Fan Date: Fri, 1 Nov 2024 18:33:14 +0000 (+0800) Subject: vulkan : improve ggml_vk_create_buffer error handling (llama/9898) X-Git-Tag: upstream/0.0.1642~246 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=341ff9d7842d935ae17040116506b41e5591c0a1;p=pkg%2Fggml%2Fsources%2Fggml vulkan : improve ggml_vk_create_buffer error handling (llama/9898) --- diff --git a/src/ggml-vulkan.cpp b/src/ggml-vulkan.cpp index 83c37ea9..a8e78c4d 100644 --- a/src/ggml-vulkan.cpp +++ b/src/ggml-vulkan.cpp @@ -1047,7 +1047,6 @@ static vk_buffer ggml_vk_create_buffer(vk_device& device, size_t size, vk::Memor return buf; } - buf->size = size; vk::BufferCreateInfo buffer_create_info{ vk::BufferCreateFlags(), size, @@ -1075,7 +1074,6 @@ static vk_buffer ggml_vk_create_buffer(vk_device& device, size_t size, vk::Memor if (memory_type_index == UINT32_MAX) { device->device.destroyBuffer(buf->buffer); - buf->size = 0; throw vk::OutOfDeviceMemoryError("No suitable memory type found"); } @@ -1092,13 +1090,11 @@ static vk_buffer ggml_vk_create_buffer(vk_device& device, size_t size, vk::Memor } catch (const vk::SystemError& e) { device->device.destroyBuffer(buf->buffer); - buf->size = 0; throw e; } } else { // Out of Host/Device memory, clean up buffer device->device.destroyBuffer(buf->buffer); - buf->size = 0; throw e; } } @@ -1111,6 +1107,7 @@ static vk_buffer ggml_vk_create_buffer(vk_device& device, size_t size, vk::Memor device->device.bindBufferMemory(buf->buffer, buf->device_memory, 0); buf->device = device; + buf->size = size; #ifdef GGML_VULKAN_MEMORY_DEBUG device->memory_logger->log_allocation(buf, size);