[
https://issues.apache.org/jira/browse/ARROW-7001?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Antoine Pitrou updated ARROW-7001:
----------------------------------
Fix Version/s: (was: 3.0.0)
4.0.0
> [C++] Develop threading APIs to accommodate nested parallelism
> ---------------------------------------------------------------
>
> Key: ARROW-7001
> URL: https://issues.apache.org/jira/browse/ARROW-7001
> Project: Apache Arrow
> Issue Type: New Feature
> Components: C++
> Reporter: Wes McKinney
> Assignee: Weston Pace
> Priority: Major
> Fix For: 4.0.0
>
>
> Tasks invoked in parallel may be able to submit their own subtasks, which in
> OpenMP and TBB documentation is often called "nested parallelism".
> If a task blocks on the completion of subtasks, then outright deadlocks are
> possible -- running tasks are all blocking on their subtasks, but the thread
> pool will not schedule any further tasks.
> I suggest that such code have a way to indicate to the thread pool (if one is
> passed in) that it is blocking on the completion of other tasks so that
> further tasks can be run while the task waits for its child tasks to
> complete. One possible way to do this is to have a floating "soft limit" for
> concurrent tasks that can be incremented when tasks are waiting.
> So if we normally allow 8 concurrent tasks, then this can be temporarily
> increased for each "suspended" task. Preferably we would provide some way for
> the dependent task group to "awaken" the suspended task so that it does not
> have to do any work while waiting for the task group to finish
> Note this feature can also be used in tasks that are waiting for IO calls
--
This message was sent by Atlassian Jira
(v8.3.4#803005)