comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Fast I/O of large files
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Fast I/O of large files [message #2123] Sat, 28 May 1994 16:57
eharold is currently offline  eharold
Messages: 12
Registered: July 1993
Junior Member
Here's the problem:

I have astronomically large FITS data files representing the data
taken from a 340 by 256 CCD at 200 time steps and 14 wavelengths.
A day's worth of data is stored in 200 different data files, each of which
represents one time step at 340 by 256 by 14 points. They're arranged such
that with ASSOC I see 14 arrays of 340 by 256 integers each.

I need to perform fourier analysis on this
data at each point in x-y-z space through time. That is what I really
need is data files for each of the 320 by 240 by 14 points that contains the
appropriate (integer) number at all 200 time steps; i.e. I'd like my
files separated by spatial position. Instead they're separated by time.

To do the fourier analysis I therefore need to open 200 files
to read just one number out of each and form an array that I can then analyze
in time. Once I've finished one point I do it again, i.e. open the same 200
files to read the next time series. I've tried variations of this scheme.
It does help if I read out all the z values at a step. However the total
size of the files is on the order of 400 MB so I can't read all of them in
at once. Some of them have to stay on disk.

Almost all the time in my code is being taken up in I/O.
Commenting out all the actual analysis yields negligible speed gains.
Thus I really need to find the fastest means of doing this I/O I can.
Here's what the actual I/O looks like now:

for step=0,timesteps-1 do begin
; Associate arrays with all the files at each time step
filename = "feb15bs5434.f"+strtrim(string(step),2)
openr, u, filename
temp = assoc(u, intarr(xdim,ydim), offset)

; fill the velocity vectors for this time step
; WARNING: This next line is a real time killer and needs to be fixed
; See 17-38 of the User's Guide
for k=0,num_vels-1 do vels(step,k) = temp(i,j,k)
close,u
endfor ; time

This collects the needed data at one point in x-y space over 200
time steps and 14 heights. After this I perform the needed analysis,
write my output and loop to the next x-y position.
Can anyone see a better way of doing this?
As is I can't seem to get the code to run in less than a year's time
for a single day of data. Obviously this needs to be improved.
Any help or suggestions you could provide would be greatly appreciated.


--

Elliotte Rusty Harold National Solar Observatory
eharold@sunspot.noao.edu Sunspot NM 88349
[Message index]
 
Read Message
Previous Topic: Re: Displaying data with map_set
Next Topic: Re: Time-Series problem

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Sat Oct 11 13:38:33 PDT 2025

Total time taken to generate the page: 1.12008 seconds