How can I add a timeout to a charpoly calculation?

i like this post (click again to cancel)
1
i dont like this post (click again to cancel)

For some reason after a bunch of matrix charpoly calculations, charpoly hangs on me. I suppose it's some memory problem, but rather that fix that, I just want to put a timeout on the calculation and then restart it if it hangs.

The problem is I can't use the "alarm" solution given in the answer to this question because sage.matrix.matrix_integer_dense.Matrix_integer_dense.charpoly doesn't catch the KeyboardInterrupt:

sage: M = random_matrix(ZZ,1000,1000)
sage: alarm(30)
sage: try:
....:     P = M.charpoly()
....: except KeyboardInterrupt:  
....:     print "did not complete!"
....:

What is another approach I could use?

asked Jul 11 '11

Max Flander gravatar image Max Flander
21 4

2 Answers:

i like this answer (click again to cancel)
1
i dont like this answer (click again to cancel)

OK here's my horrible workaround using rob hooft's task.py:

Write my matrix to a text-file. Put the charpoly calculation in a separate file called charpoly.sage which reads in the matrix from that text-file, and outputs its result to another text-file. Then in the main code run the following:

  from os import system
  load task.py
  maxtime = 3600
  success = 0 
  while success == 0:
     task = Task("sage charpoly.sage")
     task.Run()
     time = 0
     while time <= maxtime:
        sleep(1)
        time += 1
        if task.Done() == 1:
           success = 1
           break

     if time > maxtime:
        task.Kill()
        system("PIDS=$(ps -ef| grep -e 'python charpoly.py' | grep -v grep |awk '{print $2}')")
        system("kill -9 $PIDS")
        print ("timeout!")

That last rubbish is because sage spawns some other python processes which eat up all the cpu and are not killed by task.Kill(). It's not pretty but it'll do the trick for now. The reason that I simply restart the calculation after a timeout is that it only sporadically gets stuck, and restarting seems to get it going again, go figure...

link

posted Jul 13 '11

Max Flander gravatar image Max Flander
21 4

updated Jul 13 '11

Horrible is a matter of taste - at least you got it working! parzan (Jul 13 '11)
that's true :) Max Flander (Jul 13 '11)
i like this answer (click again to cancel)
0
i dont like this answer (click again to cancel)
link

posted Jul 12 '11

parzan gravatar image parzan
848 3 12 30
thanks for the suggestions, i can't get any of them to work though... for some reason charpoly ignores KeyboardException, SystemExit and so on, in fact sometimes when you do ctrl-c to stop it, you get a seg-fault... so maybe there's no easy answer? Max Flander (Jul 12 '11)

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[hide preview]

Question tools

Tags:

Stats:

Asked: Jul 11 '11

Seen: 99 times

Last updated: Jul 13 '11

powered by ASKBOT version 0.7.22
Copyright Sage, 2010. Some rights reserved under creative commons license.