Skip to content
  • Robert Ricci's avatar
    Give assign the ability to make dynamic pclasses. Here's how it works: · fbcd6752
    Robert Ricci authored
    After building the set of pclasses normally, we make another pass
    through the vnodes. The goal to create a pclass for each individual
    node. We disable the node's 'own' pclass to begin with. Then, the
    _first_ time it gets a vnode mapped to it, we remove it from the
    'regular' pclass it belongs to, and enable it's own pclass. Then, if
    it goes empty, we put it back in its regular pclass and disable it's
    own.
    
    The point of this is to replace -p for use with multiplexed nodes.
    Instead of disabling pclasses altogheter, which has serious
    performance implications, we can instead be smart about which pnodes
    remain equivalent (because nothing's been mapped to them), and which
    are now different. The result is that on my test topoloy, the time to
    get a good mapping has gone from over 3 minutes to about 6 seconds.
    
    This feature is enabled with the -d option, and the -P option is
    pretty much mandatory when using it, since it greatly exacerbates the
    problem of cruft in the ptop file.
    
    This satisfies #14 from the todo file:
    14.  do dynamic pclasses
    
    Also bumped up the minimum neighborhood size from 500 to 1000. In some
    tests I was doing, this resulted in better solutions.
    fbcd6752