[ET Trac] [Einstein Toolkit] #1743: Reduce number of output files per directory

Einstein Toolkit trac-noreply at einsteintoolkit.org
Sun Sep 25 10:51:19 CDT 2016


#1743: Reduce number of output files per directory
-----------------------+----------------------------------------------------
  Reporter:  eschnett  |       Owner:                     
      Type:  defect    |      Status:  review             
  Priority:  unset     |   Milestone:                     
 Component:  Other     |     Version:  development version
Resolution:            |    Keywords:                     
-----------------------+----------------------------------------------------

Comment (by rhaas):

 I think I would like to get back to this. Though I would try and attempt a
 different solution that is more likely to capture all output files.

 As far as I can tell almost all thorns producing output base the output
 path on IOUtil::out_dir (the exception being the "real" output thorns in
 Carpet and PUGH which have their own out_dir options that can optionally
 be used).

 So I would try and make IOUtil set {{{out_dir}}} to the directory in the
 hierarchy. Unfortunately the parameter is currently steerable on recovery
 only (I suspect since IOUtil will only attempt to create the directory at
 simulation startup).

 So a way to make this work is to add a special variable or so to piraha
 that expands to the proper directory hierarchy, so that eg:

 {{{
 IOUtil::out_dir = "$parfile/$MPI_hierarchy"
 }}}

 is expanded to:

 {{{
 IOUtil::out_dir = "parfile-name/1/4/"
 }}}

 on MPI rank 140 to 149 and similar for the others, having groups of 10 in
 each intermediate directory. If we want more files per output directory
 we'd use some other factor to bundle up the runs. Eg the equivalent of
 this perl code:
 {{{#!perl
 $size = 120000;
 $rank = 78923;
 $lumpsize = 100;
 @path = ();
 # put $lumpsize ranks in the same output directory
 $size = int($size / $lumpsize);
 $rank = int($rank / $lumpsize);
 while($size) {
   $idx = $rank % $lumpsize;
   $rank = int($rank / $lumpsize);
   $size = int($size / $lumpsize);
   push path,sprintf("%02d",$idx);
 }
 print join("/", reverse @path),"\n";
 }}}

 We can also decide to not put multiple ranks in the same directory by
 remove the two lines before the loop.

-- 
Ticket URL: <https://trac.einsteintoolkit.org/ticket/1743#comment:18>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit


More information about the Trac mailing list