There are sources for various software packages.
./configure --enable-single-host --enable-multiple-versions make make installIf you want to specify more options you can do:
./configure CC='gcc -special-options-here' --prefix=/where-you-want-to-stick-it --enable-single-host --enable-multiple-versions make make installThe "where-you-want-to-stick-it" part defaults to /usr/local/Gambit-C/. The special options might include "-march=native" to generate code to fully exploit the instructions available on the machine where you're building Gambit-C (so it might not run on a related machine). In Gambit, the directory /usr/local/Gambit-C/current (or wherever you installed Gambit-C) is denoted by ~~. The version of Gambit installed on leibniz was configured with
leibniz-227% ./configure CC=/pkgs/gcc-4.6.2/bin/gcc --enable-single-host --enable-shared --enable-multiple-versions --prefix=/pkgs/Gambit-C/
tar zxf MeroonV3-2008Mar01.tgz cd MeroonV3-2008Mar01 ./make_meroonwhich gives output something like:
leibniz-192% ./make_meroon Gambit v4.6.2 > "/export/userswww/lucier/WWW/615-2012/MeroonV3-2008Mar01/old-load.scm" > [ Meroon V3 Paques2001+1 $Revision: 1.2 $ ] > "/export/userswww/lucier/WWW/615-2012/MeroonV3-2008Mar01/_meroon.o1" > *** EOF again to exitThis builds a file called _meroon.o1; to use it, you load it into the Gambit interpreter or compiler:
leibniz-203% gsi Gambit v4.6.2 > (load "_meroon") [ Meroon V3 Paques2001+1 $Revision: 1.2 $ ] "/export/userswww/lucier/WWW/615-2012/MeroonV3-2008Mar01/_meroon.o1" >And you're ready to go.
If you like, you can copy _meroon.o1 to ~~/lib, make soft links in ~~/bin from gsi++ and gsc++ to gsi and gsc, respectively, and then put a file named gambcext containing
banach-125% cat gambcext (case (string->symbol (car (##command-line))) ((gsi++ gsc++) (load "~~/lib/_meroon.o1")) (else #f))into ~~/lib. (See the Gambit-C documentation for ~~, gambcext, etc.)
leibniz-204% gsc Gambit v4.6.2 > (load "old-load") "/export/userswww/lucier/WWW/615-2012/MeroonV3-2008Mar01/old-load.scm" > (old-load "pre_meroon.scm") [ Meroon V3 Paques2001+1 $Revision: 1.2 $ ] > (compile-file "_meroon.scm") "/export/userswww/lucier/WWW/615-2012/MeroonV3-2008Mar01/_meroon.o1"This builds _meroon.o1, which you can later use by
leibniz-207% gsc Gambit v4.6.2 > (load "_meroon") [ Meroon V3 Paques2001+1 $Revision: 1.2 $ ] "/export/userswww/lucier/WWW/615-2012/MeroonV3-2008Mar01/_meroon.o1" >
The PDE tests can be run interpreted as:
leibniz-215% gsi++ [ Meroon V3 Paques2001+1 $Revision: 1.2 $ ] Gambit v4.6.2 > (load "all.scm") "/export/userswww/lucier/WWW/615-2012/software/all.scm" > (load "final-tests.scm") "/export/userswww/lucier/WWW/615-2012/software/final-tests.scm" > (run-cg-tests symmetric-tests) a=1, c=1, u=x^2-y^2, Neumann CG: (Identity preconditioner) .0001791876 .0221310177 456. 92. CG: (Diagonal preconditioner) .0001004770 .0221013194 364. 88. CG: (Gauss-Seidel preconditioner) .0002638475 .0221169467 360. 60. a=1, c=1, u=\cos(\pi x), Neumann CG: (Identity preconditioner) .0008348367 .0545089348 352. 68. CG: (Diagonal preconditioner) .0009427600 .0545710185 152. 48. CG: (Gauss-Seidel preconditioner) .0010239329 .0545544078 256. 64. a=1, c=1, u=\sin(\pi x)+\sin(\pi y), Neumann CG: (Identity preconditioner) .0009588935 .0771112835 532. 128. CG: (Diagonal preconditioner) .0009490023 .0771118447 412. 88. CG: (Gauss-Seidel preconditioner) .0014972567 .0772266771 612. 112. a=11.0+10.0*\cos\pi x, c=1, u=xy, Neumann CG: (Identity preconditioner) .0002050553 .0156473650 2504. 516. CG: (Diagonal preconditioner) .0002260837 .0156703111 1036. 192. CG: (Gauss-Seidel preconditioner) .0002228954 .0156726041 876. 152. a=1, c=1+xy, u=x^2-y^2, Neumann CG: (Identity preconditioner) .0001756872 .0221335135 464. 108. CG: (Diagonal preconditioner) .0001874367 .0221308722 380. 68. CG: (Gauss-Seidel preconditioner) .0003010423 .0221420216 368. 60. a=1, c=2+\cos(\pi y), u=\cos(\pi x), Neumann CG: (Identity preconditioner) .0007976776 .0545059247 448. 100. CG: (Diagonal preconditioner) .0008194825 .0545587117 284. 48. CG: (Gauss-Seidel preconditioner) .0008548599 .0545403659 344. 56. a=1, c=1, gamma=2+\cos(\pi x), u=\sin(\pi x)+\sin(\pi y), Robin CG: (Identity preconditioner) .0008242119 .0770983214 608. 144. CG: (Diagonal preconditioner) .0008311925 .0771132908 596. 132. CG: (Gauss-Seidel preconditioner) .0008294558 .0771042524 524. 104. a=11.0+10.0*\cos\pi x, c=1+xy, gamma=2+\cos(\pi x), u=xy, Robin CG: (Identity preconditioner) .0001895204 .0156447181 2072. 380. CG: (Diagonal preconditioner) .0002086356 .0156794918 920. 200. CG: (Gauss-Seidel preconditioner) .0002001008 .0156626417 792. 148. >Or, you can compile them:
leibniz-217% gsc++ [ Meroon V3 Paques2001+1 $Revision: 1.2 $ ] Gambit v4.6.2 > (compile-file "all") "/export/userswww/lucier/WWW/615-2012/software/all.o1" > (load "all") "/export/userswww/lucier/WWW/615-2012/software/all.o1" > (compile-file "final-tests.scm") "/export/userswww/lucier/WWW/615-2012/software/final-tests.o1" > (load "final-tests") "/export/userswww/lucier/WWW/615-2012/software/final-tests.o1" > (run-cg-tests symmetric-tests) a=1, c=1, u=x^2-y^2, Neumann CG: (Identity preconditioner) .0001791876 .0221310177 8. 0. CG: (Diagonal preconditioner) .0001004770 .0221013194 0. 0. CG: (Gauss-Seidel preconditioner) .0002638475 .0221169467 12. 0. a=1, c=1, u=\cos(\pi x), Neumann CG: (Identity preconditioner) .0008348367 .0545089348 0. 0. CG: (Diagonal preconditioner) .0009427600 .0545710185 0. 0. CG: (Gauss-Seidel preconditioner) .0010239329 .0545544078 0. 0. a=1, c=1, u=\sin(\pi x)+\sin(\pi y), Neumann CG: (Identity preconditioner) .0009588935 .0771112835 0. 0. CG: (Diagonal preconditioner) .0009490023 .0771118447 0. 0. CG: (Gauss-Seidel preconditioner) .0014972567 .0772266771 0. 20. a=11.0+10.0*\cos\pi x, c=1, u=xy, Neumann CG: (Identity preconditioner) .0002050553 .0156473650 20. 0. CG: (Diagonal preconditioner) .0002260837 .0156703111 12. 8. CG: (Gauss-Seidel preconditioner) .0002228954 .0156726041 12. 0. a=1, c=1+xy, u=x^2-y^2, Neumann CG: (Identity preconditioner) .0001756872 .0221335135 0. 12. CG: (Diagonal preconditioner) .0001874367 .0221308722 8. 0. CG: (Gauss-Seidel preconditioner) .0003010423 .0221420216 0. 0. a=1, c=2+\cos(\pi y), u=\cos(\pi x), Neumann CG: (Identity preconditioner) .0007976776 .0545059247 0. 0. CG: (Diagonal preconditioner) .0008194825 .0545587117 0. 0. CG: (Gauss-Seidel preconditioner) .0008548599 .0545403659 8. 0. a=1, c=1, gamma=2+\cos(\pi x), u=\sin(\pi x)+\sin(\pi y), Robin CG: (Identity preconditioner) .0008242119 .0770983214 8. 0. CG: (Diagonal preconditioner) .0008311925 .0771132908 0. 0. CG: (Gauss-Seidel preconditioner) .0008294558 .0771042524 12. 8. a=11.0+10.0*\cos\pi x, c=1+xy, gamma=2+\cos(\pi x), u=xy, Robin CG: (Identity preconditioner) .0001895204 .0156447181 8. 12. CG: (Diagonal preconditioner) .0002086356 .0156794918 12. 0. CG: (Gauss-Seidel preconditioner) .0002001008 .0156626417 8. 12. >The last two columns are CPU times in milliseconds to compute the solution, and so-called "garbage collection" times that might happen while the solution is being computed. So you can see that compiling the code speeds it up quite a bit.