[ADMB Users] 4 Gb limits

Mollie Brooks mbrooks at ufl.edu
Mon Nov 21 10:50:40 PST 2011


I installed the new version on my Mac and both 

>>>>>     simple -cbs 4294967295 
>>>>>     simple -cbs 4294967296 

work fine.

Mollie

Mollie Brooks
Ph.D. Candidate
NSF IGERT Fellow
Biology Department
University of Florida
mbrooks at ufl.edu
http://people.biology.ufl.edu/mbrooks




On 21 Nov 2011, at 12:37 PM, John Sibert wrote:

> OK. got rid of initialization loop altogether. It works find with simpe -cbs 4294967296 and much larger values, too. Committed the code,  revision 199, but it needs to be tested with other compilers.
> 
> John
> 
> On 11/21/2011 06:20 AM, dave fournier wrote:
>> On 11-11-20 03:21 PM, John Sibert wrote:
>> 
>> I don;t think it is needed now. I think it was just during development looking for errors.
>> 
>>> Hi Alan,
>>> The problem seems to be in this initialization loop in df_file.cpp Adding the additional #ifdef seems to allow the program to execute.
>>> 
>>> Dave, is this initialization really necessary? It takes a long time for sz>4Gb (at least on the test machine).
>>>> #ifdef __BORLANDC__
>>>>      for (unsigned int i=0;i<sz;i++)
>>>>  #else
>>>>      for (long long int i=0;i<sz;i++)
>>>>  #endif
>>>>      {
>>>>        buff[i]='\0';
>>>>      }
>>> Also I noticed (rather the compiler noticed) a discrepancy in the following two declarations:
>>>> df_file.cpp:  extern char ad_random_part[6];
>>>> gradstrc.cpp: extern char ad_random_part[7];
>>> Which is correct?
>> 
>> Looking at the code
>> 
>> void fill_ad_random_part(void)
>>  {
>>   /*
>>    time_t t,tt;
>>    time(&t);
>>    tt=t;
>>    int div=1;
>>    for (int i=0;i<6;i++)
>>    {
>> 
>>      ad_random_part[i]=(tt/div)%10+48;
>>      div*=10;
>>    }
>>   */
>>  }
>> 
>> It seems that it is not used any more but it did use [6]
>> 
>> 
>>> 
>>> I will commit the changes eventually.
>>> 
>>> Cheers,
>>> John
>>> 
>>> 
>>> On 11/20/2011 08:39 AM, Allan.Hicks at noaa.gov wrote:
>>>> Hi John,
>>>> 
>>>> I have a couple of thoughts, probably of which you have already taken
>>>> care of. But, here goes:
>>>> 
>>>> 1) Make sure that you are using ADMB 10.1. I noticed that the inputs
>>>> were still long int in version 10.0.
>>>> 
>>>> 2) Make sure that AMB10.1 is compiled as 64-bit. I noticed that there
>>>> are no 64-bit downloads on the website for ADMB 10.1 in Linux.  I also
>>>> could not find 64-bit executables for Linux gcc on Buildbot (I see a
>>>> 64-bit version for gcc 4.5 has been successfully built, but I do not see
>>>> executables). But, given that you are using gcc 4.6, you probably
>>>> compiled it yourself, but I just wanted to make sure.
>>>> 
>>>> 3) You may want to try setting the cbs value in the tpl file, just to
>>>> make sure that there is no issue with the reading in from the command line.
>>>> 
>>>> If these aren't the answer, I'm not exactly sure where the problem is.
>>>> Because it is at the exact breaking point of an unsigned long int
>>>> (2^32-1 is the maximum) then I imagine that there is something in the
>>>> code that is declared as an unsigned long int and there is a conversion
>>>> issue.  This is a bit over my head, and you warned me a while ago that
>>>> converting to 64-bit is not as straightforward as simply changing some
>>>> declarations.
>>>> 
>>>> In the meantime, I will try to compile ADMB 10.1 in Linux 64-bit and see
>>>> if I can reproduce your issue and investigate it further.
>>>> 
>>>> Sorry that I can't be of more help,
>>>> Allan
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> ----- Original Message -----
>>>> From: John Sibert<sibert at hawaii.edu>
>>>> Date: Saturday, November 19, 2011 6:31 pm
>>>> Subject: Re: [ADMB Users] 4 Gb limits
>>>> 
>>>>> Nope. The value of the option behind -cbs is declared as a long
>>>>> long
>>>>> int. See nh99/xmodelm3.cpp.
>>>>> 
>>>>> Ian Taylor and Alan Hicks resolved this issue for -gbs.
>>>>> 
>>>>> John
>>>>> 
>>>>> 
>>>>> 
>>>>> On 11/19/2011 03:57 PM, Weihai Liu wrote:
>>>>>> I would guess the size for cbs was defined as an unsigned long,
>>>>> which
>>>>>> is 32 bit, its range 0 to 4294967295, so 4294967296 will be just
>>>>> out
>>>>>> of range, although it = 2^32.
>>>>>> 
>>>>>> 
>>>>>> weihai
>>>>>> 
>>>>>> On Sat, Nov 19, 2011 at 8:23 PM, John Sibert<sibert at hawaii.edu
>>>>>> <mailto:sibert at hawaii.edu>>  wrote:
>>>>>> 
>>>>>>     Using simple.tpl
>>>>>> 
>>>>>>     simple -cbs 4294967295 works fine
>>>>>>     simple -cbs 4294967296 hangs
>>>>>> 
>>>>>>     ubuntu 11.10, 64 bit, 32Gb RAM, gcc 4.6.1
>>>>>> 
>>>>>>     Any thoughts?
>>>>>>     John
>>>>>> 
>>>>>>     --
>>>>>>     John Sibert
>>>>>>     Emeritus Researcher, SOEST
>>>>>>     University of Hawaii at Manoa
>>>>>> 
>>>>>>     Visit the ADMB project http://admb-project.org/
>>>>>> 
>>>>>>     _______________________________________________
>>>>>>     Users mailing list
>>>>>>     Users at admb-project.org<mailto:Users at admb-project.org>
>>>>>>     http://lists.admb-project.org/mailman/listinfo/users
>>>>>> 
>>>>>> 
>>>>> -- 
>>>>> John Sibert
>>>>> Emeritus Researcher, SOEST
>>>>> University of Hawaii at Manoa
>>>>> 
>>>>> Visit the ADMB project http://admb-project.org/
>>>>> 
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> Users at admb-project.org
>>>>> http://lists.admb-project.org/mailman/listinfo/users
>>>>> 
>>> 
>> 
>> 
> 
> -- 
> John Sibert
> Emeritus Researcher, SOEST
> University of Hawaii at Manoa
> 
> Visit the ADMB project http://admb-project.org/
> 
> _______________________________________________
> Users mailing list
> Users at admb-project.org
> http://lists.admb-project.org/mailman/listinfo/users
> 




More information about the Users mailing list