Hi all,

Since I've been working on xmds now for about a month, I thought it about time
I sent out an update to let everyone know what I've done (if only to justify
my existence ;-)  ).

- autoconf script
    I've implemented the use of the GNU suite of build tools so that one
    needs to do the standard "./configure; make" dance to build xmds.  This
    has made the Configure script and the Makefile (within the xmds/source 
    directory) obsolete.  I'm not 100% happy (yet) with the scripts mainly 
    because they look a bit ugly (a side-effect of me being on the autoconf
    learning curve when I wrote the scripts), so expect the scripts to improve
    with time.  In the current implementation there are some arguments one can
    pass to ./configure:
	--with-fftw-path -> the path to your fftw installation, if not in 
	    /usr or /usr/local
	--with-user (no args) -> to install xmds into $HOME/bin
	--with-mpi-libs -> the path to any extra mpi libraries necessary for
	    when the script is checking to see if mpi works properly.  At the
	    moment the script assumes to a certain degree that you are using
	    the lam implementation of mpi, so this is on the todo list to make
	    more general.
    The autoconf script also checks for icc (the Intel C compiler) and uses
    that to compile the xmds output C++ code (unfortunately, the xmds C++ code
    doesn't compile with icc, but only with gcc, haven't worked out exactly 
    why yet, but xmds will build with gcc and then use icc if present).
- xmds now builds properly on LinuxPPC
    The problem was to do with different implementations of the gcc compiler.
    Integers in C++ are either signed or unsigned, and if not specified, then
    the compiler decides to use one or the other.  So, what happened was on
    LinuxPPC the compiler chose unsigned, but on LinuxX86 the compiler chose
    signed, which was what was meant.  The problem only affected parsing of
    the xml code and this bug has now been fixed.
-  flag
    xmds now recognises the  boolean element in the 
    section of the xmds script.  Again, I'm not 100% happy with the
    implementation as it stands, but I got it going, and the implementation
    will change in time, in a manner transparent to users.  Basically I've
    done a bit of a quick hack and reused some existing code which contains
    a lot of redundancy, so expect the binary output to be more efficient in
    terms of hard drive space in the future.  Btw, ascii output is the default
    output option at this stage.
-  flag
    xmds now recognises the  boolean element in the 
    section of the xmds script.  This seems to work quite nicely at this
    stage.  The code will check to see if you have a $HOME/.xmds/wisdom 
    directory and store the wisdom files in there, using the machine name
    as the basis for the wisdom filename.  If you don't have a 
    $HOME/.xmds/wisdom directory then it uses the current directory instead.
    I have also added a bit of informative information output at the beginning
    of the simulation so the user knows what is happening (previously, when
    fftw was doing its thing the terminal just sits there and stares back at
    you, begging the question: Is it working??).
-  flag
    xmds now recognises the  boolean element in the 
    section of the xmds script.  This is specifically for use with the
     element.  The default behaviour is for  to be
    "yes", but if you choose "no" then the binary output will be single.
-  flag
    xmds now recognises the  boolean element in the 
    section of the xmds script.  This flag puts timing code into the C++ code
    just before the simulation runs (and after fftw starts up) and prints
    the simulation time in seconds at the end of the code (before fftw shuts 
    down).
- loadxsil.m Matlab 5 script
    I've written a matlab 5 function (I could have used ML6, and its XML
    parsing stuff, however, more people can use the function) to read the
    data in from the .xsil output file and dump the variables (as named in the
    xmds script) into the namespace of the matlab script calling loadxsil().
    The function is called with one argument, that being a string of the name 
    of the .xsil file.  For example: loadxsil('atomlaser.xsil')
- doxygen api documentation generation
    I've started documenting the xmds code using the Qt scheme outlined in the
    program doxygen.  Doxygen parses the C++ code and special comment blocks
    and produces documentation and graphs of how functions, classes etc are
    related to each other.  This information is output as html and LaTeX, and
    can be output as rtf and xml if required.  Doxygen does a really good job!
    The current api documentation is in xmds/api, but I haven't committed this
    to cvs yet, and I may not, as it simply needs to be included when one does
    a "make dist", to package the code for distribution.
- examples are built at build time
    Currently the examples in the xmds/examples directory are built when one
    performs "make" after doing a ./configure.  I don't like this behaviour,
    and will try to get ./configure to let me go "make examples" from the
    xmds/ directory.  I will try to get this fixed up at some point, however,
    I thought everyone should know that this is what make is "supposed" to do
    at this stage.

Right!  I think that's about it atm.  I hope the changes are up to scratch,
and what people want.  If anyone wants anything else done, then just email to
the relevant list and I'll add it to the todo list.  Also, let me know if
anything doesn't work on your system, and of any bugs I may have inadvertedly
added in trying to add features.

Happy xmds-ing!

Later

Paul
 



Introduction | Examples | Downloads | Documentation | Archives | Script Repository | FAQ | News | Links | Contacts