Elsevier Science Home
Computer Physics Communications Program Library
Full text online from Science Direct
Programs in Physics & Physical Chemistry
CPC Home

[Licence| Download | New Version Template] adjk_v1_0.tar.gz(107 Kbytes)
Manuscript Title: Maple programs for generating efficient Fortran code for serial and vectorised machines.
Authors: C. Gomez, T. Scott
Program title: RMAKE
Catalogue identifier: ADJK_v1_0
Distribution format: tar.gz
Journal reference: Comput. Phys. Commun. 115(1998)548
Programming language: Maple.
Computer: DEC ALPHA 300 (150Mz).
Operating system: UNIX.
RAM: 1M words
Word size: 32
Keywords: Computer algebra, Computers, Software, Maple, Macrofort, Macroc, Efficient code, Generation, Vectorised machines, Blas, Transfor.
Classification: 5, 6.5.

Nature of problem:
Many applications of current and fundamental research involve large problems requiring intensive computation. In the case of quantum chemistry and molecular physics, a computational bottleneck is the numerical calculation of the required molecular integrals to sufficient precision. In general, many computations require fast and efficient matrix calculations.

Solution method:
As a first example, we present a method for the rapid numerical evaluation of molecular integrals using optimised Fortran code generated by Macrofort. The method is based on the exploitation of common intermediates and the optimisation can be adjusted to both serial and vectorised computations. As a second example, we show how Transfor can efficiently transform Maple matrix operations into BLAS code.

The complexity of the use of Macrofort (or MacroC) is determined by the algorithmic complexity of the given expressions to be converted into Fortran (o rC) compounded with the complexity of Maple's optimiser. The complexity of Maple's optimiser is of order O(n) where n is the array size of the expressions to be converted. For program RMAKE, this means that as the angular quantum number L increases, the total size of the expressions gets larger and the speed of the code generation diminishes.

Unusual features:
These programs were intended for the creation of efficient Fortran or C code. They are even useful to a programmer who is not interested in computer algebra per se. For example, the generated code can be a subroutine that is integrated inside an existing program (written by hand).

Running time:
To generate about 700 lines of Fortran code (with BLAS routines) for Transfor (using Macrofort generated code) = 10 seconds.

[1] M.B. Monagan, K.O. Geddes, G. Labahn, S.M. Vorkoetter, Maple V Programming Guide (Springer, New York, 1996).