Constraint solver iterations

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Constraint solver iterations

amindfv
To build the 'vivid' package (on Hackage) with recent versions of GHC (I believe the problem is with 8.0+, didn't see it before then), I need to compile with -fconstraint-solver-iterations=0. (0 meaning unbounded)

However, I noticed today that the GHC docs say "Typically one iteration suffices; so please yell if you find you need to set it higher than the default."

The code (in Vivid.SynthDef.FromUA) uses a large amount of type family recursion. Is this not a case where I should be yelling? If I should be, I can provide a smaller repro case.

If this is expected, are there techniques for rewriting the code in a way that'll fit under the default number of iterations? I've tried rewriting, making the number of iterations logarithmic instead of linear (e.g. by appending lists instead of cons-ing), but still hit the problem (even with an increased but bounded number of iteration steps).

Thanks!
Tom
_______________________________________________
ghc-devs mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
Reply | Threaded
Open this post in threaded view
|

RE: Constraint solver iterations

GHC - devs mailing list
I'd love to see the repo case.

with -ddump-simpl-iterations -ddump-simpl-stats you'll see the result after each iteration, and what was done.  I bet you get to the point where only one thing happens per iteration and that's bad.

Make a ticket!

Thanks

Simon

|  -----Original Message-----
|  From: ghc-devs [mailto:[hidden email]] On Behalf Of
|  [hidden email]
|  Sent: 27 April 2017 16:18
|  To: [hidden email]
|  Subject: Constraint solver iterations
|  
|  To build the 'vivid' package (on Hackage) with recent versions of GHC
|  (I believe the problem is with 8.0+, didn't see it before then), I
|  need to compile with -fconstraint-solver-iterations=0. (0 meaning
|  unbounded)
|  
|  However, I noticed today that the GHC docs say "Typically one
|  iteration suffices; so please yell if you find you need to set it
|  higher than the default."
|  
|  The code (in Vivid.SynthDef.FromUA) uses a large amount of type family
|  recursion. Is this not a case where I should be yelling? If I should
|  be, I can provide a smaller repro case.
|  
|  If this is expected, are there techniques for rewriting the code in a
|  way that'll fit under the default number of iterations? I've tried
|  rewriting, making the number of iterations logarithmic instead of
|  linear (e.g. by appending lists instead of cons-ing), but still hit
|  the problem (even with an increased but bounded number of iteration
|  steps).
|  
|  Thanks!
|  Tom
|  _______________________________________________
|  ghc-devs mailing list
|  [hidden email]
|  https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.h
|  askell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
|  devs&data=02%7C01%7Csimonpj%40microsoft.com%7C897af52446cd4b1cefd608d4
|  8d785fa6%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6362889955277201
|  33&sdata=POYwck2lKRtnKCfC%2FNAASG8ZBvm2lFiuFaCCDminogc%3D&reserved=0
_______________________________________________
ghc-devs mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs