Closed SSoelvsten closed 3 years ago
On the last point, I'll have to ask though: does the user really need to specify this? This customization will probably turn into a slowdown. The more label bits we support, the fewer bits we support per layer. So, the more bits we have for the label, the more likely it is we will run out of identifiers. The specific size of each layer is described in the following table.
label bits | max_label |
id bits | nodes per level |
---|---|---|---|
16 | 65 535 | 46 | 1.5 PiB |
20 | 1 048 575 | 42 | 96 TiB |
22 | 4 194 303 | 40 | 24 TiB |
23 | 8 388 607 | 39 | 12 TiB |
24 | 16 777 215 | 38 | 6 TiB |
25 | 33 554 431 | 37 | 3 TiB |
26 | 67 108 863 | 36 | 1.5 TiB |
We intend to manipulate big BDDs, so each level shouldn't be too restricted in size. In all cases, one can technically run out of nodes (max size is 2max_label). Isn't the question really what is the number to cover all expected usage? To me, 22, 23 or 24 bits for the label seems the best choice? Sylvan has 24 bits for the label [Dijk16].
Partially in the same spirit as #15 it would be of use to us to hide initialisation of TPIE in an init function for Adiar. This function can provide one or more of the following options:
[X] Specify the memory allowed to be used. Implemented in #64
[X] Specify the folder to place the temporary files. Implemented in #93
[ ] Specify the number of bits used for the label, i.e. the
varcount
. Not implemented, but increased to 24 bits in #107 . See the comment further below.