mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-11-04 09:32:00 +00:00 
			
		
		
		
	vulkan : retry allocation with fallback flags (whisper/2451)
Co-authored-by: Samuel Morris <samuel.morris@artlist.io>
This commit is contained in:
		
				
					committed by
					
						
						Georgi Gerganov
					
				
			
			
				
	
			
			
			
						parent
						
							8c475b97b8
						
					
				
				
					commit
					b0915d5b51
				
			@@ -1070,10 +1070,25 @@ static vk_buffer ggml_vk_create_buffer(vk_device& device, size_t size, vk::Memor
 | 
			
		||||
    try {
 | 
			
		||||
        buf->device_memory = device->device.allocateMemory({ mem_req.size, memory_type_index });
 | 
			
		||||
    } catch (const vk::SystemError& e) {
 | 
			
		||||
        // Out of Host/Device memory, clean up buffer
 | 
			
		||||
        device->device.destroyBuffer(buf->buffer);
 | 
			
		||||
        buf->size = 0;
 | 
			
		||||
        throw e;
 | 
			
		||||
        if (buf->memory_property_flags != fallback_flags) {
 | 
			
		||||
            // Try again with fallback flags
 | 
			
		||||
            memory_type_index = find_properties(&mem_props, &mem_req, fallback_flags);
 | 
			
		||||
            buf->memory_property_flags = fallback_flags;
 | 
			
		||||
 | 
			
		||||
            try {
 | 
			
		||||
                buf->device_memory = device->device.allocateMemory({ mem_req.size, memory_type_index });
 | 
			
		||||
            }
 | 
			
		||||
            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;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    buf->ptr = nullptr;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user