Skip to content

Avoid nested thread-pool locking in parallel_for - #22663

Open
JakeStevens wants to merge 1 commit into
pytorch:mainfrom
JakeStevens:export-D119433132
Open

Avoid nested thread-pool locking in parallel_for#22663
JakeStevens wants to merge 1 commit into
pytorch:mainfrom
JakeStevens:export-D119433132

Conversation

@JakeStevens

Copy link
Copy Markdown
Contributor

Summary:
Using Kleidi can invoke parallel_for inside an existing pool task. Calculating the inner chunk size queries the pool's thread count and relocks the mutex held by the outer call, hanging real model inference even with one thread.

Honor NoThreadPoolGuard before querying the pool. Run nested nonempty ranges directly and preserve the outer thread number used for per-thread scratch storage. Cover nested work, thread-number preservation, and empty ranges in both source mirrors.

AI-assisted: Codex.

Differential Revision: D119433132

Summary:
Using Kleidi can invoke `parallel_for` inside an existing pool task. Calculating the inner chunk size queries the pool's thread count and relocks the mutex held by the outer call, hanging real model inference even with one thread.

Honor `NoThreadPoolGuard` before querying the pool. Run nested nonempty ranges directly and preserve the outer thread number used for per-thread scratch storage. Cover nested work, thread-number preservation, and empty ranges in both source mirrors.

AI-assisted: Codex.

Differential Revision: D119433132
@pytorch-bot

pytorch-bot Bot commented Sep 10, 2026

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/22663

Note: Links to docs will display an error until the docs builds have been completed.

❌ 5 New Failures

As of commit 795b7d5 with merge base 897fc8e (image):

NEW FAILURES - The following jobs have failed:

  • Build Presets / apple (ios) / build (gh)
    ##[error]fatal: unable to access 'https://github.com/pytorch/cpuinfo.git/': Could not resolve host: github.com
  • Cadence Build & Test / cpu-test / Resolve CI docker image / resolve (gh)
    ##[error]Refusing to check out fork pull request code from a 'pull_request_target' workflow. This workflow runs with the base repository's GITHUB_TOKEN, secrets, default-branch cache scope, and runner access. Fetching and executing a fork's code in that trusted context commonly leads to "pwn request" vulnerabilities. To opt in, review the risks at https://gh.io/securely-using-pull_request_target and set 'allow-unsafe-pr-checkout: true' on the actions/checkout step.
  • Cadence Build & Test / hifi-build / hifi4 (gh)
    ##[error]Refusing to check out fork pull request code from a 'pull_request_target' workflow. This workflow runs with the base repository's GITHUB_TOKEN, secrets, default-branch cache scope, and runner access. Fetching and executing a fork's code in that trusted context commonly leads to "pwn request" vulnerabilities. To opt in, review the risks at https://gh.io/securely-using-pull_request_target and set 'allow-unsafe-pr-checkout: true' on the actions/checkout step.
  • Cadence Build & Test / vision-build / vision (gh)
    ##[error]Refusing to check out fork pull request code from a 'pull_request_target' workflow. This workflow runs with the base repository's GITHUB_TOKEN, secrets, default-branch cache scope, and runner access. Fetching and executing a fork's code in that trusted context commonly leads to "pwn request" vulnerabilities. To opt in, review the risks at https://gh.io/securely-using-pull_request_target and set 'allow-unsafe-pr-checkout: true' on the actions/checkout step.
  • Lint / lintrunner (gh)
    >>> Lint for extension/threadpool/test/thread_parallel_test.cpp:

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@meta-codesync

meta-codesync Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

@JakeStevens has exported this pull request. If you are a Meta employee, you can view the originating Diff in D119433132.

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Sep 10, 2026
@github-actions

Copy link
Copy Markdown

This PR needs a release notes: label

If your change should be included in the release notes (i.e. would users of this library care about this change?), please use a label starting with release notes:. This helps us keep track and include your important work in the next release notes.

To add a label, you can comment to pytorchbot, for example
@pytorchbot label "release notes: none"

For more information, see
https://github.com/pytorch/pytorch/wiki/PyTorch-AutoLabel-Bot#why-categorize-for-release-notes-and-how-does-it-work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. meta-exported

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant