[Swift-user] Output Files, ReadData and Order of Execution

Carolyn Phillips cphillips at mcs.anl.gov
Sat Sep 1 15:23:56 CDT 2012


Sure

There are a lot of extra stuff running around in the script, fyi

# Types 
type file;
type unlabeleddata;
type labeleddata;
type errorlog;

# Structured Types
type pointfile {
unlabeleddata points;
errorlog error;
}

type simulationfile {
file output;
}

# Apps
app (file o) cat (file i)
{
  cat @i stdout=@o;
}

app (file o) cat2 (file i)
{
  systeminfo stdout=@o;
}

app (pointfile o) generatepoints (file c, labeleddata f,  string mode, int Npoints)
{
  matlab_callgeneratepoints @c @f mode Npoints @o.points @o.error;
}

#app (simulationfile o) runSimulation(string p)
#{
#  launchjob p @o.output;
#}

#Files (using single file mapper)
file config <"designspace.config">;
labeleddata labeledpoints <"emptypoints.dat">;

type pointlog;

# Loop
iterate passes {

    # Generate Parameters
    pointfile np <simple_mapper;prefix="mypoints.",suffix=".dat">;
    np = generatepoints(config,labeledpoints, "uniform", 50);

    int checkforerror = readData(np.error);
    tracef("%s: %i\n", "Generate Parameters Error Value", checkforerror); 
    
    # Issue Jobs
    #simulationfile simfiles[] <simple_mapper;location="/scratch/midway/phillicl/SwiftJobs/",prefix=@strcat("output.",passes,"."),suffix=".job">;
    if(checkforerror==0) {
        unlabeleddata pl = np.points;
    	string parameters[] =readData(pl);
    	foreach p,pindex in parameters {
      		tracef("Launch Job for Parameters: %s\n", p);
                #simfiles[pindex] = runSimulation(p);
    	}
     }

    # Analyze Jobs

    # Generate Prediction



    # creates an array of datafiles named swifttest.<passes>.out to write to
    file out[]<simple_mapper; location=".", prefix=@strcat("swifttest.",passes,"."),suffix=".out">;

    # creates a default of 10 files
    foreach j in [1:@toInt(@arg("n","10"))] {
      file data<"data.txt">;
      out[j] = cat2(data);
    }

    # try writing the iteration to a log file
    file passlog <"passes.log">;
    passlog = writeData(passes);

    # try reading from another log file
    int readpasses = readData(passlog);
    
    # Write to the Output Log 
    tracef("%s: %i\n", "Iteration :", passes);
    tracef("%s: %i\n", "Iteration Read :", readpasses);

#} until (readpasses == 2);  # Determine if Done
} until (passes == 1);  # Determine if Done


On Sep 1, 2012, at 1:57 PM, Mihael Hategan <hategan at mcs.anl.gov> wrote:

> Can you post the entire script?
> 
> On Sat, 2012-09-01 at 12:29 -0500, Carolyn Phillips wrote:
>> Yes, I tried that
>> 
>>        unlabeleddata pl = np.points;
>>    	string parameters[] =readData(pl);
>> 
>> 
>> and I got
>> 
>> Execution failed:
>> 	mypoints..dat (No such file or directory)
>> 
>> On Aug 31, 2012, at 8:27 PM, Mihael Hategan <hategan at mcs.anl.gov> wrote:
>> 
>>> On Fri, 2012-08-31 at 20:11 -0500, Carolyn Phillips wrote:
>>>> How would this line work for what I have below?
>>>> 
>>>>>> string parameters[] =readData(np.points);
>>>> 
>>> 
>>> unlabeleddata tmp = np.points;
>>> string parameters[] = readData(tmp);
>>> 
>>>> 
>>>> 
>>>> 
>>>> On Aug 31, 2012, at 7:49 PM, Mihael Hategan <hategan at mcs.anl.gov> wrote:
>>>> 
>>>>> Another bug.
>>>>> 
>>>>> I committed a fix. In the mean time, the solution is:
>>>>> 
>>>>> 
>>>>> errorlog fe = np.errorlog;
>>>>> 
>>>>> int error = readData(fe);
>>>>> 
>>>>> On Fri, 2012-08-31 at 19:29 -0500, Carolyn Phillips wrote:
>>>>>> Hi Mihael,
>>>>>> 
>>>>>> the reason I added the "@" was because
>>>>>> 
>>>>>> now this (similar) line
>>>>>> 
>>>>>>  if(checkforerror==0) {
>>>>>>      string parameters[] =readData(np.points);
>>>>>>     }
>>>>>> 
>>>>>> gives me this:
>>>>>> 
>>>>>> Execution failed:
>>>>>> 	mypoints..dat (No such file or directory)
>>>>>> 
>>>>>> as in now its not getting the name of the file correct
>>>>>> 
>>>>>> On Aug 31, 2012, at 7:17 PM, Mihael Hategan <hategan at mcs.anl.gov> wrote:
>>>>>> 
>>>>>>> @np.error means the file name of np.error which is known statically. So
>>>>>>> readData(@np.error) can run as soon as the script starts.
>>>>>>> 
>>>>>>> You probably want to say readData(np.error).
>>>>>>> 
>>>>>>> Mihael
>>>>>>> 
>>>>>>> 
>>>>>>> On Fri, 2012-08-31 at 18:55 -0500, Carolyn Phillips wrote:
>>>>>>>> So I execute an atomic procedure to generate a datafile, and then next
>>>>>>>> I want to do something with that data file.  However, my program is
>>>>>>>> trying to do something with the datafile before it has been written
>>>>>>>> to.  So something with order of execution is not working.  I think the
>>>>>>>> problem is that the name of my file exists, but the file itself does
>>>>>>>> not yet, but execution proceeds anyway!
>>>>>>>> 
>>>>>>>> Here are my lines
>>>>>>>> 
>>>>>>>> type pointfile {
>>>>>>>> unlabeleddata points;
>>>>>>>> errorlog error;
>>>>>>>> }
>>>>>>>> 
>>>>>>>> # Generate Parameters
>>>>>>>> pointfile np <simple_mapper;prefix="mypoints.",suffix=".dat">; 
>>>>>>>> np = generatepoints(config,labeledpoints, "uniform", 50);
>>>>>>>> 
>>>>>>>> int checkforerror = readData(@np.error);
>>>>>>>> 
>>>>>>>> This gives an error :
>>>>>>>> mypoints.error.dat (No such file or directory)
>>>>>>>> 
>>>>>>>> If I comment out the last line.. all the files show up in the directory.  (e.g. mypoints.points.dat and mypoints.error.dat) )  and if forget to remove the .dat files from a prior run, it also runs fine!
>>>>>>>> 
>>>>>>>> How do you fix a problem like that?
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> Swift-user mailing list
>>>>>>>> Swift-user at ci.uchicago.edu
>>>>>>>> https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>> 
>>> 
>>> 
>> 
> 
> 




More information about the Swift-user mailing list