Proposal to the mapping section in GRP file.

  • first proposal
  • second proposal
  • third proposal
  • fourth proposal
    This is the final (5-th) version :
    Section: Mapping
    {
      Group: MappingOptions
      {
        smethod = "Diffu";
        dmethod = "0";
      }
      Group: TaskGraph
      {
        ntask = 7;
        task_name = "master", "sl1", "sl2", "sl3", "sl4", "sl5", "sl6";
        fixed = 0;
        load = 2, 1, 1, 1, 1, 1, 1;
        nchan = 14;
        tcomm = 0,1,1, 0,2,1, 0,3,1, 0,4,1, 0,5,1, 0,6,1,
                1,0,1, 2,0,1, 3,0,1, 4,0,1, 5,0,1, 6,0,1;
      }
      Group: ProcessorGraph
      {
        nproc = 4;
        proc_name = "ups", "savba", "sierra", "sfinx";
        speed_time = 400, 150, 350, 950;
        pcomm = 100, 400, 100, 1200,
                500, 300, 400, 500,
                300, 400, 100, 600,
                700, 800, 700, 100;
      }
    }
    
    Here is an example GRP_file (with mapping part). And here is more info about PS mapping tool options.
    The mapping section includes MappingOptions, where can be 2 parameters:
  • 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
  • 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 (used for load-balancing)
  • 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
      {
        location = 0, 1, 2, 3, 1, 2, 3;
        imbalance = 1.34;
        comm_cost = 254;
        method = "Diffu";
        time = 0.15;
      }
    }
    
    I use third possibility of "how return mapping results to the application" - direct, the compiled "a.out" binary read them as external data file, i.e. application need not be recompiled (grapnel nor cc). This external file has the following looks:
    - It is a text file, one line per process
    - In the lines is pair of "process_name" and "PVM_host_name" separated with space
    - The first line has a special meaning: it contains only one item - number of following lines


    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



    Remarks to the changes of the 4-th to 5-th version.

  • One variable name was changed (e.g. "speed" -> "speed_time").
  • One variable was added (e.g. "time" in StaticResult group).