OpenQL
OpenQL copied to clipboard
Mapper resource usage and resource implementation discrepancy
While refactoring the resource management system, I added an asserion statement that checks whether the scheduling direction specified during construction is actually adhered to by the calls to available() and reserve(). Turns out that the mapper does not adhere to this.
available()is frequently called with lower cycle numbers than the most recentreserve(): see logs;- when the cycle order requirement is weakened to only checking
reserve()calls it still goes wrong: see logs; - when instead of an assertion
available()is modified to simply return false when cycles aren't in order (without invoking the actual resource implementation), virtually all mapper test cases fail with (after a very cursory look) significantly different output files: see logs.
Hans already noted that it is expected behavior that the mapper doesn't strictly adhere to the cycle order it specifies, but as far as I know the current resources cannot deal with this at all. This should probably be checked more closely. I'd already had the idea to extend the direction enumeration with a "random access" variant, but that's yet to be implemented for any resource.