[ADMB Users] Non-matching analytic and numeric derivatives

Johnoel Ancheta johnoel at hawaii.edu
Mon Oct 27 11:02:40 PDT 2014


Hi Jeff,

Sorry for delay.  I now understand the -gbs issue with MinGW64 and ADMB.
It turns out
that the 64 bit MinGW compiler uses 32 bit posix function lseek instead of
64 bit.
This causes overflow problems with using 64bit integer as a input into a
smaller 32 bit
integer for integers greater than the max value for 32 bit.  To use 64 bit,
the compiler
needs the option _FILE_OFFSET_BITS=64 to be defined. This has been done and
committed
to the repository.  Please download the most current installer,

http://www.admb-project.org/buildbot/snapshots/admb-latest-windows8-mingw64.exe

Uninstall the previous first.

Then open the ADMB command prompt on the desktop,

> admb cjsre

> cjsre -nohess -gbs 4000000000

Thank you for bring the issue to our attention,

Please let me know if it works,
Johnoel

On Tue, Oct 21, 2014 at 3:58 AM, dave fournier <davef at otter-rsch.com> wrote:

>  A few issues.
>
>    I did not intend to present a "final solution" to your
>    problem.
>
>    What I did intend to do was to illustrate how overall
>    stability of the model could be improved by modifying
>    the objective function in phases.  Then I hoped that
>    you and others could incorporate the techniques into
>    their bag of tricks.  So for example one could use 3
>    phases and add an even smaller offset in the third phase.
>
>     As for buffer sizes there are two issues.  One is
>     specifying the offset into a >2GB buffer.  That has
>     to be a type > 32 bits. In 64 bit windows it seems that
>     a long int is only 32 bits and mingw64 has followed this
>     for windows compatibility.  A long long int will do the
>     job but there are other types which can be used. I always
>     forget what they are.
>
>     Then there is the question of writing the buffer to the
>     disk when it is full. I used a low level unbuffered
>     write function, assuming at the time that it would be
>     the fastest method.  However the amount that can be
>     written in one write operation is limited.  On my Linux
>     system it appears to be 2GB.  So one can either split up
>     the write operations or switch to higher level fwrites.
>     For the model in question here I used a buffer > 3.5 GB
>     which was large enough that nothing needed to be written
>     to the disk. This works because in 64 bit Linux a long
>     int is 64 bits.
>
>
>
>
> _______________________________________________
> Users mailing list
> Users at admb-project.org
> http://lists.admb-project.org/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.admb-project.org/pipermail/users/attachments/20141027/d3e5dec7/attachment.html>


More information about the Users mailing list