From ba40f88b765eaea91108347413fb5c67c385ab00 Mon Sep 17 00:00:00 2001 From: Vishal Jain Date: Fri, 18 Jul 2025 06:50:33 -0500 Subject: [PATCH 1/4] VitisAI: removed 4k alignment from preferred allocator - Short term solution for IO binding issue with update_inplace method of OrtValue --- .../core/providers/vitisai/vitisai_execution_provider.cc | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc b/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc index b672aa8bb35be..601245aad0edb 100644 --- a/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc +++ b/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc @@ -28,9 +28,8 @@ VitisAIExecutionProvider::VitisAIExecutionProvider( const ProviderOptions& info) : IExecutionProvider{onnxruntime::kVitisAIExecutionProvider, OrtDevice(OrtDevice::CPU, OrtDevice::MemType::DEFAULT, OrtDevice::VendorIds::NONE, - DEFAULT_CPU_ALLOCATOR_DEVICE_ID, - kAlloc4KAlignment)}, - info_(info) { + DEFAULT_CPU_ALLOCATOR_DEVICE_ID)}, + info_(info) { // Removed 4k alignment for now, need better fix auto it = info_.find("ep_context_enable"); ep_ctx_enabled_ = it != info_.end() && it->second == "1"; it = info_.find("ep_context_embed_mode"); @@ -156,8 +155,7 @@ std::vector VitisAIExecutionProvider::CreatePreferredAllocators() OrtMemoryInfo( onnxruntime::CPU_ALIGNED_4K, OrtAllocatorType::OrtDeviceAllocator, OrtDevice(OrtDevice::CPU, OrtDevice::MemType::DEFAULT, OrtDevice::VendorIds::NONE, - device_id, - kAlloc4KAlignment))); + device_id))); // Removed 4k alignment for now, need better fix }, DEFAULT_CPU_ALLOCATOR_DEVICE_ID, use_arena_false}; From 831d3dad2a2fd855af56d2b21575e186da3bdbbf Mon Sep 17 00:00:00 2001 From: Vishal Jain Date: Fri, 18 Jul 2025 12:48:01 -0500 Subject: [PATCH 2/4] VitisAI: Fix lint --- .../core/providers/vitisai/vitisai_execution_provider.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc b/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc index 601245aad0edb..35af7c8ea6150 100644 --- a/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc +++ b/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc @@ -29,7 +29,7 @@ VitisAIExecutionProvider::VitisAIExecutionProvider( : IExecutionProvider{onnxruntime::kVitisAIExecutionProvider, OrtDevice(OrtDevice::CPU, OrtDevice::MemType::DEFAULT, OrtDevice::VendorIds::NONE, DEFAULT_CPU_ALLOCATOR_DEVICE_ID)}, - info_(info) { // Removed 4k alignment for now, need better fix + info_(info) { // Removed 4k alignment for now, need better fix auto it = info_.find("ep_context_enable"); ep_ctx_enabled_ = it != info_.end() && it->second == "1"; it = info_.find("ep_context_embed_mode"); @@ -155,7 +155,7 @@ std::vector VitisAIExecutionProvider::CreatePreferredAllocators() OrtMemoryInfo( onnxruntime::CPU_ALIGNED_4K, OrtAllocatorType::OrtDeviceAllocator, OrtDevice(OrtDevice::CPU, OrtDevice::MemType::DEFAULT, OrtDevice::VendorIds::NONE, - device_id))); // Removed 4k alignment for now, need better fix + device_id))); // Removed 4k alignment for now, need better fix }, DEFAULT_CPU_ALLOCATOR_DEVICE_ID, use_arena_false}; From d8ad2b61d05a9071a1f5dfa2ee32940612e1a710 Mon Sep 17 00:00:00 2001 From: Vishal Jain Date: Mon, 21 Jul 2025 06:11:50 -0500 Subject: [PATCH 3/4] VitisAI: Use arena allocator with no 4k alignment --- .../vitisai/vitisai_execution_provider.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc b/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc index 35af7c8ea6150..ff5e0c8eaf450 100644 --- a/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc +++ b/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc @@ -147,19 +147,21 @@ std::unique_ptr VitisAIExecutionProvider::GetProfiler() { std::vector VitisAIExecutionProvider::CreatePreferredAllocators() { std::vector result; - // We do not want arena for this, as it would not respect alignment. - constexpr const bool use_arena_false = false; - AllocatorCreationInfo device_info_cpu_aligned_4k{ + // We do not want arena for 4k alignment, as it would not respect alignment. + // For CPU, use arena + // Removed 4k alignment for now, need better fix + constexpr const bool use_arena = true; + AllocatorCreationInfo device_info_cpu{ [](OrtDevice::DeviceId device_id) { return std::make_unique( OrtMemoryInfo( - onnxruntime::CPU_ALIGNED_4K, OrtAllocatorType::OrtDeviceAllocator, + onnxruntime::CPU, OrtAllocatorType::OrtDeviceAllocator, OrtDevice(OrtDevice::CPU, OrtDevice::MemType::DEFAULT, OrtDevice::VendorIds::NONE, - device_id))); // Removed 4k alignment for now, need better fix + device_id))); }, - DEFAULT_CPU_ALLOCATOR_DEVICE_ID, use_arena_false}; + DEFAULT_CPU_ALLOCATOR_DEVICE_ID, use_arena}; - result.push_back(CreateAllocator(device_info_cpu_aligned_4k)); + result.push_back(CreateAllocator(device_info_cpu)); return result; } From 60bf1c2ba1d06ec221f3ca807108e299d86800ec Mon Sep 17 00:00:00 2001 From: Vishal Jain Date: Mon, 21 Jul 2025 12:16:12 -0500 Subject: [PATCH 4/4] VitisAI: add descriptive naming for local vars --- .../core/providers/vitisai/vitisai_execution_provider.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc b/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc index ff5e0c8eaf450..6cafc0495aa6b 100644 --- a/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc +++ b/onnxruntime/core/providers/vitisai/vitisai_execution_provider.cc @@ -150,7 +150,7 @@ std::vector VitisAIExecutionProvider::CreatePreferredAllocators() // We do not want arena for 4k alignment, as it would not respect alignment. // For CPU, use arena // Removed 4k alignment for now, need better fix - constexpr const bool use_arena = true; + constexpr const bool use_arena_true = true; AllocatorCreationInfo device_info_cpu{ [](OrtDevice::DeviceId device_id) { return std::make_unique( @@ -159,7 +159,7 @@ std::vector VitisAIExecutionProvider::CreatePreferredAllocators() OrtDevice(OrtDevice::CPU, OrtDevice::MemType::DEFAULT, OrtDevice::VendorIds::NONE, device_id))); }, - DEFAULT_CPU_ALLOCATOR_DEVICE_ID, use_arena}; + DEFAULT_CPU_ALLOCATOR_DEVICE_ID, use_arena_true}; result.push_back(CreateAllocator(device_info_cpu)); return result;