Use GNU make tokenpool protocol to manage parallelism of doctesting#36640
Use GNU make tokenpool protocol to manage parallelism of doctesting#36640vbraun merged 9 commits intosagemath:developfrom
Conversation
|
Do we have to make it standard? Other than that I think all it needs is some doc updates:
|
I think nothing is gained by making it optional. It's a very simple Python script |
|
I've made the documentation changes in 39a1926 |
orlitzky
left a comment
There was a problem hiding this comment.
I'm happy with it now, thanks.
Some day we might be able to replace SAGE_NUM_THREADS in the build entirely, but I'm not going to think about it too hard until ninja supports the job server.
|
Thank you! |
|
Please don't push broken PRs to me, wtf. You are only allowed to remove the needs work after you actually check that it works. |
|
Sorry, I'll check what went wrong here. |
|
Documentation preview for this PR (built with commit 1dc6d36; changes) is ready! 🎉 |
|
All green now. |
sagemathgh-36640: Use GNU make tokenpool protocol to manage parallelism of doctesting <!-- ^^^^^ Please provide a concise, informative and self-explanatory title. Don't put issue numbers in there, do this in the PR body below. For example, instead of "Fixes sagemath#1234" use "Introduce new method to calculate 1+1" --> <!-- Describe your changes here in detail --> This is useful when running our doctester in parallel with other build steps, or several doctesters in parallel, as happens for example in `make SAGE_CHECK=yes pypi-wheels`, and more of that after sagemath#35095. To test: ``` MAKE="make -j14" make SAGE_NUM_THREADS=100 DEBUG_JOBCLIENT=1 ptest ``` This will make the doctester attempt to use 100 workers, but it will only get tokens for 14 workers from `make`. `DEBUG_JOBCLIENT=1` shows what's happening. Upstream PR: - milahu/gnumake-tokenpool#3 (merged) <!-- Why is this change required? What problem does it solve? --> <!-- If this PR resolves an open issue, please link to it here. For example "Fixes sagemath#12345". --> - Resolves sagemath#30369 <!-- If your change requires a documentation PR, please link it appropriately. --> ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [x] The title is concise, informative, and self-explanatory. - [ ] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. - [ ] I have created tests covering the changes. - [ ] I have updated the documentation accordingly. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on - sagemath#12345: short description why this is a dependency - sagemath#34567: ... --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> URL: sagemath#36640 Reported by: Matthias Köppe Reviewer(s): Michael Orlitzky
|
This PR seems to be causing alarm problems on OS X, as reported at https://groups.google.com/g/sage-release/c/uP-rwlM__MU/m/MuI_BhfmCQAJ. It may be fine on older versions of OS X, according to someone else's experience. |
|
How to reproduce these failures? Do they show with |
|
The |
I've only seen them with |
If I remember correctly, I also see this in 10.2.beta1, so it's not related to this PR. I don't know how long it's been happening. (I also see it on a linux virtual machine running on my Intel mac, so it's not just OS X.) |
|
It may be related to #33428 |
|
I consider these alarm doctest failures to be a blocker issue. Aside from reverting this PR, what options are there? |
|
Could you open a new Issue please with a clear reproducer (and distinguishing between |
See #36944. |
This is useful when running our doctester in parallel with other build steps, or several doctesters in parallel, as happens for example in
make SAGE_CHECK=yes pypi-wheels, and more of that after #35095.To test:
This will make the doctester attempt to use 100 workers, but it will only get tokens for 14 workers from
make.DEBUG_JOBCLIENT=1shows what's happening.Upstream PR:
📝 Checklist
⌛ Dependencies