Call_External - memory problems? [message #39276] |
Sun, 09 May 2004 23:39  |
gtg386d
Messages: 2 Registered: May 2004
|
Junior Member |
|
|
I had a very slow script that I have sped up considerably by writing a
c program and using call_external. this does what i want it to, but...
it executes in a loop, which also has a findfile command. previous to
using call_external, this worked. now it gives me the error:
% FINDFILE: Error managing child process.
Resource temporarily unavailable
% Execution halted at: $MAIN$ 177
/scratch/jon/trmm/check_sunrise.pro
appearing after a few loops. i have also tried the modified
find_file.pro.
from what i've been able to find, i am guessing that i have exceeded
memory allocation or some such. since the program ran prior to using
call_external, and all relevant changes are there, i am inclined to
look there first. any ideas? common pitfalls i might have stumbled
into? none of the initialized data types are growing in size, it seems
like it must come from repeated function access... the release is idl
5.4 on an SGI Origin. hopefully all relevant pieces of code below...
this line in my idl procedure:
s = call_external('coll.so','coll', $
long(nscan), $
geolocation, $
long(correctzfactor), $
latitude(c,d), $
longitude(c,d), $
convect)
calls this function:
void coll(int argc,void **argv)
{
int i, j, k;
float dlat, dlon, z;
int nscan = *(int *) argv[0];
int swath = 49;
int lev = 80;
float (*geolocation)[nscan][swath][2] = argv[1];
int (*correctzfactor)[nscan][swath][lev] = argv[2];
float lat = *(float *) argv[3];
float lon = *(float *) argv[4];
float (*convect)[2] = argv[5];
|
|
|