Question of multithread usage of JDD
Issue #6
wontfix
Dear developer, I am a student working on a projects which is very demanding on performance, using this JDD library. I would like to run multithreads to compute BDDs using the BDD class in JDD, but I found that the BDDs(the integer identifiers actually) generated by different BDD instances could't do boolean operations with each other, while multiple threads accessing the single same BDD instance will cause synchronization problems (adding synchronized lock makes performance no better than using single thread). So I wonder if you can give me some pointers on computing BDDs with multithreads so that I can gain benefits from parallelism? Many Thanks.
Comments (3)
-
repo owner -
repo owner -
assigned issue to
- marked as minor
-
assigned issue to
-
repo owner - changed status to wontfix
- Log in to comment
A BDD context in JDD (or any other library I know of) is not thread-safe by design. You can use different contexts for each thread but as you pointed out that will give you BDDs with conflicting internal labeling (i.e. they belong to different node-tables) and as such cannot participate in operations.
In theory, you could move BDDs between context (JDD does not implement this although it should be fairly trivial) but that might not not gain you much in performance.
I am not aware of any working parallel BDD libraries, but a quick search came up with some interesting publications: