Opened 15 years ago
Closed 15 years ago
#85 closed defect (fixed)
Hit Fortran integer limit during imaging
Reported by: | Owned by: | MarkWieringa | |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | MIRIAD - CABB branch | Version: | |
Keywords: | Cc: | ||
Estimated Number of Hours: | 0 | Add Hours to Ticket: | 0 |
Billable?: | yes | Total Hours: | 0 |
Description (last modified by )
HI Mark,
thanks for looking into this for me, I guess I'll wait for Mark
Wieringa to take a look. I did try to invert the data without using the double options and that worked, however, the cleaning task mosmem then fails to do any cleaning iterations - the miriad manual states that the double option needs to be used with mosaic data and may be this is why?
Cheers,
James
On 22/06/2009, at 5:18 PM, Mark Calabretta wrote:
Hi James,
The segv arises from a very simple piece of code in mapper.for:
c Zero the grid array. c
do k=1,ncount
do pnt=1,npnt
do j=1,nv
do i=1,nu
Grd(i,j,pnt,k) = 0 <- segv
enddo
enddo
enddo
enddo
where ncount == 1, npnt == 357, nv == 2655, and nu == 1030 are passed in as subroutine arguments and Grd is defined as complex. The segv arises at the indicated line as soon as the loop is entered, i.e. i == j == pnt == k == 1.
What appears to be happening is that the loop parameters, computed when the loop is entered, overflow the memory that may be addressed by a signed 4-byte integer: (2 * 4) * 357 * 2655 * 1030 = 7,810,160,400 versus 231 - 1 = 2,147,483,647.
In other words, the problem size is too big for Fortran with its signed 32-bit integer array indexing (insert ascerbic comment re aips++ here). I note that removing 'double' from the invert options did reduce the problem to a managable size.
I will have to pass you on to Mark Wieringa who has been working on extending Miriad for CABB data reduction.
Regards, Mark
On Thu 2009/06/18 13:29:50 +1000, James Urquhart wrote in a message to: Mark Calabretta <mcalabre@atnf.CSIRO.AU> Hi Mark, I've been reducing some recent CABB observations using miriad on kaputar but have run into a problem. The observations have been made at 3 and 6 cm and consist of a ~360 point mosaic. We have already reduced and imaged a number of similar observations using the hybrid arrays successfully excluding the 6th antenna. However, when we tried to image the latest observations using the 6 km array and this time including the 6th antenna we encounter a problem. The initial calibration of the flux, bandpass and phase sources is fine, however, when we try to invert the calibrated mosaic data the task fails to complete. If we exclude the 6th antenna we are able to invert it and produce an image, if we include the 6th antenna invert starts to create the beam file which gets to about 9 GBs and then fails to create the map file and we get a segmentation fault. If you want to look at the data you can find it on: /DATA/KAPUTAR_3/urq008/CABB/G305/REDUCED/6A/5500/NOANT6 and the calibrate mosaic file is 5500.pnt It looks like we are running into some sort of memory limit, is this the case, and if so is there anything we can do about it? Let me know if there are any other details you need. Cheers, James
Change History (4)
comment:1 Changed 15 years ago by
Description: | modified (diff) |
---|
comment:2 Changed 15 years ago by
comment:3 Changed 15 years ago by
This may never get fixed. It is caused by trying to make gigantic images (~8Gb on a box with 16Gb memory) and the limit imposed by the machine's memory probably can't be worked around.
In this particular case a bit of finessing of the imaging parameters should get the work moving forward again.
comment:4 Changed 15 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
We spoke to soon..
Bob has added an 8 byte integer type to miriad (PtrDiff?) that can handle large memory allocations. It looks like this has fixed the overflow issue in the code.
So now we're back to a limit on the maximum size of the output image and limitations due to the memory size of the machine.
see also ticket:67