yikf opened a new pull request, #13115:
URL: https://github.com/apache/gluten/pull/13115

   
   
   <!--
   Thank you for submitting a pull request! Here are some tips:
   
   1. For first-time contributors, please read our contributing guide:
      https://github.com/apache/gluten/blob/main/CONTRIBUTING.md
   2. If necessary, create a GitHub issue for discussion beforehand to avoid 
duplicate work.
   3. If the PR is specific to a single backend, include [VL] or [CH] in the PR 
title to indicate the
      Velox or ClickHouse backend, respectively.
   4. If the PR is not ready for review, please mark it as a draft.
   -->
   
   ## What changes are proposed in this pull request?
   The parallel broadcast hash-table build path (numThreads > 1 in 
HashJoinBuilder.nativeBuild) dispatched its CPU-bound build tasks onto 
VeloxBackend::ioExecutor(). That executor is reserved for async IO tasks (split 
preloading, DirectBufferedInput).
   
   ```cpp
   
   // FIXME: This reuses the io executor which is supposed to only serve async 
IO tasks.
   auto executor = VeloxBackend::get()->ioExecutor();
   Running CPU-heavy hash-table build work on the IO pool makes it contend with
   genuine IO work on the same threads.
   ```
   
   This PR introduces a dedicated, lazily-created CPU thread pool 
(VeloxBackend::hashTableBuildExecutor()), following the existing 
getReaderThreadPool() std::call_once pattern, and switches both places that 
previously reused the io executor:
   
   1. the parallel build task dispatch (folly::via(executor, ...)), and
   2. the parallel join-table merge passed to prepareJoinTable(...).
   
   The pool size is controlled by a new native config key 
spark.gluten.sql.columnar.backend.velox.hashTableBuildThreads. A value <= 0 
(the default) falls back to kNumTaskSlotsPerExecutor, i.e. the same sizing this 
path previously inherited from the io executor. So default behavior is 
unchanged — this is a pool-isolation change, not a concurrency change. The key 
is native-only and passed through via the 
spark.gluten.sql.columnar.backend.velox. prefix, mirroring how spillThreadNum 
is handled.
   
   <!--
   Provide a clear and concise description of the changes introduced in this PR.
   Ensure the PR description aligns with the code changes, especially after 
updates.
   If applicable, include "Fixes #<GitHub_Issue_ID>" to automatically close the 
corresponding issue
   when the PR is merged.
   -->
   
   ## How was this patch tested?
   GA.
   <!--
   Describe how the changes were tested, if applicable.
   Include new tests to validate the functionality, if necessary.
   For UI-related changes, attach screenshots to demonstrate the updates.
   -->
   
   ## Was this patch authored or co-authored using generative AI tooling?
   
   <!--
   If generative AI tooling has been used in the process of authoring this 
patch, please include the
   phrase: 'Generated-by: ' followed by the name of the tool and its version.
   If no, write 'No'.
   Please refer to the [ASF Generative Tooling 
Guidance](https://www.apache.org/legal/generative-tooling.html) for details.
   -->
   Generated-by: Claude claude-opus-4-8


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to