[aspect-devel] inconsistency in use of x, y, and z

Jonathan Perry-Houts jperryh2 at uoregon.edu
Wed Mar 11 20:14:13 PDT 2015


Yeah, the problem is that mpirun only sends stdin to process 0, so I
just write a temp file on process 0, tell the other processes where to
find it, and let them all open it independently, then delete it once
they've all had a chance to read it.

It would also be possible to just let process 0 deal with the input (be
it a file, or stdin) and send the whole thing as a string to all other
instances via MPI. Or something like that. If this is actually something
that anyone would use I could change it to work that way, but otherwise
I won't bother.

On 03/11/2015 07:27 PM, Wolfgang Bangerth wrote:
> On 03/11/2015 09:09 PM, Jonathan Perry-Houts wrote:
>> I don't know if this would be helpful, but I added a quick hack to allow
>> Aspect to accept parameter files via stdin
>> (ie `cat input.prm | mpirun aspect`). This would allow arbitrary
>> modification by shell tools before Aspect ever sees the parameter file.
>>
>> https://github.com/jperryhouts/aspect/tree/read_stdin
> 
> I think that's too complicated.
> 
> First, do you need to write the tmp parameter file? What happens with
> whatever you pipe into mpirun? Is it passed to every instance of aspect,
> or only to the first?
> 
> Second, there is a Unix convention by which you indicate that you want
> to write input from stdin rather than from an input file by using the
> special "filename" '--' as argument. I.e., you could do something like
> this:
> 
>   Assert (argc==2);
> 
>   std_cxx11::shared_ptr<std::ifstream> input_file_stream;
>   std::ifstream *input_stream;
>   if (std::string(argv[1]) != std::string("--"))
>     {
>       input_file_stream.reset (new std::ifstream(argv[1]));
>       Assert (*input_file_stream);
>       input_stream = input_file_stream.get();
>     }
>   else
>     {
>       input_stream = &std::cin;
>     }
>   ...read parameters from *input_stream...;
> 
>   // input_file_stream goes out of scope and automatically deletes the
>   // std::ifstream object if it was assigned
> 
> Best
>  W.
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://lists.geodynamics.org/pipermail/aspect-devel/attachments/20150311/8fa182cd/attachment.sig>


More information about the Aspect-devel mailing list