v1.0.6 - 8/19/09: implement real root counting by SARAG. SARAG is a package for Maxima, accessed via Sage. We were told of it by Fabrizio Caruso. v1.0.5 - 5/26/09: implement Macaulay2 computation * MACAULAY_LIBS/schubert.libm2 - Macaulay2 version of the Singular library schubert.lib * Uses code snippet from Mike Stillman for faster elimination * several routines (secant.pl, computationtype.pl, write_maple_file) updated to allow Singular OR Macaulay2 * Use my_config.txt to select the algebra program singular or macaulay (without the 2). Currently no command-line option. Default is singular so you don't have to do anything to your my_config.txt. * (Fixed an inconsistent capitalization convention in configuration options: singular, macaulay, sage, maple all specified in lower-case.) * Configurable stallwindow_days = how many days to leave stalled RunningInstances before picking them up Default value = 1. So for example if you put stallwindow_days 0.5 in your myconfig.txt, then it will pick up stalled RunningInstances at 12 hours after their expected_time_to_finish * Fixed subtle bug in Macaulay2 command-line options ("quit" doesn't quit on OSX unless --script option...) * Now using RealIntervalField in Sage, instead of RealField --- significantly more precise; this fixes many instances where Sage failed to separate roots that Maple could separate. Will need testing, of course. * create_running_instance tries 5 times (attempt to overcome timeouts when many computers start packets at the same time. Such timeouts have been observed occasionally with only ~60 packets starting at once.) * Added a little more documentation of options and requirements. PLEASE SEND SUGGESTIONS!!! * (v1.0.5a was circulated with a bug in the Macaulay2 code to wiggle points. Fixed now. Sorry about that.) v1.0.4 - 3/24/09: numerous improvements * *check for success* after posting results, before deleting RunningInstance record * robustness to some errors, e.g., if it loses connection to filesystem where frsc-tmp lives * begin to implement Macaulay2 computation * begin to lay the ground for better packet-management (eventually trying to eliminate syncerrors) * don't start problems (or pick up stalled RunningInstances) that have priority < 0 v1.0.3 * fixed extremely frustrating bugs * parse_results notices if Maple output contains errors, and handles it * both parse_results and allcpus.sh delete "Error, cannot raise the datalimit..." * first version of testsuite.sql to validate software * checkin detects and posts numcpus v1.0.2 - 12/10/08 * "no-fly-list" set in my_config (instead of editing secant.pl) * allcpus.sh staggers job starts (kinder to db server?) * put restarts into Maple - minor change to secant.pl to accomodate that * if there's a file called "stop" it finishes current packet, then stops (a graceful way to get -n0 computation to stop, also works on e.g. -n100) (just do: touch stop - wait for current packet - rm stop) v1.0.2a - 12/8/08 * reset Maple after each polynomial (try to get rid of datalimit errors) * when computer on don't-run list quits, it does so silently * better initial setup: proper handling of default settings,etc * don't AutoCommit while checking in * changed naming of temporary files (use request_id instead of problemname) * PBS scripts: better jobnames * allcpus.sh: post-processing stdout/stderr * loadproblems can read files inside directories (ie, with / in name) * expectedtimetofinish has fudge factor = 4 (instead of 2) * stalls picked up after 1 day (instead of 3) * verbose mode prints timing information * Scripting and automation: --- automated daily database backups --- first version of automated queueing script --- Coming soon: "intelligent" queuer that reads qstat, and adjusts --- Coming soon: "logroller" that downloads and archives daily logs --- Coming soon: same thing, download and archive stdout/stderr files Known problem: Occasionally, RunningInstances get out of sync with the rest of the database, in that the following equation is violated: packetnumber = packetssubmitted + number of RunningInstances. Not sure what is going on. It is under study. v1.0.1 - 11/23/08 What's new: 1. Three levels of verbosity: perl secant.pl --> verbosity=0 [default] --> prints out virtually nothing perl secant.pl -v --> verbosity=1 --> prints initial message, not much else perl secant.pl -V --> verbosity=2 --> prints very detailed information, incl progress through packet 2. Attempts to catch file system errors. Most commands that open/write files have "or return 0" appended, and the functions that they're in return 1 if no error occurred, so the calling functions can test for the return value. On the other hand I probably missed some spots. So for right now this is a little bit experimental. 3. Writing the Singular input file is now wrapped in an "eval". Ditto a lot of other things. 4. Test for database checkin (frsc_checkin) failure. (If this fails, can't reach database. Just quit on the spot, don't try to go on.) 5. Added two columns to Failure table: resolved: 0 or 1 (0 = not resolved yet, 1 = resolved) [tinyint(4)] resolution_message: human-written text describing how the failure was resolved [text] There is a MySQL command saved in the file "add_columns.sql". You can run it as follows: 1. Connect to database with CocoaMySQL 2. File menu -> Import -> SQL File 3. Choose "add_columns.sql". It *should* be safe to run on your own databases, even in the middle of computations. However please DO NOT run this on any databases on dbu.math.tamu.edu without consulting with Frank and/or me. 6. ... On the other hand, write far fewer Failures into database. (For right now, almost all Failures go to stdout/stderr, but I'm leaving Failure framework in place once we decide which things should be put into database.) 7. Big improvements to qup.sh script made by Frank and me. See below. 8. As always, the configuration file, database/password info in loadproblems, database/password info in PHP files, default configuration file name in secant.pl, etc, are almost certainly different from what you have. You will want to change all these things... New scripts: qup.sh - Frank tweaked the walltimes. qup-new.sh - I started using the PBS scripting system. This makes for a cleaner and more flexible interface. In particular we get the flexibility to write a very easy "greedy" wrapper that counts the number of CPUs and starts that many copies of secant.pl. Also it puts output/error files in a separate directory (less clutter). And using this scripting interface lets us pass command-line options to secant.pl, which we couldn't do when we were qsubbing secant.pl itself. Right now we are using that to set the computationlength but in the future it could be useful for more. How to use it: sh qup-new.sh 200 N --- start 200 short night jobs sh qup-new.sh 300 M --- start 300 long night jobs sh qup-new.sh 400 W --- start 400 short weekend jobs sh qup-new.sh 500 L --- start 500 long weekend jobs Any of these will just automatically be "greedy" about CPUs. If it doesn't work, there's still qup.sh available. Of course please let me know any suggestions/questions.