Proposal to the mapping section in GRP file ( !old : 11feb96! ).

  • first proposal
  • second proposal
    This is 3.1 version (using 'c_statement' syntax) :
    Section: Mapping
    {
      Group: MappingOptions
      {
        char smethod = 'D';
        char dmethod = '0';
      }
      Group: TaskGraph
      {
        int ntask = 7;
        char *task_name[] = {"master", "sl1", "sl2", "sl3", "sl4", "sl5", "sl6"};
        int fixed = 0;
        int load[] = {2, 1, 1, 1, 1, 1, 1};
        int nchan = 14;
        int tcomm[][3] = {0,1,1, 0,2,1, 0,3,1, 0,4,1, 0,5,1, 0,6,1, 0,7,1,
                          1,0,1, 2,0,1, 3,0,1, 4,0,1, 5,0,1, 6,0,1, 7,0,1};
      }
      Group: ProcessorGraph
      {
        int nproc = 4;
        char *proc_name[] = {"ups", "savba", "sierra", "sfinx"};
        int speed[] = {400, 150, 350, 950};
        int pcomm[] = {100, 400, 100, 1200,
                       500, 300, 400, 500,
                       300, 400, 100, 600,
                       700, 800, 700, 100};
      }
    }
    The mapping section includes MappingOptions, where can be 2 parameters: PS more...(mapping tool options)
  • the choosen static mapping method (greedy/iterative/huge..., i.e. '1','2','B','D','S'...)
  • the switch if the dynamic load-balancing should take place and its mode (i.e. '0','1',...)

    We need to know the task structure, i.e. task graph. In our proposal there can be

  • number of parallel-running tasks ntask
  • their names (this isn't needed for the mapping)
  • task that must be fixed placed at node 0 (this line is optional)
  • load value for each task
  • number of communication channels (channel is one-directional)
  • communication traffic between all the connected task pairs through the channels

    We also need to know the hardware structure, i.e. processor graph. There can be in this group

  • number of (PVM/MPI/...) hosts nproc
  • their names (necessary for PVM : pvm_spawn !)
  • their computational powers (additional info, our recent mapping tool doesn't use it)
  • their interconnection costs (the diagonale values mean the inter-node comm. costs)

    The output that mapping tool creates can be written in the StaticResult group as follows:

    Section: Mapping
    {
      Group: StaticResult
      {
        int location[] = {0, 1, 2, 3, 1, 2, 3};
        double imbalance = 1.34;
        int comm_cost = 254;
        char method = 'D'; /* diffu */;
      }
    
    }
    I propose to use third possibility of "how return mapping results to the application" - direct to the compiled "a.out" binary as external data file, i.e. application need not be recompiled (grapnel nor cc). This external file can have the same looks as the line "int location = ...".
    Questions to the GRAPNEL-definition & GRED people:

  • is this 'c_statement' syntax suitable ? The leading key word for lexical analyse parser may be one of 'int', 'char'.

    Questions to the Mapping and Simulation people:

  • do you agree with this format?
  • are these data sufficient (suggest your requirements)
    -> we had agreed on the format, but world is changing :-(

    Comments send, please, to me or to mapping_format_interesting_people_mailing_list.

    up



    3.1. Remarks to the changes of the 3-rd version.

  • Some group names were changed
  • Some variable names and types are changed (e.g. "static" -> "smethod", "dynamic" -> "dmethod", ...).
  • 2-dimensional array was changed to 1-dimensional one (for text-reading purpose only): "int pcomm[][4]" -> "int pcomm[]"