next up previous index
Next: Putting it all together: Up: PHCpack: a general-purpose solver Previous: The Internal Design: the

On Portability: Computers and Compilers

PHC is written in Ada. Since the gnu-ada compiler (also called GNAT  [Ada Core Technologies]) is available for a large number of platforms, the software is portable. The myth that Ada is ``big and slow'' is disproved in [Syiek 1995]: Ada versions even have a slight edge over their C counterparts.

Initially, the VADS (Verdix Ada Development System) compiler was used on three different machine architectures. The implementation started [Verschelde 1990] on a SUN3/280 and moved [Verschelde and Cools 1993a] to a DECStation 5240. A version for an IBM RS/6000 workstation was made available [Verschelde 1995]. Thirdly, SUN-SPARC machines were used [Verschelde and Cools 1996], along with the gnu-ada compiler version 3.03 in [Verschelde 1996].

Next a report is given on compiler experiences. Because runtime efficiency is crucial, compilation is done with full optimization and with a suppression of runtime checks. Table 2 contains experimental data comparing VADS 6.2.3b against gnu-ada 3.09.

Table 2: Compiler efficiency (on SPARCserver-1000): Compilation timings and sizes of auxiliary files and executable.
compiler options user time sys time total time aux. files executable
VADS: -O -S 40m  9s 5m  8s 45m 17s 42.1 Mb 4.0 Mb
GNAT: -O3 -gnatp 45m 46s 2m 59s 48m 47s 4.1 Mb 2.9 Mb

In Table 3 the performance of the generated code is illustrated on one of the benchmark examples.

Table 3: Performance of generated code, on the cyclic 7-roots problem with the black-box solver compiled with VADS and GNAT. Timings are listed for root counting, construction of start system, the continuation to the target system and the total time.
phc 4c|root counts 4c|start system 4c||continuation 4c|total time                        
VADS   1m 26s 866ms   24m 20s 589ms   38m 17s 667ms 1h 4m 42s 129ms
GNAT   1m 15s 74ms   15m 49s 391ms   27m 50s 521ms   45m 21s 434ms

Although this comparison is by no means thorough, the gnu-ada compiler seems to be the winner, both in compiling and runtime efficiency. Currently, the gnu-ada compiler is maintained by a privately held company Ada Core Technologies (ACT), founded by the creators of the gnu-ada compiler. ACT is committed to provide publicly free releases of their compiler. The most recent public version is numbered 3.11p.

The fourth platform used to develop PHC is a Pentium PC running Linux. The mathematical kernel of PHC has been rewritten using concepts of Ada 95 to incorporate multi-precision facilities. The other major change in the new version is the availability of SAGBI [Verschelde 1998] and Pieri homotopies.

next up previous index
Next: Putting it all together: Up: PHCpack: a general-purpose solver Previous: The Internal Design: the
Jan Verschelde