On Apr 27, 2010, at 10:30 PM, G.J. Parker wrote:
installed two versions of meep-mpi (0.20.3 and 1.1.1). they both use
the same prerequisite packages (fftw, harminv, guile, libctl,
openmpi & parallel hdf) w/ gcc 3.4.4 (RHEL 4.2)
both versions take the same ctl file that defines a 3d structure and
saves the reflected and transmitted flux. the execution time is
comparable.
re-running the same simulation but this time telling it to read in
the reflected flux (load-minus-flux), meep 1.1.1 takes significantly
longer to read the flux and is ~ 7x slower in execution speed (s/
step) than meep 0.20.3.
re-running the exact ctl file but commenting out the load-minus-flux
command, meep 0.20.3 is fast again.
That's very odd! The only thing that comes to mind is some kind of
floating point exception (arithmetic with underflow/overflow/NaN is
much slower), although I don't understand how that could differ
between the two versions of Meep. You can force Meep to crash when
there is a floating point exception by editing src/mympi.cpp to change
the line
#if defined(DEBUG_FP) && defined(HAVE_FEENABLEEXCEPT)
to
#if 1
Does this occur when running on a single processor? On a single
processor, it is relatively easy to run under a debugger (gdb) to find
out where/whether floating-point exceptions arise (instead of crashing
with the above line, it will halt in the debugger). (You will want to
configure Meep with --enable-debug in order to compile with debugging
flags.)
Steven
_______________________________________________
meep-discuss mailing list
meep-discuss@ab-initio.mit.edu
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss