Greetings, Chaps,

I have some questions regarding parallel IO, in the context of some basic (1d 
block decomposed) arrays. Apologies in advance if I'm missing this information 
in the documentation or examples:

1) Can order be enforced for writing? Writing within a forall loop, each core 
writes its part of an array, apparently simultaneously, and so things are 
interleaved. I tried this: 

                           const IOHINT_PARALLEL = QIO_HINT_PARALLEL;

                           var MatrixOutput = open ( output_matrix_filename, 
iomode.cw, IOHINT_PARALLEL );

                           var AdjMatChannel = MatrixOutput.writer();

                           forall i in AdjMatrix.dom_nnz with (ref 
AdjMatrix.rowidx ) { //  AdjMatrix is a record; can't "ref" a field? Guess it 
doesn't really matter.
                                 AdjMatChannel.writeln ( AdjMatrix.rowidx[i], " 
", AdjMatrix.colidx[i] );

2) So far only running on-node. Any expectations/tips for multinode, in 
particular useful means your found for controlling writing, reading, and 
otherwise managing? 

3) For multinode, is it possible to configure to write to N files, where N=one 
per node, one per subset of nodes, or one global file? 

        a) I do intend to read the file back in and operate on it, where if the 
same number of locales I expect N=one per node to work, otherwise I expect N=1 
necessary. Correct?

4) At this point I’m writing text, but will switch to binary once confident 
things are working. Any tips in this regard?

Suggestions, experiences, etc much appreciated.

Richard





_______________________________________________
Chapel-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-users
  • Chapel IO Barrett, Richard F via Chapel-users

Reply via email to