Opened 15 years ago

Closed 15 years ago

#85 closed defect (fixed)

Hit Fortran integer limit during imaging

Reported by: Mark.Wieringa@… 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 VincentMcIntyre)

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 VincentMcIntyre

Description: modified (diff)

comment:2 Changed 15 years ago by VincentMcIntyre

see also ticket:67

comment:3 Changed 15 years ago by VincentMcIntyre

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 MarkWieringa

Resolution: fixed
Status: newclosed

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.

Note: See TracTickets for help on using tickets.