Open m8pple opened 2 years ago
I can't reproduce this (hohoho). That said, I have a few thoughts.
The random algorithm works in the following way (with implementationy bits in parentheses):
Placer::define_valid_cores_map
)Placer::redistribute_devices_in_gi
)Based off this, I think the ff
device is being left until the end, at which point there are no cores available for it, because it is of a different device type.
Solutions:
Workarounds:
ff
at the top of your DeviceInstances
element in your application XML.ff
to use the same device type as your other devices.Also, the error message in this case is pretty unhelpful - need to refactor that.
Allow the algorithm to "reserve" certain cores for certain device types (a bit like what the spread method does). This would make the algorithm "less random" however, so is undesirable.
One way I can think to keep the randomness is to introspect the number of device types that are actually used in the graph (not just declared) to work out how many sets of cores are needed and what the max/min number of cores should be, e.g. 1 set per type with minimum 1 and maximum something sensible. Allocate cores randomly to the sets. These sets then replace the set from step 1.
Put ff at the top of your DeviceInstances element in your application XML.
This application-specific workaround allows random to place correctly.
When trying to place a graph using the "rand" method, the following error shows up:
This appears to happen for graphs over a certain size. For smaller graphs it completed, for larger graphs the same error. This was approximately the first graph size where it failed.
Context