coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Enrico Tassi <enrico.tassi AT inria.fr>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] incremental vio2vo
- Date: Mon, 9 Jan 2017 10:33:55 +0100
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=enrico.tassi AT inria.fr; spf=None smtp.mailfrom=gares AT fettunta.org; spf=None smtp.helo=postmaster AT fettunta.org
- Ironport-phdr: 9a23:ZZzxCxwCjDLeg8jXCy+O+j09IxM/srCxBDY+r6Qd1O4SIJqq85mqBkHD//Il1AaPBtSHragfwLCH6ujJYi8p2d65qncMcZhBBVcuqP49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx7xKRR6JvjvGo7Vks+7y/2+94fdbghMizexe61+IRu5oQnPssQanJZpJ7osxBfOvnZGYfldy3lyJVKUkRb858Ow84Bm/i9Npf8v9NNOXLvjcaggQrNWEDopM2Yu5M32rhbDVheA5mEdUmoNjBVFBRXO4QzgUZfwtiv6sfd92DWfMMbrQ704RSiu4qF2QxLulSwJNSM28HvPh8J+jKxVvg+vqR9xw4HbfI6aKfhxca3GcNMGWWZMRNpdWzBbD4+iaYYEEuoPPfxfr4n4v1YAoh2+BROtBOzzzT9Dm2H40rch0+Q6EAHNwQstEMwIsHTOrdX6KKASXfqpzKbS1jXDdPJW1Cz86IjOaBAhoOuDUah+ccrL0EQiER7OgFuXqYzgJTyV1+INvnCa7+pmT+KvinQopxt/oji1wMonl4rHhpoNx13A+ih12pg5KNOiREN6ZdOoCoZcuz+YOoduX88vTWJltDw+x7AHo5K3YjQGxIg9yxPfavGKdZWD7Aj5W+aLOzh4gWpoeLKhiBa29kit0uP8Wdeo0FZWsypFlMXMuWoX2xzU8MiHReNx/kan2TmRywDe8uVJLE8umabFJZMt2L89m54JvUjeACP7ml36jKqMeUUl/uio5f7nYrLjppKEOI97kBv+Pbo1msGkD+Q3LBQOX3SG+eS6yL3s51f1QLJQjv05iqXZqozVJdwHpq6lBA9Yypos6xGmDzu/zNsYmWQHI0ledRKcj4npPknOL+riAfe+hVSsijZryOrcMr3vGJWeZkTExbzmZPN271NW4As119FWoZxOWZ8bJ/emd0nrtdffRiMwKBe1i7LqDs983YRYRWuUGa6xMaXIsFbO6Ph5cLrEX5McpDuoc6tt3PXpl3JswVI=
On Sun, Jan 08, 2017 at 10:31:29PM +0100, Ralf Jung wrote:
> However, this is also a question of the desired behavior. I can't
> imagine why doing vio2vo without first updating the vio files would be
> desirable, or why one would always want to re-generate all the files.
> But that doesn't mean it's never desirable, it may be just a lack of
> creativity on my side. I can sure propose a PR, but I also emailed the
> list here to acquire some feedback on what people think vio2vo should
> do. If it were up to me, I would get rid of vio2vo entirely and just
> let "make quick" do the full job -- essentially, making it so that "make
> quick J=X" is the faster "make -jX".
Having the intermediate step is a feature to me.
The point being that having x.vio is enough to Require x.
Sure, one typically wants to turn x.vio into x.vo, but it is good
that one can tell when compilation has reached a point where things
work again.
> But then there is this other target, checkproofs. It also depends on
> make quick being run first, but it doesn't actually generate any files
> so it can't really be made incremental. If "make quick" becomes "the
> fast make", then what should "make checkproofs" do?
Check proofs can exploit more cores, but can't generate .vo files (in
theory it is possible, but it requires quite some coding...).
> and instead there is a generic %.vo target in the Makefile that uses the
> corresponding %.vio file and has no further dependencies. This would
> mean that vio2vo scheduling is done by make, not Coq (but since PG can
> do that scheduling, I assume that's fine and it doesn't have to be Coq
> doing the scheduling).
I think that for many use cases the scheduling done by make is just fine.
The one Coq performs is optimal (if you have .aux files around) but it
really matters only for developments where at least 1 file is very slow
(you want to start with that one on one core, for example).
> It would thus be incremental just by make's
> usual magic; really, the hack I proposed above is re-implementing some
> of the logic that make usually takes care of. And it could use CPUs with
> higher numbers of cores better, because the v -> vio and vio -> vo
> phases are interleaved, so if there's not enough v -> vio jobs (because
> the development does not have sufficient parallelism), some vio -> vo
> jobs can already run on the spare cores.
I agree, still the hope is that v->vio is fast, so wasting some cores
in that phase is not very relevant.
> Oh, and finally, this would probably run into
> <https://coq.inria.fr/bugs/show_bug.cgi?id=5223>: As final .vo files
> start to appear while
> v -> vio is still running, Coq would start making different choices
> about importing vio vs vo files, resulting in compilation failure. Not
> sure what to do about this one. Maybe Coq should prefer the vio file
> over the vo file if both are in the same directory, no matter the timestamp?
Yep, I guess we need a flag for that.
Anyway, I think this technical discussion should be either moved to
coqdev or to github. I'd like to reach a stage where coq_makefile2
is just a replacement for coq_makefile, and then eventually improve it.
So maybe we could work on a CEP to make the user cases clear, discuss
that proposal on this venue, and finally hack the makefiles.
Best,
--
Enrico Tassi
- [Coq-Club] incremental vio2vo, Ralf Jung, 01/06/2017
- Re: [Coq-Club] incremental vio2vo, Enrico Tassi, 01/08/2017
- Re: [Coq-Club] incremental vio2vo, Ralf Jung, 01/08/2017
- Re: [Coq-Club] incremental vio2vo, Enrico Tassi, 01/09/2017
- Re: [Coq-Club] incremental vio2vo, Ralf Jung, 01/09/2017
- Re: [Coq-Club] incremental vio2vo, Enrico Tassi, 01/09/2017
- Re: [Coq-Club] incremental vio2vo, Ralf Jung, 01/09/2017
- Re: [Coq-Club] incremental vio2vo, Enrico Tassi, 01/09/2017
- Re: [Coq-Club] incremental vio2vo, Ralf Jung, 01/08/2017
- Re: [Coq-Club] incremental vio2vo, Enrico Tassi, 01/08/2017
Archive powered by MHonArc 2.6.18.