Skip to content
This repository has been archived by the owner on Apr 25, 2024. It is now read-only.

Parallel prover implementation for APRProofs #727

Open
wants to merge 188 commits into
base: master
Choose a base branch
from

Conversation

nwatson22
Copy link
Member

@nwatson22 nwatson22 commented Nov 15, 2023

  • Adds ParallelAPRProver and ParallelAPRBMCProver, which implement ParallelProver interface for APR and APRBMC proofs
  • Adds interface ProcessData, implemented by APRProcessData, for passing in data into a process at the beginning and sharing data within the same process, but between different tasks
  • To enable this, switches to using manual queues and process spawning in prove_parallel
  • Adds tests exercising parallel proving with APRProver, APRProof, and APRProcessData

Blocked on runtimeverification/hs-backend-booster#383
Blocked on runtimeverification/evm-semantics#2272

nwatson22 and others added 30 commits October 31, 2023 14:22
@@ -76,7 +80,7 @@ class ProofStep(ABC, Generic[U]):
"""

@abstractmethod
def exec(self) -> U:
def exec(self, data: D) -> U:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My understanding is that data is fixed for a given run of prove_parallel. What's the advantage of providing data as an argument to exec and not in __init__ of the Prover implementation?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it is now fixed, but I'm still using at as a way to only pass in large objects to the worker threads once at the beginning. With the way you suggest is there a different way exec could get access to the data?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Prover instantiates ProofStep, so if Prover has access to data, then it can also pass it to ProofStep during instantiation. The exec method then reads data from its instance.

src/pyk/proof/reachability.py Outdated Show resolved Hide resolved
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants