The Math Forum

Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Math Forum » Discussions » Software » comp.soft-sys.matlab

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: parfor: keep outputs with same output filename
Replies: 12   Last Post: Aug 1, 2013 2:35 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]

Posts: 9,850
Registered: 6/7/07
Re: parfor: keep outputs with same output filename
Posted: Jul 23, 2012 10:34 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

On 7/23/2012 4:45 AM, Mike wrote:

...[top posting repaired--please don't do that; hard conversation follow

> On Sunday, July 22, 2012 2:20:58 AM UTC+8, dpb wrote:

>> I presume you're looking for the'append' option for fopen???
> To be more clear, I simply my question with follows:
> 2) in matlab, I have following:
> fid2=fopen('test.dat','a'); % this file should be run parallel'
> matlabpool open local 3
> parfor i=1:100
> fid1=fopen('inputpar.dat','w'); % be read by Console2.exe
> fprintf(fid1,'%2d\n',i);
> fclose(fid1);
> dos('Console2.exe<inputpar.dat');

> Then I run this cell (step 2), I have the results:
> Starting matlabpool using the 'local' configuration ... connected to

3 labs.
> fortran main : 64
> fortran main : 64
> fortran main : 64
> ??? Error using ==> parallel_function at 598
> Error in ==> parallel_function>make_general_channel/channel_general

at 894
> Invalid file identifier. Use fopen to generate a valid file
> identifier.
> I've checked the content in inputpar.dat is 64.
> I've also checked the content in fort.30 is also 64.
> I also check

>>> out=importdata('fort.30')
> out =
> 64
> I don't understand the error message shown above.
> May you explain for me?


My guess is the problem is one of timing--the file is locked by another
process when you're trying to open it in all likelihood. This is a very
difficult thing to try to get to work as you've written it.

Start by

[fid1,msg]=fopen('inputpar.dat','w'); % be read by Console2.exe
if fid1==-1

And at least you'll know fid1 isn't valid and stop and have the system
error message.


Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2018. All Rights Reserved.