Closed SSoelvsten closed 8 months ago
Asking Randy Bryant, Jaco van de Pol, and Anna Blume Jakobsen, they all confirm we can decrease the number of labels with a few bits.
With #591 we already brought the maximum safe BDD size back up 12 TiB; this seems out of reach for most (and even our own experiments). Hence, I will just close it for now.
Currently, the
ptr_uint64
class has the number of bits for the label set to 24 (similar as Sylvan). Yet, after the change #475, we have removed another bit from the level index. This decreases the maximum level size to 3 TiB and the largest BDD at 6 TiB before possibly breaking due to overflow errors.Choices:
In ascending order of number of bits:
If we fix the number of variables to be 16 bits, i.e. it fits into a
uint16_t
, then the compiler can give overflow warnings. This might be welcomed by the end-user.By default, the maximum file size on Linux (with
ext4
) is 16 TiB. We should at least support a BDD of this size, i.e. where the largest level is up to 8 TiB wide. Hence, we would want to use 39 bits for the level (12 TiB).In fact, considering #154, we may want to support each level reaching the maximum file size. This would require one more bit, i.e. the id needs 40 bits. Yet, at this point you have a single BDD of at least 32 TiB. Is this even realistic?
Other Tasks:
Additional Context:
For reference, here are the upper bounds in other BDD packages