Singular https://www.singular.uni-kl.de/forum/ |
|
tracking normal to find out where/why it is hanging https://www.singular.uni-kl.de/forum/viewtopic.php?f=10&t=2479 |
Page 1 of 1 |
Author: | leonada [ Mon Dec 08, 2014 9:36 pm ] |
Post subject: | tracking normal to find out where/why it is hanging |
LIB "normal.lib"; ring r=2,(y,x),wp(37,31); ideal i=y31+y12x17+x37; list nor=normal(i);nor; has been running for maybe 200 hours (3.7 GB), on this problem that can almost be done by hand. It takes my QthPower algorithm maybe 9 seconds in M2. How can I rerun this and trace what is taking so much time? [I assume it is a kernel computation, though it could be a GB computation.] |
Author: | hannes [ Tue Dec 09, 2014 11:45 am ] |
Post subject: | Re: tracking normal to find out where/why it is hanging |
To find out where it is hanging: press ctrl-c and you will be asked Code: // ** Interrupt at cmd:`$INVALID$` in line:' iwork=phi(iwork);' abort after this command(a), abort immediately(r), print backtrace(b), continue(c) or quit Singular(q) ? Answering with b presents the backtrace. The problem here is that the routine simplifyIdeal from primdec.lib does not work in char 2. To fix it, substitute simplifyIdeal by Code: static proc simplifyIdeal(ideal i)
{ ASSUME(1, hasFieldCoefficient(basering) ); ASSUME(1, not isQuotientRing(basering) ) ; ASSUME(1, hasGlobalOrdering(basering) ) ; def r=basering; int j,k; map phi; poly p; ideal iwork=i; ideal imap1=maxideal(1); ideal imap2=maxideal(1); if (char(r)!=2) { for(j=1;j<=nvars(basering);j++) { for(k=1;k<=ncols(i);k++) { if(deg(iwork[k]/var(j))==0) { p=-1/leadcoef(iwork[k]/var(j))*iwork[k]; imap1[j]=p+2*var(j); phi=r,imap1; iwork=phi(iwork); iwork=subst(iwork,var(j),0); iwork[k]=var(j); imap1=maxideal(1); imap2[j]=-p; break; } } } } return(iwork,imap2); } |
Author: | leonada [ Tue Dec 09, 2014 5:00 pm ] |
Post subject: | Re: tracking normal to find out where/why it is hanging |
Well I tried ctrl-c, then ctrl-c ctrl-c gives me only the choices (a)bort current command, (q)uit, (r)estart Singular or (c)ontinue? Then I tried this in Singular instead of ESingular to finally get the print backtrace(b) option. But this seems to be characteristic independent. ring r=0,(y,x),dp; ideal i=y31+y12x17-2y6x27+x37; list nor=normal(i);nor; seems to hang at the same command iwork=phi(iwork) |
Author: | hannes [ Thu Dec 11, 2014 5:59 pm ] |
Post subject: | Re: tracking normal to find out where/why it is hanging |
True, the problem was that the simplification was using larger and larger maps which led to huge computation times. A re-ordering of the variables to consider for simplifications helps (independend of characateristic). Get a new primdec.lib from [url] https://github.com/Singular/Sources/blo ... rimdec.lib [/url] |
Author: | leonada [ Tue Dec 30, 2014 9:08 pm ] |
Post subject: | Re: tracking normal to find out where/why it is hanging |
Is there now a bug in primdec.lib with something such as changeordTo? Try the example for given integralBasis to see if you get the same error I did. |
Author: | hannes [ Wed Dec 31, 2014 1:23 pm ] |
Post subject: | Re: tracking normal to find out where/why it is hanging |
The example given above does not lead to an error. But the development continues: now the new primdec.lib requires also the new version of ring.lib for changeordTo. |
Page 1 of 1 | All times are UTC + 1 hour [ DST ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |