To the PLplot developers and Brad King:

@Brad:

I am including you in this discussion because I thought you might be
interested in these good PLplot results with your fork of Ninja.

@Developers:
Ninja should be of interest to us as a back-end for CMake because
ninja works on all platforms and has a reputation for being fast
because of its design philosophy (which is to execute all the low-level
build system stuff as quickly as possible while leaving all the
complex decision making for builds to higher-level build system software
such as CMake).  And Brad King's fork of ninja is of interest to us
because it fixes Fortran issues with the upstream version.

I. Building, testing, and installing Brad King's fork of ninja.

I attach a bash script to do that.  It should be run as follows:

./king_ninja_git_build.sh v1.9.0.g99df1.kitware.dyndep-1.jobserver-1

Here are the extra messages (i.e., those without leading '[') that are 
generated by ninja_test
The last one of these should be "passed".
Raise [ulimit -n] above 1025 (currently 1024) to make this test go
ninja: warning: -jN forced on command line; ignoring GNU make jobserver.
passed

@Brad:

In response to that first message I tried

ulimit -n 1026

(which worked according to ulimit -a), but then
after that ninja_test failed with
ninja: fatal: pipe: Too many open files

and the only way to fix that was to go back to "ulimit -n 1024"

I don't know the significance of the second message, but I thought you should
be informed of it.

II. PLplot testing of Brad's fork on ninja

@Everybody:

This is a preliminary test of PLplot because I found that the
Java, Octave, and Ada components of PLplot did not work with
ninja.  I need to investigate further to decide whether
these issues are due to our own language-support issues for
Ada, build-system issues for all three components, and/or CMake/ninja
issues. But for now I shut down those components with
-DENABLE_java=OFF -DENABLE_octave=OFF -DENABLE_ada=OFF and under these
conditions the times required to configure PLplot with cmake were as follows:

-G"Ninja"
real    0m8.732s
user    0m6.867s
sys     0m3.156s

-G"Unix Makefiles"
real    0m9.730s
user    0m7.781s
sys     0m3.134s

==> Significant configuration time advantage for Ninja

Here were the times required to build the test_noninteractive target after each 
of the above
clean configurations:

-G"Ninja"
software@merlin> time env 
PATH=/home/software/ninja/install-v1.9.0.g99df1.kitware.dyndep-1.jobserver-1/bin:$PATH 
ninja -j16 test_noninteractive >& test_noninteractive.out

real    1m5.298s
user    7m19.614s
sys     0m47.019s


-G"Unix Makefiles
software@merlin> time (make -j16 test_noninteractive >& test_noninteractive.out)

real    1m21.388s
user    7m31.672s
sys     0m58.231s

==> Significant run-time advantage for Ninja

In both cases the resulting test_noninteractive.out file showed no obvious 
run-time issues
and gave a clean difference report for the default svg device, e.g.,

c++
  Missing examples            :
  Differing graphical output  :
  Missing stdout              :
Differing stdout : d
  Missing examples            :
  Differing graphical output  :
  Missing stdout              :
Differing stdout : fortran
  Missing examples            :
  Differing graphical output  :
  Missing stdout              :
Differing stdout : lua
  Missing examples            :
  Differing graphical output  :
  Missing stdout              :
Differing stdout : ocaml
  Missing examples            :
  Differing graphical output  :
  Missing stdout              :
Differing stdout : python
  Missing examples            :
  Differing graphical output  :
  Missing stdout              :
Differing stdout : tcl
  Missing examples            :
  Differing graphical output  :
  Missing stdout              :
  Differing stdout            :

By the way, I haven't tested this, but apparently an even more
significant speed advantage for Ninja is it reduces the CMake
reconfiguration time when, for example, you have edited one PLplot
file and wish to reconfigure/rebuild.

So for now, I would advise all those that are not interested in the Java, 
Octave, or Ada
components of PLplot to give the Brad King fork of ninja a try.  In particular 
since
ninja has been designed from the ground up to support parallel builds while 
parallel
builds are an add-on for the GNU-make case it is likely you should get good 
parallel build
results for ninja on the Cygwin and MSYS2 platforms where Arjen's experience is 
that
parallel builds are not reliable on those two platforms for GNU-make.

I haven't tried upstream ninja, but since Brad's fork of that software
is designed to fix fortran issues, then I assume everything that
worked above except the fortran component should work well if one of
you prefers to try the upstream version of ninja.

Alan
__________________________
Alan W. Irwin

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.org); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________

Attachment: king_ninja_git_build.sh.gz
Description: compressed bash script to build, test, and install the King fork of ninja

_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to