From da09a02b816fa8d1c5dd022aab04daa2586a89aa Mon Sep 17 00:00:00 2001 From: 0cc4m Date: Sat, 30 Sep 2023 10:32:11 +0200 Subject: [PATCH] Add multi-submit for command buffers --- ggml-vulkan.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ggml-vulkan.cpp b/ggml-vulkan.cpp index 19b3dd397..63fd71d6c 100644 --- a/ggml-vulkan.cpp +++ b/ggml-vulkan.cpp @@ -50,8 +50,6 @@ #define VK_DEVICE_DESCRIPTOR_POOL_MODE_MULTI 1 #define VK_DEVICE_DESCRIPTOR_POOL_MODE_SINGLE 2 -#define VK_SUBMIT_BATCH 3 - #define VK_NUM_TYPES 16 #ifndef K_QUANTS_PER_ITERATION @@ -166,6 +164,7 @@ struct vk_staging_memcpy { }; struct ggml_vk_tensor_extra_gpu { + uint32_t batch_size; std::vector buffer_idx; std::vector memcpys; @@ -1243,10 +1242,14 @@ void ggml_vk_host_free(void* ptr) { vk_pinned_memory.erase(vk_pinned_memory.begin() + index); } -static vk_submission ggml_vk_begin_submission(vk_queue& q) { +static vk_submission ggml_vk_begin_submission(vk_queue& q, bool one_time = true) { vk_submission s; s.buffer = ggml_vk_create_cmd_buffer(q); - s.buffer.begin({ vk::CommandBufferUsageFlagBits::eOneTimeSubmit }); + if (one_time) { + s.buffer.begin({ vk::CommandBufferUsageFlagBits::eOneTimeSubmit }); + } else { + s.buffer.begin({ vk::CommandBufferUsageFlags{} }); + } return s; }