shupeif commited on
Commit
2ce4d02
·
1 Parent(s): 3f0b7ba

vulkan : improve ggml_vk_create_buffer error handling (llama/9898)

Browse files
Files changed (1) hide show
  1. 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);