Closed treiher closed 1 year ago
Unfortunately, using why3server -j $(nproc)
with gnatprove -j 1
does not sufficiently reduce the required memory.
Failing CI test: https://github.com/Componolit/RecordFlux/actions/runs/3621700551/jobs/6105479206 Used setup: https://github.com/Componolit/RecordFlux/blob/ba411ffdb2b6627125b245e3600442ed36f2d28c/Makefile#L180-L186
With the current configuration, two gnatprove
processes are run in parallel. At most, two provers (due to why3server -j 2
) and two gnatwhy3
process (due to two parallel gnatprove -j 1
) are run in parallel.
I discussed the issue with @kanigsson. We see only two options:
--memlimit
to reduce the memory required by gnatwhy3
.gnatprove
instance (no why3server
needed).Reducing --memlimit
works. I will create a PR for allowing multiple parallel GNATprove processes. But I do not see an advantage in using a why3server
when running GNATprove with -j 1
, which restricts GNATprove to just use one gnatwhy3
or one prover in parallel, as parallelization is only achieved by multiple GNATprove processes. So I think it doesn't make sense to follow this route, as long as there is no possibility to limit the number of gnatwhy3
processes independently of the number of parallel provers.
The use of
why3server
could allow running multiplegnatprove
instances in parallel without the potential issue of getting a memory shortage due to too many provers running in parallel.