Give assign the ability to make dynamic pclasses. Here's how it works:
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.
Showing with 145 additions and 77 deletions