[ADMB Users] Differences in speed of ADMB versions?
arnima at hafro.is
Sun Apr 24 17:27:29 PDT 2011
Tim, Allan, and Ian have discovered what looks a bug in ADMB 10.0 and
10.1, possibly related to rewritten matrix operations. See below.
On Fri, 22 Apr 2011, Ian Taylor wrote:
I'd say this is a question for the ADMB-users or ADMB-developers lists.
Fournier or Derek Seiple (who I think did the reprogramming) could have
some insights, and at minimum should be made aware of the issue.
On Fri, 22 Apr 2011, Tim Miller wrote:
That is interesting you're getting the same behavior with Visual C++.
Perhaps you're right about some newer algorithms being slower, but I hope
not. The reason I was updating to ADMB10 was to take advantage of the new
matrix exponential function. Also, I notice the same drop in speed for
one of my own problems that only uses the basic matrix operations (e.g.,
On Thu, 21 Apr 2011, Allan Hicks wrote:
That is interesting because with one test case of an SS3 model compiled
with MS Visual C++ I found that ADMB 9.0 ran slower than ADMB 10.0.
However, this is confounded with changing versions of MS Visual C++ also.
So, I replicated your test of the n2mvol example with MS Visual C++ and
found your same result. ADMB 10 ran much much slower. However, check the
file called n2mvol.log to see if any of the gradient files have a size
larger than zero for your compilers. It seems to me that ADMB10 uses more
memory and the example was on the edge where ADMB 10 had to write to
temporary files. Running with a command line option -gbs 500000000 reduced
the file sizes to zero, but it still ran slower. I'm not sure why, after
eliminating the temporary files.
n2mvol_v9 -gbs 500000000 77 seconds
n2mvol_v10 -gbs 500000000 352 seconds
n2mvol_v9 -gbs 500000000 -nohess 46 seconds
n2mvol_v10 -gbs 500000000 -nohess 119 seconds
I am pretty sure that I am compiling with the same options. It would be
interesting to trace the time through the code to see where the difference
is. I am speculating that one or more of the matrix functions (inv or
solve maybe) was recoded in ADMB 10 and is a slower algorithm. Just a
I can say that seeing Borland run slower than MinGW is not surprising.
Arni has shown that Borland typically runs slowest of all compilers.
Sorry that I haven't been a help and didn't provide a solution, but this
is very interesting and brings up the question of how does ADMB 9 compare
to ADMB 10, and where specifically are the differences seen.
On Thu, 21 Apr 2011, Ian Taylor wrote:
I haven't noticed any strong differences. I'm cc'ing Allan Hicks, because
he's done more version comparing recently than I have. Coincidentally,
there was just some discussion this morning about moving the official
releases of Stock Synthesis to ADMB 10.1, so it will be good to understand
what's going on.
As far as I know, the biggest difference is in a few of the algorithms, so
perhaps the speed hit could depend on what kind of algorithms are needed
for a given model.
On Thu, 21 Apr 2011, Tim Miller wrote:
Have you noticed differences in the speed of optimization when code is
optimized under version 10.0 vs. 9.0? My 9.0 is with MinGW, but I have
10.0 with both MinGW and Borland and both of the newer versions are MUCH
slower than the 9.0 version. These are windows binaries. I have found
this phenomenon with both one of my own models as well as the "vol"
example. Maybe the default options at compiling have changed?
More information about the Users