<HTML dir=ltr><HEAD><TITLE>Re: [mpich-discuss] program in system() executes before prior onefinishes</TITLE>
<META content="text/html; charset=unicode" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.7600.16671"></HEAD>
<BODY>
<DIV dir=ltr id=idOWAReplyText64782>
<DIV dir=ltr><FONT color=#000000 size=2 face=Arial>Thanks for your response, Jayesh.&nbsp; The lines of cod</FONT><FONT color=#000000 size=2 face=Arial>e I've presented are actually written and executed in R, while the executables "swat_Edit.exe" and "swat2009.exe" are written and compiled in Fortran.&nbsp; I used the latest Intel Fortran compiler to compile swat2009.exe, but cannot alter swat_Edit.exe, as I do not have the source code.&nbsp; </FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>system("start /w swat_Edit.exe") does not work in R.&nbsp; As far as Fortran, I'm sure you are more of an expert in it than I am.&nbsp; You seem to be saying that I might be able to write some Fortran code&nbsp;that&nbsp;that forces swat2009.exe to wait until swat_Edit.exe completely finishes.&nbsp; Is that right?</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>I appreciate even your guesses because I've been stumped by this for so long.&nbsp; And that goes for everyone else out there, too...even guesses/brainstorming are appreciated.</FONT></DIV>
<DIV dir=ltr><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT size=2 face=Arial>John Joseph</FONT></DIV></DIV>
<DIV dir=ltr><BR>
<HR tabIndex=-1>
<FONT size=2 face=Tahoma><B>From:</B> Jayesh Krishna [mailto:jayesh@mcs.anl.gov]<BR><B>Sent:</B> Fri 12/3/2010 9:17 AM<BR><B>To:</B> John Joseph<BR><B>Cc:</B> mpich-discuss@mcs.anl.gov<BR><B>Subject:</B> Re: [mpich-discuss] program in system() executes before prior onefinishes<BR></FONT><BR></DIV>
<DIV>
<P><FONT size=2>Hi,<BR>&nbsp;I am not a FORTRAN expert. Is system(...,...,...) (The version with 3 args) available with your compiler ? Which compiler are you using ?<BR>&nbsp;If you are running on Windows you can try,<BR><BR>=====================================<BR><BR>&nbsp;system("start /w swat_Edit.exe")<BR>&nbsp;system("swat2009.exe")<BR><BR>=====================================<BR><BR>Regards,<BR>Jayesh<BR><BR>----- Original Message -----<BR>From: John Joseph &lt;John.Joseph@utsa.edu&gt;<BR>To: mpich-discuss@mcs.anl.gov<BR>Sent: Fri, 03 Dec 2010 07:03:08 -0600 (CST)<BR>Subject: [mpich-discuss] program in system() executes before prior one&nbsp; finishes<BR><BR><BR>Hello,<BR><BR>I have a problem I've been struggling with for months, and I'm thinking that folks that deal with parallel processing are the most likely ones to be able to solve it.&nbsp;<BR><BR>I have this simple code that I run in R on various Windows XP and Windows 7:<BR><BR>system("swat_Edit.exe",wait=FALSE,invisible=FALSE)<BR>system("swat2009.exe")<BR><BR>(Both swat_Edit.exe and swat2009.exe are compiled in Fortran.&nbsp; I have access to the swat2009.exe source code, but not to the swat_Edit.exe source code.)<BR><BR>In the first of the above two lines, swat_Edit.exe opens hundreds of ASCII files having data descriptive of water basin characteristics, edits them, and then closes them.&nbsp; In the second line, swat2009.exe reads those files to calculate streamflow at the water basin outlet.&nbsp;&nbsp; These two code lines are actually part of a loop in which the set of ASCII files is revised and the corresponding streamflow is calculated, and the loop typically cycles about 10,000 times.&nbsp; In each new cycle the streamflow calculated from the previous cycle is needed to direct swat_Edit.exe in revising the ASCII files so that swat2009.exe can calculate the streamflow for the new cycle.<BR><BR>Now, the problem is this: swat2009.exe sometimes begins executing BEFORE swat_Edit.exe finishes revising and closing all the ASCII files.&nbsp; As a partial remedy, I insert a Sys.sleep() line like this:<BR><BR>system("swat_Edit.exe",wait=FALSE,invisible=FALSE)<BR>Sys.sleep(7)<BR>system("swat2009.exe")<BR><BR>But this doesn't always work.&nbsp; It might work for, say, 7,553 cycles, but then on the 7,554th swat2009.exe starts before swat_Edit.exe is quite finished, and then the whole set of simulations, which takes a day or two, must start all over again.&nbsp; Also, Sys.sleep() adds time to the whole process.&nbsp; The higher the argument in Sys.sleep(), the less likely the crash, but the more the slow down - and the risk of swat2009.exe starting too soon is never completely eliminated even for Sys.sleep() times that far exceed the average time it takes swat_Edit.exe to complete its task.<BR><BR>The common sense reader might say, "Why not change the 'wait=FALSE' argument in the first line to 'wait=TRUE'?"&nbsp; Well, if I do that the command won't execute.&nbsp; I can change 'invisible=FALSE' to 'invisible=TRUE', but that doesn't seem to make a difference.<BR><BR>The problem is worst on my Core-i7, but also happens on an old single-processor computer I have.<BR><BR>MPICH and Rmpi are installed on my computers, and I'm hoping that I can somehow use them to positively prevent swat2009.exe from starting before swat_Edit.exe finishes.&nbsp;<BR><BR>I'm a newbie as far as mpi goes.&nbsp; Any ideas?&nbsp; Your help would be much appreciated.<BR><BR>John Joseph<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR></FONT></P></DIV></BODY></HTML>