#12016: parallelism in Sage: just use value of 'MAKE'
----------------------------------------------+-----------------------------
Reporter: jhpalmieri | Owner: GeorgSWeber
Type: enhancement | Status: closed
Priority: critical | Milestone: sage-4.8
Component: build | Resolution: fixed
Keywords: | Work_issues:
Upstream: N/A | Reviewer: John Palmieri,
Jeroen Demeyer
Author: John Palmieri, Jeroen Demeyer | Merged: sage-4.8.alpha5
Dependencies: sage-4.8.alpha4 |
----------------------------------------------+-----------------------------
Description changed by jdemeyer:
Old description:
> The various parallel aspects of Sage should be controlled by setting the
> `-j` (possible also `-l`) flags in `MAKE` or `MAKEFLAGS`. That is, if
> `MAKE='make -j16'`, then
>
> - running `make` will build spkg's in parallel, using 16 processes (this
> was done in #11959). This is standard `make` behaviour, but we need to
> patch `spkg/standard/deps` to ensure that `make` recognizes that we are
> doing a recursive make.
>
> - running `make ptestlong` or `sage -tp 0 <files>` will doctest in
> parallel using 16 threads. If the `-j` flag in `MAKE` is not set, then
> determine the number of threads as before: `min(8, cpu_count())`.
>
> - running `./sage -b` will build the Sage library using 16 threads. If
> the `-j` flag in `MAKE` is not set, then use only 1 thread.
>
> '''Testing this ticket''': you can set the environment variable
> `SAGE_NUM_CORES` to the number of cores you want to pretend to have. For
> example, running
> {{{
> SAGE_NUM_CORES=24 make ptestlong
> }}}
> should run 8 threads (see `sage-num-threads.py`; this is undocumented
> because the only purpose I see is for testing this ticket).
>
> '''Notes''':
> With the patches applied, building spkgs in parallel works well, except
> for race conditions in:
> * python (#12096)
> * singular (#12137)
> * zlib (#12138)
> * mpir (#12139)
> and a "jobserver unavailable" warning in:
> * ntl
> * singular (#12137)
> * rubiks
>
> '''Apply''':
> 1. [attachment:12016-root.patch] to the `SAGE_ROOT` repository.
> 1. [attachment:12016-base.patch] to `spkg/base`.
> 1. [attachment:12016-scripts.patch] and [attachment:trac_12016-scripts-
> ref.patch] to the `SCRIPTS` repository.
> 1. [attachment:12016-sage.patch] to the Sage library.
>
> See also: #6495 to implement the same behavior for doc building.
New description:
The various parallel aspects of Sage should be controlled by setting the
`-j` (possible also `-l`) flags in `MAKE` or `MAKEFLAGS`. That is, if
`MAKE='make -j16'`, then
- running `make` will build spkg's in parallel, using 16 processes (this
was done in #11959). This is standard `make` behaviour, but we need to
patch `spkg/standard/deps` to ensure that `make` recognizes that we are
doing a recursive make.
- running `make ptestlong` or `sage -tp 0 <files>` will doctest in
parallel using 16 threads. If the `-j` flag in `MAKE` is not set, then
determine the number of threads as before: `min(8, cpu_count())`.
- running `./sage -b` will build the Sage library using 16 threads. If
the `-j` flag in `MAKE` is not set, then use only 1 thread.
'''Testing this ticket''': you can set the environment variable
`SAGE_NUM_CORES` to the number of cores you want to pretend to have. For
example, running
{{{
SAGE_NUM_CORES=24 make ptestlong
}}}
should run 8 threads (see `sage-num-threads.py`; this is undocumented
because the only purpose I see is for testing this ticket).
'''Notes''':
With the patches applied, building spkgs in parallel works well, except
for race conditions in:
* python (#12096)
* singular (#12137)
* zlib (#12138)
* mpir (#12139)
* atlas on Solaris (#12312)
and a "jobserver unavailable" warning in:
* ntl
* singular (#12137)
* rubiks
'''Apply''':
1. [attachment:12016-root.patch] to the `SAGE_ROOT` repository.
1. [attachment:12016-base.patch] to `spkg/base`.
1. [attachment:12016-scripts.patch] and [attachment:trac_12016-scripts-
ref.patch] to the `SCRIPTS` repository.
1. [attachment:12016-sage.patch] to the Sage library.
See also: #6495 to implement the same behavior for doc building.
--
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/12016#comment:52>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.