5/20/03 jeffc This is a preliminary checkin for the project of including WU analysis parameters in the WU header. It also includes a routine to read binary data WUs. In the end, all analysis parameters will have a default compile time value which can be supersede by values contained in the WU header. There will be no command line analysis parameters. For this checkin, I added the following variables to the SETI_WORKUNIT_INFO (swi) structure. spike_sigma_thresh; gaussian_chi_sq_thresh; gaussian_power_thresh; gaussian_peak_power_thresh; beam_width; num_fft_lengths; analysis_fft_lengths[MAX_NUM_FFTS]; chirp_resolution; num_chirp_ranges; ChirpFftTable_t chirp_fft_table[MAX_CFFT_PARAMS]; These replaced various standalone global variables and constants. Values for all of these variables are to be included in the WU header. Because of all the moving of cfft parameters to swi, chirpfft_tab was removed from the makefile. This prompted to removal of the params assignment in common_init() and the necessity of passing the chirp resolution down to where it was needed - InitChirpStep(). I added the following array sizers: #define MAX_NUM_FFTS 64 #define MAX_CFFT_PARAMS 2 I added code to seti_parse_wu_header() to parse the new header values. I added the following fields to PoTInfo_t. GaussChiSqThresh; GaussPowerThresh; GaussPeakPowerThresh; In the output routines for each signal type, I added the temporary line: outfile.flush(); until a outfile flushing is added to the boinc code. The following existing members of swi were changed from float to double and associated scanf()'s were changed to reflect this: start_ra start_dec end_ra end_dec angle_range There were some places where we were using strlen where sizeof should have been used in seti_parse_wu_header(). I fixed these. Added new routine read_bin_data() to read binary data. Testing. I dumped the generated chirpfft table and it matches the one generated by the current client. I let the boinc app complete a WU and the reported signals were correct within tolerances. The reading of binary data WUs has *not* been tested. Still to do (among other things): - make swi a global structure with compile time initialization. - swi will include substructures for: receiver parameters recorder parameters splitter parameters analysis parameters - create a new source file, seti_parse.C that will contain routines for parsing complex seti variables like the above parameter lists. - there are still a number of single precision floats in the code. These should all be changed to doubles. - XML-ize the signal lines in outfile. - do away with command line options that are redundant with WU header items. - add bounding tags to coordinate list in the WU header. - add bounding tags for the different parameter groups (splitter, analysis, etc) in the WU header. - it might be a good idea to not have the limits imposed by MAX_NUM_FFTS and MAX_CFFT_PARAMS. Instead, we could have analysis_fft_lengths and chirp_fft_table be pointers to areas that we realloc as we parse the WU header. - remove outfile.flush() from the signal outut routines. changed sources: analyzeFuncs.C analyzeReport.C,h worker.C chirpfft.C,h seti_header.C,h analyzePoT.C,h gaussfit.C unix_main.C analyze.h s_util.C,h 5/21/03 jeffc Removed the include of hosts.make from Makefile and hardcoded: BOINCDIR = /disks/milkyway/a/users/anderson/boinc_cvs/boinc 7/16/03 korpela Basic workunit parsing now functioning. Maybe Makefile.in Makefile seti_header.C unix_main.C workunit.sah db/Makefile.server db/db_table.h db/schema_master.sql db/schema_to_class.awk 7/21/03 jeffc CFFT table generation now uses the new header classes. Note that while the CFFT table still follows the same order in regard to chirp rates, the order of FFT lengths at a given chirp rate is reversed from that of the current release client. This should not matter. Also pulled out some debug printf()'s. chirpfft.C,h worker.C analyzeFuncs.C analyzePoT.C seti.C 7/22/03 korpela schema_master.[Ch] now compile in server mode. Also make mods to schema, and started a new database (sah2@master_tcp) for test purposes. db/Makefile.server db/schema_master.sql db/db_table.h db/schema_to_class.awk 7/24/03 korpela Made changes to fix printing and allow real database access. db/Makefile.server db/schema_to_class.awk db/sqlinf.ec db/sqlinf.h db/db_table.h 7/24/03 korpela Moved the SQLROW class to a separate file so it could be used in the client. Added indentation to the database XML printing to give a more structured feel. deleted db_sah.* and db_informix.* db/Makefile.client db/Makefile.server db/db_table.h db/schema_to_class.awk db/sqlinf.ec db/sqlinf.h db/sqlrow.cpp [New] db/sqlrow.h [New] db/db_informix.cpp [Removed] db/db_informix.ec [Removed] db/db_informix.h [Removed] db/db_sah.cpp [Removed] db/db_sah.h [Removed] 8/13/03 jeffc Integrated Eric K's signal classes into the signal INFO structures (SPIKE_INFO etc). These structures (now classes) contain a signal proper (Eric's class) plus ancillary data needed for "best of" tracking and graphics. The handling of the INFO objects required some code reoriganization to not be confusing. Signal INFO objects are print_xml()'ed to the state file at checkpoint time. Best of signal objects are print_xml()'ed to the outfile upon exit from the main analysis loop. This is a preliminary checkin. More testing needs to be done. There is a known seg fault with an overloaded assignment operator (for class gaussian at least). Some debug code and comments need to be pulled out. gaussfit.C unix_main.C spike.C,h [New] seti.C worker.C analyzeReport.C,h analyzeFuncs.C gdata.h 8/14/03 jeffc Removed the hard coded path to the boinc api includes. unix_main.C worker.C Removed or commented out various unused variables. analyzeReport.C gaussfit.C spike.C seti.C seti_header.C 8/15/03 korpela Added "std_fixes.h", "win_config.h" and "config.h" to db directory "std_fixes.h" should contain any routines missing from the std:: namespace on various platforms, ifdefed by defines found in "config.h" and "win_config.h" Renamed "sqlinf.h" to "sqlapi.h", "sqlinf.cpp" to "sqlifx.cpp" Misc changes for compiling under windows. 2003/08/21 quarl Added standalone-mode run-time option (-standalone, available only in TEST_VERSION) unix_main.C 8/28/2003 jeffc Some (not very clean) mods to fix unix compilation. There was a dependency of ~/bin/astyle which I removed by removing the indent logic from schema_to_class.in. db/schema_to_class was not being made executable, even though this was specified in configure.ac. I specified it in db/Makefile.in (twice, ugly) instead and this works. db/schema_to_class.in db/Makefile.in 9/3/03 jeffc The ANALYSIS_STATE struct was being intialized *after* the parsing of the state file. We now initialize, then parse. worker.cpp 9/4/03 jeffc testing notes I ran the client on the reference WU. The results matched well with the reference result on triplets ans spikes. The reference result contains 1 pulse and the new result contains no pulses. The reference result contains 2 gaussians and the new result contains 1 gaussian that did not match well with either of the reference gaussians. The 2 reference gaussians are really one gaussian detected twice over a shot time period. I realized that the WU specified the new (correct) BW - 0.083 degrees. I reran the client with the old 0.1 degree BW and the gaussian matched much better and I got a pulse but it did not match well. new gaussian new gaussian reference gaussian bw = 0.083 bw = 0.1 bw = 0.1 peak power 2.1929943561554 2.271505355835 2.476470e+00 mean power 0.6764104962348 0.635128259658 6.407137e-01 ra 14.868992642608 14.87093261104 14.871 dec 28.5 28.56 28.56 time 2451606.8586998 2451606.858738 2451606.85874 freq 1418917595.1423 1418922359.339 1418922359.34 chirp rate 6.3884830474854 -21.7681655883 -2.176817e+01 sigma 3.5038092136383 5.086092948913 4.129033e+00 chisq 8.4692783355713 8.749799728393 8.323806e+00 max power 5.0800476074219 5.173916816711 5.173924e+00 new pulse new pulse reference pulse bw = 0.083 bw = 0.1 bw = 0.1 power NO PULSE 0.3064200878 1.605851e+00 mean 0.0019431554 1.964450e-03 period 0.042048022 1.078955e-01 ra 14.9086410 14.892 dec 28.58 28.57 time 2451606.859504 2451606.85916 freq 1418919677.7275 1418922119.13 fft len 32 32 chirp rate 0 0 snr 6.004581928253 6.854417e+00 thresh 5.9453372955 6.675629e+00 len_prof 12 32 I added the reference result and the reference result to CVS. checkin_notes reference_work_unit.sah old_format_reference_result.sah I added a final outfile.flush() and that fixed the problem whereby we were getting a truncated result. analyzeFuncs.cpp David Sept 12 2003 - Moved SPIKE_INFO etc. from gdata.h to seti.h Principle: everything relating to graphics should be surrounded by #ifdef BOINC_APP_GRAPHICS - Changed gdata from pointer to struct - Defined new structs G_SPIKE_INFO etc. for graphics-related signal info, to avoid template/constructor problems in graphics code - Changed BOOLEAN to bool everywhere Graphics now work in a rudimentary way. Changes most files. New file: gdata.cpp Eric K 13 Sep 03 -Moved client into client directory and modified makefiles accordingly. Eric K 15 Sep 03 -Moved win_build into client directory and modified seti_boinc.dsp accordingly. Jeff 17 Sep 03 No code changes. This is the branch point for the beta. The tag is: setiathome-4.xx_all_platforms_beta for both seti_boinc and boinc. They both make on solaris without serious error and the resulting seti client links without error with the resulting boinc libs. I ran the seti solaris 2.7 client on the reference WU and it produces a reasonable looking result file. The science content has not yet been fully validated but that is OK. "Best of" signals in the result looks good. Checkpoint and restart work. Eric K. 22 Sep 03 Checked in several mods to the setiathome-4 beta branch and the main branch required to get the splitter working properly under boinc. config.h.in configure configure.ac db/db_table.h db/sqlrow.cpp db/tools/Makefile db/tools/Makefile.in db/tools/analysis_configs.xml db/tools/insert_analysis_config.cpp db/tools/insert_s4_receivers.cpp db/tools/insert_splitter_config.cpp db/tools/print_s4_receivers.cpp db/tools/recorder_configs.sql db/tools/splitter_configs.xml splitter/Makefile.in splitter/splitparms.h splitter/splitter.cpp splitter/splitter.h splitter/wufiles.cpp win_build/seti_boinc.dsp Jeff 24 Sep 03 We now pass a tag to the XML print routine for the printing of the best signals. client/ analyzeFuncs.cpp Eric K 09/25/03 Binary types in db tables are now of class sqlblob Makefile.in client/Makefile.in client/analyzeReport.cpp client/seti.h db/db_table.h db/schema_master.cpp db/schema_master.h db/schema_master.sql db/schema_to_class.awk db/sqlblob.cpp db/sqlblob.h db/tools/Makefile db/tools/Makefile.in Eric K 09/28/03 Added operator =() to all db_table<> children. Changed db_*::operator =() to call the child = operators. db/db_table.h db/schema_to_class.awk db/schema_master.h db/schema_master.cpp Jeff 9/29/03 Boolean standalone now initialized to false. If we have no WU to read (fopen() failed) in read_wu_state(), we set retval to FOPEN_FAILED and return. This is certainly good to do and prevents seg faults due to empty SWI's. But we need to also check SWI data before using it. client/main.cpp client/worker.cpp David Sept 30 2003 - include graphics-related stuff only if BOINC_APP_GRAPHICS is defined main.cpp David Oct 2 2003 - read_wu_state(): if there's no input file, return an error - got rid of windows .exe client/ worker.cpp client/win_build/Debug seti_boinc.exe (removed) Eric K. Oct 2 2003 - moved xml_indent() from sqlrow.cpp, sqlrow.h to boinc/lib/xml_util.[Ch] db/sqlrow.cpp db/sqlrow.h David Oct 4 2003 - Reorganized graphics code to facilitate graphical variation Factored user prefs into GRAPHICS_PREFS Combined all graphics-related stuff into SAH_GRAPHICS This inherits from GDATA, GRAPHICS_PREFS etc. so that its member functions (all render-related code) can access data without qualification. There are three top-level graphics "styles": Classic: 3D version of original graphics Panels: text is on rotating panels Headsup: text is 2D in corners of screen Each of these styles has numerous user-configurable settings. Not everything is working yet but the code is in better shape. client/ analyzeFuncs.cpp gdata.cpp,h main.cpp sah_gfx.cpp,h win_build/ seti_boinc.dsp David Oct 6 2003 - Implement rotating-panels display for SETI@home - Factor out generation of text in display client/ analyzeFuncs.cpp sah_gfx.cpp,h win_build/ seti_boinc.dsp p004_640.jpg (new, just a sample background image) David Oct 7 2003 NOTE: there are three different structs for each signal type. E.g.: class gaussian (in schema_master.h) has PoT array in unsigned chars struct GAUSS_INFO (in seti.h) contains "gaussian" as an element. Also has score, bin, and the PoT array in floats G_GAUSS_INFO (in gdata.h) Has the minimal set of info needed to display a Gaussian. A few fields from GAUSS_INFO, plus an "is_best" flag, and a "dirty" flag (has this been displayed yet?) Has a "copy" member function for copying from a GAUSS_INFO The variable best_gauss (of type GAUSS_INFO) etc. (in analyzeReport.cpp) stores the best Gaussian found so far (zero power if none) Stored and read from the state file. The variable SAH_GRAPHICS::gi (of type G_GAUSS_INFO) stores the Gaussian currently being displayed (zero power if none) Normally SAH_GRAPHICS::gi is copied from best_gauss, and its is_best flag is true. However, during analyze_pot(), SAH_GRAPHICS::gi is just the most recent Gaussian computed, and is_best is false. - Set the "dirty" flag of SAH_GRAPHIC's signals whenever copy to them (i.e. don't need to do this separately) - Remove "is_best" field of GAUSS_INFO etc. - Copy PoT arrays using a for loop, not a memcpy() - In graphics code: factor out the decision about which signal to display into a separate function (choose_signal_to_display()). Display a dirty signal if there is one, otherwise rotate among those that are actually there. client/ analyzeReport.cpp gaussfit.cpp gdata.cpp,h sah_gfx.cpp,h seti.h David Oct 7 2003 - show CPU time in Classic-style graphics - improve code factoring in Classic-style graphics - add "present" flag to TEXTURE_DESC - fix function names client/ gdata.h sah_gfx.cpp win_build/seti_boinc.dsp Oliver Oct 8 2003 - draws logos and user icons - fixed headsup display client/ sah_gfx.cpp win_build/seti_boinc.dsp David Oct 8 2003 - Use new texture-drawing interface sah_gfx.cpp,h Jeff Oct 9 2003 Fixed bug in calls to ::parse_xml(). The string passed to these routines must include the outer signal tags (eg . client/ seti.cpp Jeff Oct 10 2003 Checkpoint triplet PoTs. client/ seti.cpp David Oct 10 2003 - The functions that copy signals to the graphics structure now have a "best_of" flag - The functions that copy signals to the graphics structure now check whether what they're copying is the same as what's already there; if so they don't set the "dirty" flag (otherwise the copy of the best-of signals after each PoT analysis disrupt the 5-second cycle of signals) - Fixed the code that implements 5-second cycle of signals (it was doing integer arithmetic on a huge double, yielding negative results) - Alpha of pillars is one (opaque) - made a STARFIELD class - changed GRAPH_2D to RIBBON_GRAPH - Added support for tick marks in RIBBON_GRAPH - tested parsing of XML preferences. Preferred way of changing graphics is to edit app_init.xml client/ AnalyzeFuncs.cpp AnalyzeReport.cpp gdata.cpp,h sah_gfx.cpp,h win_build/ init_data.xml Jeff Oct 10 2003 - Fixed bug that was preventing the choosing of the first best spike (a legitimate spike score can be < 0). client/ spike.cpp Oliver Oct 10 2003 - Updated panel display, moved camera to origen client/ sah_gfx.c,h David Oct 14 2003 - changed angle param from "rate" to "period" - put complete set of graphics prefs in init_data.xml - updated graphics prefs code to use same set of parameters and names as the Web code (astropulse/html/project_specific_prefs.inc) - removed cruft client/ main.cpp sah_gfx.cpp,h seti.cpp win_builc/init_data.xml Oliver Oct 14 2003 - fixed stars, moved camera back to original location client/ sah_gfx.cpp Oliver Oct 16 2003 - more improvements on star generation - fixed resize via. applying a universal glScale client/ sah_gfx.cpp,H Jeff Oct 16 2003 - tested, debugged and added documentation to the validator and assimilator. - Built production executables and installed them in the "astropulse" beta test. - Added the informix lib paths to the boinc master cron program. This is needed for the assimilator. - Note that at this point server side executables (and all parts that make them up) have to be built on koloth (the production host). This is because koloth has a different gcc (and libs) than our other machines. Our standard gcc is v 3.0.4 (bundled with libstdc++.so.3) while on koloth we have gcc 3.3 (bundled with libstdc++.so.5). Running on koloth after building elsewhere gives: fatal: libstdc++.so.3: open failed: No such file or directory - Note that various Makefile.in's specify the mysql library as being /usr/local/mysql. But for koloth it needs to be /usr/local/mysql_32bit. Linking against /usr/local/mysql on koloth (a 64 bit mysql) gives ld: warning: file /usr/local/mysql/lib/libmysqlclient.a(libmysql.o): wrong ELF class: ELFCLASS64 There will be a sysadmin fix for this to make /usr/local/mysql correct on all hosts. code: assimilator/ sah_assimilate_handler.cpp,h validate/ sah_boinc_db.cpp,h sah_result.cpp,h sah_validate.cpp systems: koloth:~boincadm/projects/ AstroPulse_Beta/ config.xml cron/ cron-boinc David 16 Oct 2003 - Factored out the part of graphics that is common to both SETI@home and Astropulse (SAH_GRAPHICS_BASE, in sah_gfx_base.cpp) This will make it easier to maintain consistent graphics and preferences between the two apps client/ sah_gfx.cpp,h sah_gfx_base.cpp,h (new!) win_build/seti_boinc.dsp Jeff 17 Oct 2003 - Best triplet PoT starting tag now has encoding type and length. - Flush the results file (outfile) only at checkpoint time and workunit completion time. - Cleared out various old comments and debug lines. client/ analyzeFuncs.cpp analyzeReport.cpp seti.cpp Oliver 17 Oct 2003 - Fixed panel size client/ sah_gfx.cpp Jeff 17 Oct 2003 - Checkpoint the gaussian display power threshold. This used to be set to zero at program start/restart and then get bumped to a higher value with the first gaussian (but then get set back to zero on the next restart). Thus, if the best gaussian in the WU was in fact below tha higher thershold, the same WU could yield different best gassians depending on restart history. This would have interfered with redundacy based validation. client/ analyzeReport.cpp gaussfit.cpp seti.cpp seti.h Jeff 18 Oct 2003 - Code cleanup. Removed some long commented out code and unneeded header files. client/ analyzeReport.cpp,h gaussfit.cpp seti.cpp,h spike.cpp David 20 Oct 2003 - Don't use len_prof as pulse PoT length; use PULSE_POT_LEN client/ gdata.cpp,h sah_gfx.cpp Jeff 22 Oct 2003 - Specify app version as 2.00. - Use new xml_util routines to output the triplet PoTs to the state file as comma separated values. The min and max PoTs are now printed to the state file as 2 separate PoTs. configure.ac client/ seti.cpp David 23 Oct 2003 - fixed bug where an MFILE::printf() was overrunning its static buffer. (use MFILE::write() instead; also upped buffer size to 20K) client/ seti.cpp Oliver 24 Oct 2003 - updated so that it will pass the name of the axis labels in when graph is created client/ analyzeFuncs.cpp sah_gfx.cpp sah_gfx_base.cpp,h David 25 Oct 2003 - split the graphics initialization into two parts: 1) worker thread, which sets up the data structure shared between worker and graphics 2) graphics thread, which does OpenGL calls (must be in graphics thread). This fixes a race condition where sometimes the worker thread would access the shared data structure before it was initialized. - check for logos present before drawing. Fixes bug with white boxes drawn in place of logos client/ main.cpp sah_gfx.cpp sah_gfx_base.cpp,h Jeff 27 Oct 2003 - use match_tag() rather than parse_str() to find the triplet PoT's in the state file. - bump version to 2.01. configure.ac client/ seti.cpp Eric K. 27 Oct 2003 - tried to fix the indentation problem by storing and recovering the xml_indent_level at the beginning and end of write_state_file() client/ seti.cpp Jeff 27 Oct 2003 - renamed output file to result.sah client/ s_util.h David 28 Oct 2003 - call boinc_resolve_filename() for input, output files client/ worker.cpp Jeff 29 Oct 2003 - bumped version to 2.03 configure.ac Oliver 29 Oct 2003 - fixed scaled logos client/ sah_gfx_base.cpp Jeff 29 Oct 2003 - gather up the entire triplet PoT from the state file before sending it off to the XML parser. - bump version to 2.04 client/ seti.cpp configure.ac Jeff 30 Oct 2003 - simplified the coding and raised the buffer size to 8K in parse_state_file(). client/ seti.cpp David 31 Oct 2003 - reorganized graphics to accommodate new BOINC mechanism for adaptation to changing user preferences. SAH_GRAPHICS now includes graphics objects rather than pointers, since the may need to be init()ed repeatedly. The code organization is described in a block comment at the top of sah_gfx.cpp - in panel display, panel colors are 1/3 and 2/3 points of hue range client/ analyzeFuncs.cpp main.cpp sah_gfx.cpp,h sah_gfx_base.cpp,h win_build/ seti_boinc.dsp David 1 Nov 2003 - more "graphics follow prefs" changes client/ sah_gfx.cpp sah_gfx_base.cpp David 4 Nov 2003 - removed old code (reduce_output() etc.) that output the top N signals globally - removed *_start() and *_end() functions from source files. These are relics of an old and failed code-checksum scheme - use string instead of char[256] a few places client/ analyzePot.cpp analyzeReport.cpp gasdev.cpp gaussfit.cpp malloc_a.cpp pulsefind.cpp ran1.cpp seti.cpp seti_header.cpp worker.cpp David 4 Nov 2003 - released version 2.05 in beta test Jeff 5 Nov 2003 - beta released setiathome_2.06_sparc-sun-solaris2.7. Looks like setiathome_2.06_windows_intelx86 was released yesterday. David 6 Nov 2003 - track BOINC API changes client/ sah_gfx.cpp win_build/ seti_boinc.dsp David 6 Nov 2003 - release windows version 2.07 Jeff 17 Nov 2003 - Added the GNU GPL to files in client/, db/ (except db/tools/), m4/, and some top level files. Removed some obsolete files. client/ * added GPL except... fft8g.cpp added ooura license *.{cpp,h} removed CVS/RCS log lines gasdev.cpp removed ran1.cpp removed nr.h removed lcgamm_test.cpp removed Makefile.in removed references to nr stuff db/* added GPL (but not to files in tools/) m4/* added GPL - I also created a public release distribution that includes everything needed to build the client side application. We should automate this. For reference, the distro contains no CVS directories and does contain: COPYING config.guess config.h.in config.sub configure configure.ac install-sh Makefile.in aclocal.m4 config.h client/* *except* : win_build/ Logo2.bmp Logo2.jpg p004_640.jpg db/* *except*: tools m4/* Karl 2003-11-21 - recompiled with BOINC api bug fix. - 2.08 client release (non-Windows only) David 25 Nov 2003 - change to - restored missing }; - removed deleted files from .dsp file client/ analyzeFuncs.cpp analyzeReport.cpp spike.cpp sah_gfx_base.h,cpp win_build/ seti_boinc.dsp Jeff 27 Nov 2003 - New release - bumbed version to 2.10 configure.ac Jeff 01 Dec 2003 - Added debug code and fixed path bugs in validator and assimilator. The production validator should be working at this point. validator/ sah_boinc_db.cpp sah_boinc_db.o assimlator/ sah_assimilate_handler.cpp Karl 2003-12-02 - created script to trim sources of files we don't want to distribute. (it's a badass 'find' line) - created nightly tarball script. trim-sources (added) nightly-tarball (added) Jeff 03 Dec 2003 - released a statically linked version of the app for linux. Bumped version to 2.11 configure.ac Jeff 08 Dec 2003 - We have the same gcc version problem with solaris that we do with linux whereby if the version number of libstdc++.so on the run machine is different than that on the build machine, the loader fails. However, on solaris you cannot just say gcc -static as there are dynamic only versions of some needed libs, namely libdl and libaio. I tried to use the -Xlinker gcc option which theoretically should allow us to specify the link (collect2) line in precise detail. But -lstdc++ kept showing up twice with one occurrence being outside my -Xlinker -B -Xlinker static directive. So I hand crafted a collect2 line and placed it in a file - collect2_line. Sourcing this file produces an executable that will load and run across gcc versions (and solaris versions for that matter). I don't like it but it works. client/ collect2_line (new file) Jeff 09 Dec 2003 - Released version 2.12 for solaris 7, with a statically linked stdc++. configure.ac client/ collect2_line Eric K. 13 Dec 2003 - Changed from error return to exception based error handling. - The seti_error class is defined in s_util.[h,cpp] - Not yet tested under Windows... client/ analyzeFuncs.cpp analyzePoT.cpp analyzeReport.cpp chirpfft.cpp gaussfit.cpp main.cpp pulsefind.cpp s_util.cpp s_util.h seti.cpp seti_header.cpp spike.cpp worker.cpp 12/16/03 jeffc - The SETI_WU_HEADER was declared gloabally as "seti_wu_header" but was passed around by reference, usually under the name "swi". This passing around was historical and had become confusing and needless. This change is the first of 2 steps to have all code access the global SETI_WU_HEADER as "swi". I removed the passing of the entire swi from all function calls that had it. Still to do is to remove the passing of individual fields of swi. client/ analyzeFuncs.cpp,h analyzePoT.cpp,h analyzeReport.cpp chirpfft.cpp,h gaussfit.cpp seti.cpp,h seti_header.cpp,h spike.cpp worker.cpp 12/16/03 jeffc - The assimlator to insert into the science DB. assimilate/ sah_assimilate_handler.cpp Jeff 18 Dec 2003 - Commented out the catch "(boinc_error e) {}" in main.cpp. Windows compiles were failing on it. - Removed the second parameter, "wu", from the cnvt_fftlen_hz() call in in sah_gfx.cpp. The prototype of cnvt_fftlen_hz() has changed and wu was wrong (and unused) anyway. client/ main.cpp sah_gfx.cpp Jeff 19 Dec 2003 - New windows release - setiathome_2.13_windows_intelx86. This was built on machine "bart", winXP, VC6. - Note that with this release I started archiving both release and debug builds (with symbol table files) in apps_release_sets/ in the project directory. The contents fo this windows release is: apps_release_sets/setiathome_2.13_windows_intelx86/release/ setiathome_2.13_windows_intelx86 vc60.idb apps_release_sets/setiathome_2.13_windows_intelx86/debug/ setiathome_2.13_windows_intelx86.exe setiathome_2.13_windows_intelx86.pdb vc60.idb vc60.pdb Jeff 22 Dec 2003 - New windows release - setiathome_2.14_windows_intelx86. This is the debug build associated with release 2.13. David 23 Dec 2003 - fixed bug in seti_parse_data(): "catch" clause was freeing a pointer that wasn't always assigned client/ seti.cpp Jeff 26 Dec 2003 - Made sure that we always initialize retval to 0. client/ analyzeFuncs.cpp analyzeReport.cpp seti.cpp worker.cpp Jeff 26 Dec 2003 - Added boinc/lib/filesys.C,h to windows VC++ project. - Bumped version to 2.17. - Released windows app 2.17 (debug version). client/ configure.ac client/win_build/ seti_boinc.dsp Eric (via Jeff) 26 Dec 2003 - Implement copy and assignment constructors for SPIKE_INFO. client/ seti.h spike.cpp analyzePoT.cpp Jeff 28 Dec 2003 - Make sure that retval is checked after calls to MFILE::printf. client/ analyzeFuncs.cpp seti.cpp Jeff 28 Dec 2003 - release windows app 2.18 Jeff 29 Dec 2003 - release solaris app 2.18 (semi-static build) configure.ac (bump version) configure Jeff 30 Dec 2003 - release linux app 2.18 (static build). The build was done on host shaggy. There is some malfunctioning of autoconf/configure such that I had to hand code -DHAVE_ATOLL and -DHAVE_DIRENT_H into client/Makefile and VERSION_MAJOR VERSION_MINOR into config.h. Jeff 5 Jan 2004 - Commented out the generation of reconfigure code in the top level Makefile. Makefile.in Jeff 5 Jan 2004 - Removed depricated code used in processing old style (nonXML) WU headers. - Removed depricated code used in processing command line science params (science tuning is now done in the WU header). - Overloaded the seti_parse_wu_header() and seti_write_wu_header() functions. One version of each makes use on the global SETI_WU_INFO structure and one version of each takes a SETI_WU_INFO reference as a parameter. - Moved the global SETI_WU_INFO from seti.cpp to seti_header.cpp so that the splitter could see it. Linking the splitter to seti.o produced a number of unresolved symbols. We should probably put all global objects in some file called global.cpp. - Added a CC= line to the splitter's Makefile.in and removed some test programs. client/ main.cpp seti.cpp seti_header.cpp,h splitter/ Makefile.in Jeff 9 Jan 2004 - The splitter places the seti WU ID into the boinc WU opaque field. Now the assimlator reads that ID from the boinc WU opaque field and places it into the seti result wuid field, providing a reference from result to workunit. assimlator/ sah_assimilate_handler.cpp Jeff 13 Jan 2004 - A many line set of changes to have the code use the analysis configuration parameters in the WU header rather than those in analyze.h. Specifically: - Removed all analysis paramters from analyze.h. For reference, these were: #define BOX_CAR_LENGTH 8192 #define POINTS_IN_CHUNK 32768 #define SPIKES_TO_REPORT 1 #define SIGMA_THRESH 22 #define THRESH_IN_MEAN 3 #define THRESH_IN_TRUEMEAN 3.2f #define CHI_SQ_THRESH 8.8f #define PULSE_MAX 40960 #define PULSE_MIN 16 #define PULSE_FFT_MAX 8192 #define PULSE_THRESH 17.0 #define PULSE_DISPLAY_THRESH 0.5f #define TRIPLET_MAX 131072 #define TRIPLET_MIN 16 #define TRIPLET_THRESH 7.75 #define OVERLAP_FACTOR 0.5 #define PULSE_BEAMS 1.0 #define GAUSS_POT_LEN 64 #define PULSE_POT_LEN 256 #define TRIPLET_POT_LEN 256 #define POT_LEN 64 #define T_OFFSET 1 #define MIN_SLEW 0.0021f #define MAX_SLEW 0.0105f #define BEAM_WIDTH 0.1 #define GAUSS_SIGMA 6.78 #define GAUSS_SIGMA_SQ 45.9684 - In all places where analyze.h paramters where used, switched to the corresponding swi.analysis_cfg field. - Many of the PoTInfo fields had been initialized at compile time with analyze.h values. PoTInfo is now initialized at compile time with zeros and and with swi.analysis_cfg values at run time in ComputePoTInfo(). - The signal info objects (SPIKE_INFO, etc) used to be globally instantiated at compile time in analyzeReport.cpp. These are now global pointers (in analyzeReport.cpp). They are instantiated via reset_high_scores() at run time. reset_high_scores() first deletes the signal info objects if they exist and then (re)new's them into existance. This change was needed because PoT array sizing within these objects is now a run time function. - All '.' notation to get to signal info fields had to be changed to "->" throughout the code. - Moved the signal info method code from seti.h (where it was inline) to seti.cpp (where it is not). client/ analyze.h analyzeFuncs.cpp,h analyzePoT.cpp analyzeReport.cpp,h gaussfit.cpp pulsefind.cpp seti.cpp,h seti_header.cpp spike.cpp,h Jeff 14 Jan 2004 - added the following #defines back, in gdata.h this time. There are graphics only global signal info structures whose PoT arrays are sized at compile time. Making these dynamic would probably mean instantiating them via new in main.cpp right before the call to sah_graphics.worker_thread_init() or in sah_graphics.worker_thread_init() itself. Note that at this point, graphics initialing happens *before* we read in the WU and the included analysis config info. That would have to change. #define GAUSS_POT_LEN 64 #define PULSE_POT_LEN 256 #define TRIPLET_POT_LEN 256 client/ gdata.h Jeff 14 Jan 2004 - Added 2 new fields to analysis_config table: pulse_beams smallfloat max_signals integer These fields have been added to analysis_config table in the sah2@master_tcp database but have not yet been given values. db/ schema_master.sql schema_master.h schema_master.cpp Jeff 15 Jan 2004 - Changed to pointer syntax for _INFO structs in the G__INFO copy constructors. client/ gaussfit.cpp spike.cpp analyzeReport.cpp gdata.cpp,h Jeff 15 Jan 2004 - Added new row (id = 4) to table analysis_config in the backend DB. Changed: bsmooth_chunk_size from 32767 to 32768 pulse_beams from NULL to 1.0 (new field) max_signals from NULL to 30 (new field) max_signals may need to be adjusted. db/tools/ analysis_configs.xml Jeff 15 jan 2004 - Added stackwalker source to the client win_build directory. This code was copied over from the boinc source tree. client/ win_build/ Stackwalker.cpp,h David 15 Jan 2004 - validator: if can't get output file, mark the result as invalid. This deals with situations where (usually because of a BOINC bug) there is no output file, and infinite retrying won't help. validate/ sah_boinc_db.cpp sah_validate.cpp David 19 Jan 2004 - call initGL() in SAH_GRAPHICS_BASE::graphics_thread_init() (moved from windows_opengl.C, to remove OpenGL dependency) - add win_util.h to project client/ sah_gfx_base.cpp win_build/ seti_boinc.dsp Jeff 20 Jan 2004 - fixed a bug in the G_PULSE_INFO copy constructor where the pulse proper pot was being assigned rather than pot_max. - removed references to GAUSS_INFO.pot as it was not being used anywhere. This was the floating point pot outside of the gaussian proper. client/ gdata.cpp seti.cpp,h Jeff 21 Jan 2004 - removed a redundant call to reset_high_scores() in parse_state_file(). The call in seti_init_state() suffices. - removed the call to report_init() in seti_analyze and replaced its functionality with a call to new function reload_graphics_state() in parse_state_file(). - removed unneeded calls to boinc_time_to_checkpoint() in seti_analyze(). client/ analyzeFuncs.cpp analyzeReport.cpp,h seti.cpp Jeff 22 Jan 2004 - app release 2.19. Cvs tagged as app_release_2_19. client/ configure configure.ac Jeff 22 Jan 2004 - removed depricated and commented out code. client/ analyzeFuncs.cpp analyzePoT.cpp analyzeReport.cpp main.cpp seti.cpp seti_header.cpp spike.cpp Jeff 26 Jan 2004 - changed all calls to match_tag() to xml_match_tag(). - (via Eric) implemented assignment and copy constructors for TRIPLET_INFO. - moved call to seti_init_state() to after the call to seti_parse_wu(). This is was necessary because seti_init_state() needs configuration data contained in the WU header. This may fix a number of access violations and seg faults. client/ analyzeReport.cpp seti.cpp,h seti_header.cpp worker.cpp Jeff 28 Jan 2004 - Fixed a bug in the copy constructor for PULSE_INFO - Got stackwalker working (Rom Walton did this). - got rid of the dependency on the windows debug runtime (Rom). - Bumped version to 2.21 for release. - Cvs tagged as app_release_2_21. client/ main.cpp seti.cpp configure.ac configure win_build/ seti_boinc.vcproj Jeff 30 Jan 2004 - Invoke stackwalker in stack trace mode only. It was crashing with with an access violation during memory allocation tracing. (Rom Walton) - Made progress more linear by treating pulse finding as it should be - an (n^2)log(n) operation. - Update global progress upon each return from find_pulse. This happens several times for reach frequency bin, ie much more often than before. - CVS tagged source as app_release_2_22 and released as version 2.22 on the windows platform. configure.ac configure client/ main.cpp (Rom) analyzeFuncs.cpp analyzePoT.cpp progress.cpp,h (new files) Makefile.in win_build/ seti_boinc.vcproj (added new files) Jeff 01 Feb 2004 - Changed the pulse finding progress scale factor from 1/1e6 to 1/.65e6. - Removed commented out code. client/ progress.cpp analyzeFuncs.cpp analyzePoT.cpp Jeff 02 Feb 2004 - Progress clean up. client/ analyzePoT.cpp progress.cpp Rom 02 Feb 2004 - Hooked up to diagnostics library - Replaced ANSI C assert with BOINCASSERT client/ analyzePot.cpp analyzeReport.cpp lcgamm.cpp main.cpp spike.cpp client/winbuild seti_boinc.vcproj Rom 03 Feb 2004 - Modified stackwalker so it attemps to use the dbghelp.dll that is included with BOINC before using the search path. client/winbuild stackwalker.cpp Jeff 03 Feb 2004 - Moved progress related globals from analyzeFuncs.cpp,h to progress.cpp,h. - Changed some floats to doubles to get rid of compile warnings. client/ analyzeFuncs.cpp,h analyzePoT.cpp progress.cpp,h seti.cpp worker.cpp Jeff 04 Feb 2004 - Windows release. - CVS tagged source as app_release_2_23. Rom 05 Feb 2004 - Remove stackwalker from the project as it has been moved to the boinc project api folder - updated project files to new locations client/win_build/ seti_boinc.vcproj stackwalker.h stackwalker.cpp Rom 06 Feb 2004 - Removed boincdiag.cpp, h from project files. client/win_build/ seti_boinc.vcproj Jeff 08 Feb 2004 - Impelmented overflow detection. Upon reaching a maximum signal count the app will throw a RESULT_OVERFLOW exception on the next attempt to write a signal. Max_signals is an anlaysis config parameter. It is not yet being provided in the WU headeer so the app has it hard coded with the value 30. The current signal count is saved to and read from the state file. - PoTInfo.PulseBeams now gets its value from an analysis config paramter. It is not yet being provided in the WU headeer so the app has it hard coded with the value 1.0. - Renamed write_state_file() to checkpoint() as this routine is doing more than writing to the state file. - Routine checkpoint() now has a paramter to tell it to force the checkpoint without a call to boinc_time_to_checkpoint(). client/ analyzeFuncs.cpp analyzePoT.cpp analyzeReport.cpp,h main.cpp s_util.cpp,h seti.cpp,h seti_header.cpp Jeff 11 Feb 2004 - kludge fix to the pulse display PoT assert failures. If we see a value over 255, we set it to 255. - change all match_tag() calls to xml_match_tag() calls in the db/ code. - bumped version to 2.24. - Windows release. - CVS tagged source as app_release_2_23. client/ analyzeReport.cpp win_build/ seti_boinc.vcproj db/ schema_master.cpp schema_to_class.awk configure configure.ac Jeff 12 Feb 2004 - max_signals and PoTInfo.PulseBeams both now get their values from the analysis_cfg in the swi. - make sure that the work areas are freed before exiting GenChirpFftPairs(). client/ seti_header.cpp chirpfft.cpp Rom 19 Feb 2004 - Attempt to track down error 128 by specifying GLU32.DLL, GLUT32.DLL, OPENGL32.DLL, and OLE32.DLL (Debug Build Only) as Delay-Load DLL's. This causes an exception to be thrown if the DLL isn't found instead of the OS poping up a dialog the user has to deal with. client/win_build/ seti_boinc.vcproj Jeff Feb 19 2004 - CVS tagged as seti_boinc_app_release_2_25. Rom 19 Feb 2004 - When throwing exceptions, make the exception contain line and file information. client/ analyzeFuncs.cpp analyzePoT.cpp analyzeReport.cpp chirpfft.cpp gaussfit.cpp main.cpp pulsefind.cpp s_util.cpp, h seti.cpp seti_header.cpp spike.cpp worker.cpp Rom 19 Feb 2004 - Revert one try/catch block back to the orginal int type instead of what I converted it to so it'll actually execute the cleanup code for DATA_SUN_BINARY encodings. client/ seti.cpp Rom 23 Feb 2004 - Sample exception in main. client/ main.cpp Jeff Feb 25 2004 - CVS tagged as seti_boinc_app_release_2_26. This tag is a little late but the sources should be little if any changed. Rom 06 Mar 2004 - Include file overhaul on the Windows platform. This fixes the build breaks introduced by the changes to the BOINC include file structure on the Windows platform I pretty much touched all the source and header files. This checkin should not have any effect on any platform other than Windows. Rom 08 Mar 2004 - Fix build breaks on Solaris/Linux Lib/ sah_gfx.cpp sah_gfx_base.cpp Eric 08 Mar 2004 - Fixed pulse reported POT for len_prof>analysis_config.pulse_pot_max. pulse.len_prof is now set to zero and the pi.pot is .clear()ed. - changed match_tag in db_table.h to xml_match_tag to fix parsing problem client/ analyzeReport.h analyzeReport.cpp db/ db_table.h Jeff 09 Mar 2004 - Bumped to version 2.27. - CVS tagged as seti_boinc_app_release_2_27. configure.ac configure Rom 09 Mar 2004 - Reduce user confusion by marking the results_overflow exception as an informational message instead of an error. client/ main.cpp Rom 13 Mar 2004 - Updated time_sources script so that the image libraries could be included in the nightly drops. Jeff Mar 15 2004 - CVS tagged boinc and seti_boinc as boinc_app_release_2_28. Jeff Mar 18 2004 - Validator overflow code. validate/ sah_validate.cpp Jeff Mar 19 2004 - Result file now has bounding tags. client/ worker.cpp analyzeFuncs.cpp BTW, here is how to build the mac osx client/app in such a way that you can specify the build name: configure --build powerpc-apple-darwin Jeff Mar 22 2004 - Improved debug logging in the validator. validate/ sah_validate.cpp Rom Mar 22 2004 - Force the memory allocation functions to include file and line information for each allocation. - Turn on the memory leak detection report for Windows built binaries - replaced malloc_a/calloc_a/free_a with their Windows CRT equivs. This only applies to Windows when being compiled as Debug. - Fixed a couple of bugs where the copy constructors and assignment operators were only coping a fraction of what they intended to copy client/ analyzeFuncs.cpp analyzePoT.cpp analyzeReport.cpp main.cpp malloc_a.h pulsefind.cpp seti.cpp stdafx.h client/win_build/ seti_boinc.vcproj Rom Mar 22 2004 - Attempt to force load glut32.dll in a specific location, if it fails catch the SEH exception and just disable grapgics. client/ sah_gfx_base.cpp stdafx.h Rom Mar 23 2004 - client applications don't really need to dump leak detection information for public consumption. So remark it out for public release. - Tag for a 2.29 release. Rom Mar 23 2004 - Unify all diagnostics functionality under the same banner, SETI_BOINC, BOINC_CLI, BOINC_GUI, upper_case now all initialize the BOINC Diagnostics Library which sets up stdout and stderr redirection, heap corruption detection, stackwalker for Windows, and stackalker fo *nix can be pluged in and be automatically used by all applications. - Taskbase#1131 -- closed - Taskbase#1132 -- closed client/ analyzeReport.cpp lcgamm.cpp main.cpp stdafx.h client/winbuild/ seti_boinc.vcproj Jeff Mar 24 2004 - Fixed nightly tarball generation so that autoconf,configure,make will result in a successful build. trim_sources added awk line to trim configure.ac configure.ac made sure lines to be trimmed are clear of autoconf special characters Rom Mar 25 2004 - I have made SETI_BOINC Glut Free, Basically copied font code from glut and put it into the glut folder. - Removed Glut libraries - Removed Delay Load technologies client/win_build seti_boinc.vcproj client/win_build/glut glut/ Rom Mar 25 2004 - Fix up project file so it'll build on a clean platform. client/win_build seti_boinc.vcproj Jeff Mar 26 2004 - Release tags. Sources were tagged as seti_boinc_release_2_30 and then, after some build problems were fixed, were tagged as seti_boinc_release_2_30a. The build from this latter tag was what was released as app version 2.30. Jeff Mar 26 2004 - Removed parseOutfile from the project. Rom Mar 26 2004 - Fix a minor bug where after the screen saver shutdown BOINC would fire-up a new SAH Window - Tag for a 2.31 release. client/win_build seti_boinc.vcproj Rom Mar 30 2004 - Include the glut folder in the nightly tarball / trim_sources Jeff Mar 31 2004 - Nightly tarball generation now runs autoconf to produce a configure script stripped of the trimmed directories. trim_sources David Mar 31 2004 - handle mouse events, and offer a simple interface where dragging rotates the 3D objects client/ sah_gfx.cpp sah_gfx_base.cpp,h Jeff April 2 2004 - Kludge fix for the access violations we see in csv encoding. In the checkpoint routine I check len_prof of the best_pulse and if it is zero we do not write that pulse to the state file. - tagged as seti_boinc_app_release_2_32 and released to alpha. client/ seti.cpp Jeff April 8 2004 - Have splitter give full path to result template on read error. - Correct configure defined PROJECTDIR / aclocal.m4 configure splitter/ splitter.cpp Jeff April 12 2004 - tagged with: seti_boinc_app_release_3_00 David April 12 2004 - when get OVERFLOW exception we need to call boinc_finish(), else the core client won't regard the result as done client/ main.cpp David April 14 2004 - include "mfile.h" client/ analyzeReport.h Rom April 20 2004 - Turn on tracing of CRT warnings by default since the CRT considers heap corruption a warning offense instead of an error. client/ main.cpp David April 22 2004 - change all fopen()s to boinc_fopen(). This is necessary to avoid EINTR failures on Unix, and locking-related failures on Windows client/ chirpfft.cpp seti.cpp worker.cpp Jeff April 30 2004 - Fixed bug where a call to encode() lacked a parameter. db/ sqlblob.h Jeff May 13 2004 - Overflow results are now marked thusly in the SAH master science DB. Boinc result.opaque is used to pass the overflow flag from the validator to the assimilator. - Fixed bug that resulted in the following assimilator error message: Too many open SQL statements (> 20) for sql operations The fix (via Eric) was to do an sql_close(fd) before each return(false) in sql_run(). validate/ sah_validate.cpp sah_result.h assimilator/ sah_assimilate_handler.cpp db/ sqlifx.ec David May 15 2004 - Some changes to reflect the new STARFIELD handling (which is done entirely in 2D). Call app_init_camera() in SAH_GFX_BASE::render(), instead of just once at the beginning. Since this is where viewpoint distance is handled, we no longer have to do it in the mouse handler. - add glFlush() to SAH_GFX_BASE::render() client/ sah_gfx.cpp sah_gfx_base.cpp,h win_build/init_data.xml Jeff May 18 2004 - corrected printf format for logging seti WU ID as contained in the boinc:result.opaque field. assimilate/ sah_assimilate_handler.cpp Jeff May 18 2004 - Testing notes. I followed WU 11se03aa.9564.4544.428382.126 through the system (seti side DB, boinc side DB, files) and found that the following (at least) are working properly: - seti workunit_grp points to tape - seti wu points to workunit_grp - seti result points to seti wu - seti result points to boinc result - the data description in the workunit_grp (DB) looks OK and appears properly in the wu file - the following all look good in the seti DB and appear properly in the wu file: - receiver_config - recorder_config - splitter_config - analysis_config *except* that the xml field in the wu file receiver_config section has the string "apos" improperly embedded (task 1275). - the workunit_header's in the wu file and result file are identical *except* that the wu name in the result file is incomplete (task 1274). - the 1 reported pulse signal also appears as the best pulse in the result file and is inserted properly in the DB. - the 1 triplet signal also appears as the best triplet in the result file and is inserted properly in the DB. - the 7 spikes are inserted properly in the DB and the highest power spike appears as the best spike. - there was no gaussian in this wu. Jeff May 18 2004 - Place app version number and received time as julian day into the result record in the seti master DB. assimilate/ sah_assimilate_handler.cpp Jeff May 21 2004 - Targeted heap checking. Placed the following code: #ifdef _WIN32 BOINCASSERT(_CrtCheckMemory()); #endif at the beginning and end of the following functions: find_pulse() ReportPulseEvent() ReportTripletEvent() checkpoint() parse_state_file() and at the beginning and end of all PULSE_INFO and TRIPLET_INFO contructors and destructors. - use time_t_to_jd() to calculate julian day in the assimilator. client/ pulsefind.cpp analyzeReport.cpp seti.cpp assimilate/ sah_assimilate_handler.cpp Makefile.in Jeff May 25 2004 - Obtain analysis configuration table for result pre-proccessing (eg barycentric frequency calculation). - Pre-processing stub routines. - Check the new noinsert flag (command line parameter). assimilate/ sah_assimilate_handler.cpp Rom May 25 2004 - tagged with: seti_boinc_app_release_3_07 Rom May 26 2004 - updated config.guess based of David's checkin in BOINC - Update config.guess so we don't have to add the --build command to each execution of ./configure for the Macs / config.guess David May 27 2004 - resize(), graphics_thread_init(): do OpenGL stuff ourselves client/ sah_gfx_base.cpp David May 27 2004 - change logo-rendering code to use (0,1)x(0,1) coord system instead of bizarre 3x4 stuff client/ sah_gfx.cpp sah_gfx_base.cpp,h Jeff june 2 2004 - Upped minimum quorum from 2 to 3. splitter/ wufiles.cpp David June 2 2004 - changed default graphics prefs client/ sah_gfx_base.cpp David June 8 2004 - change boinc_resolve_filename() calls client/ seti.cpp worker.cpp David June 11 2004 - moved xml_util* here from BOINC db/ xml_util.C,h (new) David June 11 2004 - added xml_util.C,h to Windows project file Note: doesn't build on Windows. Indecipherable error messages involving std::XXX stuff client/win_build/ init_data.xml seti_boinc.vcproj db/ xml_util.C Rom June 12 2004 - Cleanup build errors on Windows client/ chirpfft.cpp s_util.cpp sah_gfx.cpp sah_gfx_base.cpp stdafx.cpp timecvt.cpp client/win_build/ seti_boinc.vcproj db/ schema_master.cpp schema_to_class.awk sqlrow.cpp xml_util.C, .h Jeff June 15 2004 - Check for memory allocation failures in signal info constructors. - Cleanup build errors on *nix. client/ seti.cpp db/ Makefile.in Jeff (for Eric) June 15 2004 - New routine, db_change(). db/ schema_to_class.awk schema_master.cpp schema_master.h Rom June 15 2004 - Tag for 3.08 release, all platforms seti_boinc_app_release_3_08 Jeff June 15 2004 - Strip leading zero from minor version. configure.ac David 15 June 2004 - added rule for .C files client/Makefile.in Jeff 16 June 2004 - Modifications to allow the same splitter executable to run under different projects, say beta and public. The mods are: - The backend sciece DB name was hard coded in splitter.cpp and is now a required command line parameter (-scidb=). We are using the new db_change() routine to attach to the desired DB. - The project directory was hard coded in config.h (PROJECTDIR) and is now a required command line parameter (-projectdir=). - the download directory was hard coded in splitparms.h as WU_DIR. This was changed to WU_SUBDIR which equates to "download" and concatenated to the projectdir to get the fully qualified download directory. splitter/ splitter.cpp,h splitparms.h makebufs.cpp wufiles.cpp Rom 16 June 2004 - Fix awk script so it'll coreectly deal with stdafx.h db/ schema_master.cpp schema_to_class.awk David 16 June 2004 - include miofile.C in project client/win_build/ seti_boinc.vcproj Jeff 17 June 2004 - Change xml_util.C to xml_util.cpp. db/ xml_util.C deleted xml_util.cpp added Makefile.in Jeff 18 June 2004 - Splitter now reads the science DB name from an application config file. This config file and the parsing of it is modeled on the boinc config file. It is called sah_config.xml and resides in the project directory. - Routine db_change() now dies nothing is the requested DB is already open. db/ app_config.cpp,h new files schema_to_class.awk schema_master.h Makefile.in splitter/ splitter.cpp wufiles.cpp Jeff 20 June 2004 - Assimilator now reads the science DB name from an application config file. - Added pre_process stubs to assimilator (will be used for reference frame correction etc). assimilator/ sah_assimilate_handler.cpp,h Makefile.in Jeff 21 June 2004 - Changed fpops numbers on the splitter (these numbers appear in the WU. db_wu.rsc_fpops_est from 3.9e+12 to 2.79248e+13 db_wu.rsc_fpops_bound from 6.4e+13 to 4.46797e+14 Keeping the ratio of bound to estimated at 16/1. splitter/ wufiles.cpp Karl 2004-06-24 OpenBSD compile fixes from Daniel Hartmeier client/ worker.cpp db/ xml_util.h Eric K 30 June 2004 - Removed "using" directives from header files. "using" directives should not be used in header files for the following reasons. - A "using namespace" directive cannot be revoked for any source file including the header. It forces the use of the namespace regardless of the consequences. - Dropping the namespace qualifier on STL templates ambiguates the resolution of template functions. (How many C libraries or headers have you seen that define the function min()?) - Reducing typing is not a good reason to drop namespace qualifiers any more than it would be a good idea to "#define p printf" - Namespaces exist for a reason. - It's acceptable to have "using" directive in a source file, since it won't affect other files. It's better to have "using std::string;" directives than "using namespace std;" for hopefully obvious reasons. Eric K 1 July 2004 - changed the sql type of pot in gauss in triplet from char[64] to byte - added a print_raw() method to the sqlblob class - changed the gaussian null chisqr threshold to 2.075 to increase the number of gaussians found. client/gaussfit.cpp db/schema_master.cpp db/schema_master.sql db/schema_to_class.awk db/sqlblob.h db/sqlifx.ec db/sqlrow.cpp db/sqlrow.h db/tools/analysis_configs.xml David 7 June 2004 - compile fixes, and use new BOINC API client/ main.cpp sah_gfx_base.cpp Jeff 9 July 2004 - Splitter uses new prototype to create_work() in order to specify the fully qualified path to the result template file. - Because the query to count unsent results takes a long time, we only perform the query every once every 100 times into wait_for_db_wus_ondisk(). All other calls to this routine return immediately, indicating a need for work. Further, while in the wait for work loop, we perform the query only every 10 minutes. - For Eric - the FOPS estimates have bben increased by a factor of 6 (previous code checkin). splitter/ splitter.cpp,h wufiles.cpp Jeff 12 July 2004 - db_change() will do nothing but return db_is_open if the requested database is already open. db/ schema_to_class.awk Jeff 12 July 2004 - as a matter of policy, application handlers called by boinc programs (ie the validator and assimilator) should handle error returns from boinc functions themselves rather than return the error up to boinc code. This change is for the assimilator to issue a message and then exit if it cannot parse the project config file or if it cannot connect the the project (boinc) DB. ssimilator/ sah_assimilate_handler.cpp Jeff 15 July 2004 - At Rom's request, backed out Eric's fops estimation changes (see entry of 9 July 2004). splitter/ wufiles.cpp Rom July 15 2004 - Tag for 4.00 release, all platforms seti_boinc_app_release_4_00 David July 19 2004 - Win build: changed output filename to 4.00 client/win_build/ seti_boinc.vcproj Noaa 30 July 2004 - changed headers for sah_gfx_base.cpp - different Makefile.in (ie Makefile.in.graphics) that can be put in place of Makefile.in before configure to configure for graphics, may need to be changed slightly depending on user, description in Makefile.Readme client/ sah_gfx_base.cpp Makefile.in.graphics (new) Makefile.Readme David 3 Aug 2004 - BOINC API change client/ main.cpp Noaa 5 August 2004 - changed lglut to lboincglut in Makefile.in.graphics - changed Makefile.Readme to reflect that - added a Graphics.Readme to explain how to install w/graphics / Graphics.Readme client/ Makefile.in.graphics Makefile.Readme Noaa 6 August 2004 - Minor change to Makefile.Readme - change of sah_gfx_base.cpp headers client/ Makefile.Readme sah_gfx_base.cpp Jeff 12 Aug 2004 - use hierarchical uldl directory structures (see boinc checkin notes). - call perror() when splitter cannot fork(). assimilator/ sah_assimilate_handler.cpp validate/ sah_boinc_db.cpp splitter/ splitter.cpp wufiles.cpp Jeff 13 Aug 2004 - bumbed the WU ondisk threshold from 20k to 50k. - fixed a bad call to create_work(). The prototype had changed. splitter/ splitparms.h wufiles.cpp Jeff 24 Aug 2004 - officially renamed the splitter executable to sah_splitter splitter/ Makefile.in Jeff 25 Aug 2004 - tell dir_hier_path() to create download subdirs as needed. splitter/ wufiles.cpp David 30 Aug 2004 - created html/ directory html/ (new) project.inc Jeff 09 Sep 2004 - Change to the validator to handle the case where one or more of the result files for a WU's result set are missing. Before this change this state would result in this WU and it's results never getting looked at again. No science, no credit. This is coordinated seti_boinc / boinc change. This note is repeated in the boinc checkin_notes. seti_boinc changes: - get_result_file(), if it cannot read the result file, tries to read the directory where the result file should be. If it can read the directory, it returns ERR_FOPEN, as before. If it cannot read the directory, it resturns ERR_OPENDIR. ERR_OPENDIR in this context signals a possibly transient problem. Upon a successful result read, it sets sah_result.have_result (a new data member as of this change) to true. - check_set(), upon return from get_result_file() : - sets result.validate_state to VALIDATE_STATE_ERROR (a new state as of this change) and retval to zero if there is a nonzero retval from check_set() and it is not ERR_OPENDIR. It then continues. - otherwise just continues. check_set() then determines if any IO errors brought the result count below wu.min_quorum. If not, it continues. Otherwise it returns. In all subsequent logic any results for which sah_result.have_result == false are skipped. Note that the result and the sah_result vectors are associated. validate/ sah_result.h sah_validate.cpp sah_boinc_db.cpp boinc changes: - new validate state VALIDATE_STATE_ERROR. - in the enumeration for check_set(), we now include a clause to check for VALIDATE_STATE_INIT in order to ignore results set to VALIDATE_STATE_ERROR. This enumeration query now matches that for check_pair(). Note that the only possible retvals from check_set() are now zero or ERR_OPENDIR. Note that logic to retry possibly transient errors still needs to be done. Also left to be done is a transitioner change to subtract the number of results in state VALIDATE_STATE_ERROR from the count of active results. The latter change is needed to stimulate the production of additional results for the affected WU. sched/ validator.C db/ boinc_db.h Jeff 09 Sep 2004 - Some changes to the validator mods of today. Validator logic now matches the updated validator documentation on the boinc website. validate/ sah_validate.cpp Jeff 19 Sep 2004 - Some time ago a bug was fixed that reduced the amount of time it takes to do pulse searching but the progress unit computation remained tuned to the bug. This resulted in an overestimation of the percentage of total processing time spent in pulse searcing. We do the most intensive pulse searching at the start of a WU so what the user sees is an early and false jump in percentage done. This change is just a retuning of PulseProgressUnits(). I changed: return(PulsePoTLen * PulsePoTLen * log(PulsePoTLen) * FftLen / 0.65e6); to: return(PulsePoTLen * PulsePoTLen * log(PulsePoTLen) * FftLen / 2.65e6); client/ progress.cpp David 29 Sept 2004 - fixed "heads-up" graphics display client/ sah_gfx.cpp David 11 Oct 2004 - accommodate change to BOINC graphics API Moved exception-catchers from main() to worker() - renamed SAH_GRAPHICS_BASE::worker_thread_init() to data_struct_init() (since this is now called by graphics thread, not worker) client/ main.cpp sah_gfx.cpp,h sah_gfx_base.cpp,h worker.cpp,h win_build/ seti_boinc.vcproj Lana 13 Oct 2004 - cleanup validator code to correspond to the boinc API requirements for handling error conditions validate/ sah_validate.cpp David 13 Oct 2004 - compile fixes client/ sah_gfx_base.cpp,h David 26 Oct 2004 - track change to BOINC API client/ main.cpp Rom 26 Oct 2004 - Tag for 4.06 release, all platforms seti_boinc_app_release_4_06 Eric 28 Oct 2004 - Added support for threaded clients - Fixed problem with retrieving insert ids related to ifx_getserial8() - Fixed problem in xml_util.h when compiling on LLP64 platforms aclocal.m4 config.h.in configure.ac configure m4/ acx_pthread.m4 assimilator/ Makefile.in client/ Makefile.in db/ sqlifx.ec xml_util.h db/tools/ Makefile.in splitter/ Makefile.in validate/ Makefile.in Rom 29 Oct 2004 - Tag for 4.07 release, all platforms seti_boinc_app_release_4_07 David 31 Oct 2004 - add config line to get rt library (sched_get_priority_min) on Solaris configure.ac Jeff 10 Nov 2004 - Started using the "best_" signals in a result for validation. We had always meant to do this in order to provide robust validation for results with no signals exceeding threshold. Plus, the way the validator is written, zero signal results arriving after the initial WU validation would always recieve zero credit (at least one signal was expected). - Siganls counts now appear in the log (DEBUG level). validate/ sah_result.{h,cpp} sah_validate.cpp David 12 Nov 2004 - move code to parse BOINC init file from data_struct_init() to graphics_thread_init(); fixes bug where user name and team didn't show - Win compile fixes client/ sah_gfx_base.cpp win_build/ seti_boinc.vcproj David 17 Nov 2004 - use regular GLUT library client/ Makefile.in.graphics Eric K. 18 Nov 2004 - increased memory resource bound to 64M to prevent core client from killing application when running with graphics enabled. - Fixed base64 and base85 decoders in xml_util.h - Altered BLOB printing so a minimum of 1 byte will always be inserted. This fixes a problem with the new informix SDK. db/ xml_util.h schema_to_class.awk schema_master.cpp schema_master.h splitter/ wufiles.cpp - addendum (jeffc) : The BLOB fix here does indeed fix the problem whereby some 5% of pulse inserts failed. Spike and triplet inserts still fail at a rate of less than 1% in each case. The cause of this is as yet unknown. The first public project SAH result ID processed since today's fix was put in place was 2969946. Jeff 18 Nov 2004 - Added better error checking around inserts into the science DB. assimilator/ sah_assimilate_handler.cpp Jeff 19 Nov 2004 - Return from handler if result insert fails. assimilator/ sah_assimilate_handler.cpp Jeff 19 Nov 2004 - added the following fields to analysis_config table (all initialized to zero): max_spikes max_gaussians max_pulses max_triplets db/ schema_master.sql schema_master.cpp schema_master.h tools/ analysis_configs.xml with a recompile of the splitter and assimilator. Jeff 23 Nov 2004 - bumped MAX_WUS_ONDISK back up to 500000. splitter/ splitparams.h Rom 23 Nov 2004 - Tag for 4.09 release, all platforms seti_boinc_app_release_4_09 Jeff 29 Nov 2004 - Master science DB fetches to obtain analysis config. This is used to find max allowable inserts for any given signal type. assimilator/ sah_assimilate_handler.cpp Jeff 30 Nov 2004 - Final step in the "limit spike insertions to 8" project. Stopped splitters, made a new analysis_config row (id=4), updated settings to make analysis_cfg=4, and restarted splitters. The max(id)'s of the following tables prior to splitter restart were: seti master DB (sah2) workunit_grp : 22423 seti master DB (sah2) workunit : 5736259 boinc DB (SETI_BOINC) workunit : 5279254 db/tools/ analysis_configs.xml Jeff 02 Dec 2004 - Removed 2 files. uttolst.cpp contained a buggy routine, tm_UtToLst() which did not handle multiple 24 hour wraps in the calculation of LMST. This bug is what led to some RA's being >= 24. Eric fixed this with an fmod() call in the new LMST routine, jd_to_lmst(), contained in source file coordcvt.cpp. The only program to use code from uttolst.cpp is testcoord, a program that Eric used to test jd_to_lmst(). jd_to_lmst() has been fully tested and in production for quite some time (over a year). splitter/ Makefile.in uttolst.cpp removed testcoord.cpp removed Jeff 03 Dec 2004 - Added the start of a public app build and test page. Needs work. html/ sah_source_code.php Jeff 03 Dec 2004 - added code (commented out for now) for precessing and reference frame correcting signals. assimilator/ sah_assimilate_handler.cpp Jeff 07 Dec 2004 - Finished source code / build instruction page for the web site. - Placed a reference result in the test WU directory. - Removed the old style reference result. html/ sah_participate.php sah_source_code.php client/ test_workunits/ old_format_reference_result.sah (removed) reference_result.sah Rom 07 Dec 2004 - Cleanup from header file changes client/ lcgamm.cpp main.cpp sah_gfx.cpp sah_gfx_base.cpp client/win/ seti_boinc.vcproj image_libs/ bmplib.cpp Jeff 08 Dec 2004 - Corrected tolerances in the validator so that they match this policy: ra 0.00066 hours absolute dec 0.01 degrees absolute time .000011574 days absolute frequency 0.01 Hz absolute chirp_rate 0.01 Hz/s absolute powers 1% relative chisqrs 1% relative triplet period 0.01 second absolute pulse period 0.1% relative pulse threshold 1% relative pulse snr 1% relative Diffs: was: if (abs_diff(ra, s.ra) > .15) return false; // .01 deg is: if (abs_diff(ra, s.ra) > .00066) return false; // .01 deg case SIGNAL_TYPE_PULSE: was: if (abs_diff(period, s.period) > .01) return false; // .01 sec is: if (rel_diff(period, s.period) > .01) return false; // 1% case SIGNAL_TYPE_TRIPLET: was: if (rel_diff(period, s.period) > .01) return false; // 1% is: if (abs_diff(period, s.period) > .01) return false; // .01 sec max(id) for result in the master science DB (sah2) prior to this change (assimilator was allowed to drain): 4345521 validate/ sah_result.cpp David 10 Dec 2004 - Fixed Windows compile. Added ../../../boinc/win_build to the include path to pick up config.h client/win_build/ init_data.xml libboincapi.vcproj seti_boinc.vcproj setiboincdb.vcproj Jeff 16 Dec 2004 - Record the app exit value in the master result record. Max(id) in the master DB result table before this change was 4873677. assimilator/ sah_assimilate_handler.cpp Jeff 17 Dec 2004 - Record the boinc WU_ERROR state in the master result record. Max(id) in the master DB result table before this change was 4923923. This is being recorded in the result.reserved field. This field needs to be renamed. assimilator/ sah_assimilate_handler.cpp Jeff 17 Dec 2004 - Fixed link problem in the client directory. We now need to link to the boinc_api as well as the boinc lib. client/ Makefile.in Jeff 21 Dec 2004 - Brought the assimilate handler into compliance with the new prototype. It now returns a non zero retval on any error and zero on success. All errors are potentially recoverable. assimilator/ sah_assimilate_handler.cpp Eric K 23 Dec 2004 - First step in getting a universal graphical/non-graphical application. - Added a -nographics command line option to turn off graphics. - Graphics calls are now wrapped in "if (!nographics)" - Added a client_stage variable which contains the initialization state of the graphics (PREGRX,GRXINIT,POSTINIT). If a fatal error occurs, this allows the client to guess at whether the failure was graphics related. - Added an atexit handler which restarts the application in nographics mode if exit is called in stage GRXINIT. - If found, seti_boinc uses the native libjpeg. aclocal.m4 config.h.in configure configure.ac client/ Makefile.in analyzeFuncs.cpp analyzePoT.cpp analyzeReport.cpp gaussfit.cpp main.cpp s_util.[h,cpp] seti.[h,cpp] spike.[h,cpp] worker.[h,cpp] Jeffc 23 Dec 2004 - Started the add of setilib to the configuration. configure.ac aclocal.m4 config.h.in configure m4/ sah_check_setilib.m4 assimilate/ Makefile.in David 25 Dec 2004 - compile fix for windows - commented out sleep(10) in worker client/ worker.cpp win_build/ libboinc.vcproj David 25 Dec 2004 - more compile fixes for Windows, which mysteriously didn't compile the debug version correctly added ../../../boinc/win_build to the include search path for all projects, and removed boinc/api/win and boinc/client/win (these don't exist) Removed the forced include of ../config.h (this file doesn't exist) Note: on Windows, as far as I know, "config.h" refers to the file boinc/win_build/config.h client/ worker.cpp win_build/ libboinc.vcproj libboincapi.vcproj seti_boinc.sln seti_boinc.vcproj setiboincdb.vcproj Jeff 27 Dec 2004 - More values are now read from sah_config.xml. Current values: sah2@master_tcp 500000 2 WAS 3 3 5 10 WAS 7 5 - max WU IDs before this change went online: SETI_BOINC DB : 7084313 sah2 (science master) DB : 7545411 splitter/ splitter.cpp wufiles.cpp db/ app_config.cpp app_config.h David 29 Dec 2004 - Got the windows client to compile. Added a file win_build/win_version.h that defines MAJOR_VERSION and MINOR_VERSION. Currently these are in configure.ac, but I don't see how to convey these values to a file included in the Windows compile. If there's a better way feel free to undo this change client/ version.cpp win_build/ seti_boinc.vcproj win_build/ win_version.h (new) Jeff 4 Jan 2005 - Rather than call dir_hier_path() directly, call boinc routine get_output_file_path() to get path to result files. This automatically gives us the new path hash algorithm. (see boinc checkin notes on 1/1/2005). Max result ID in the master science DB prior to the assimilator change was 5993798. validate/ Makefile.in sah_boinc_db.cpp assimilator/ Makefile.in sah_assimilate_handler.cpp Jeff 4 Jan 2005 - Added calls to setilib routines to precess RA and declination to J2000. At this point, this is only done for spikes and the results of the calculations are printed to the log only - we are not actually updating the spike coords. After making sure the precession is correct, we can start updating all signals. Max result ID in the master science DB prior to this change was 6005078. assimilator/ sah_assimilate_handler.cpp Jeff 11 Jan 2005 - Calculate barycentric frequency for all signals (not updating yet). validate/ sah_assimilate_handler.cpp David 8 Feb 2005 Various changes to get the Win version to compile, hopefully with graphics working: - removed SAH_GRAPHICS_BASE_INTERFACE class. The new idea is to have a SAH_GRAPHICS object, which in the shared-library case lives in the shared library. The main program has a pointer to this object, but calls only its data-modification functions, so it doesn't need to link with OpenGL or GLUT. - Moved render() from SAH_GRAPHICS_BASE to SAH_GRAPHICS. This eliminates the need for virtual functions. - added reduce.C, md5*.C to project files client/ sah_gfx.cpp,h sah_gfx_base.cpp,h seti.h worker.cpp win_build/ libboinc.vcproj libboincapi.vcproj Eric 8 Feb 2005 - Removed the db directory from the Makefile.am build list - Added SETILIBDIR and INFORMIXDIR to Makefile.incl - Changed references to /bin/false in configure.ac to remove path - Changes to make the unix client compatible with davids changes above: - worker thread needs access to SAH_GRAPHICS_BASE::get_generate_buffer() and SAH_GRAPHICS_BASE::generate_done(), so added #ifdefs to make them visible to the executable during build - Reordered db/db_table.h to re-fix undefined symbols Makefile.am Makefile.in Makefile.incl configure.ac configure client/ Makefile.am Makefile.in sah_gfx.[h,cpp] sah_gfx_base.[h,cpp] db/ db_table.h Eric 10 Feb 2005 - Removed aclocal.m4 and configure because they are generated by _autosetup. - Simplified the folding algorithm bases on code send by Ben Herndon. On superscalar processors this can also be a speedup. On SPARC, it's a 0.24% slowdown, not enough that we should stick with the more complex original code. - Changed the automake file to remove references to "installing" seti_boinc into /usr/local/bin - Fixes to get the windows client running. - Added check for _int32 and int32_t to configure.ac - Now that sah_graphics is dynamically allocated, a lot of our graphics structures weren't getting initialized properly. I've written default constructors for: G_GAUSS_INFO, G_TRIPLET_INFO, G_PULSE_INFO, GDATA, SAH_GRAPHICS_BASE, SAH_GRAPHICS, SETI_WU_INFO, GRAPH_BUFFER, and GRAPHICS_PREFS. - Added ltmain.sh, depcomp and win_build/* to the nightly tarball. - Changed trim_sources to use _autosetup instead of autoconf. aclocal.m4 (removed) configure (removed) trim_sources configure.ac config.h.in client/ pulsefind.cpp Makefile.am worker.cpp sah_gfx.[h,cpp] sah_gfx_base.[h,cpp] seti_header.cpp gdata.h jpeglib/ jpeglib.h Jeff 14 Feb 2005 - put libboinc at the end of the lib list (functions in other libs use symbols defined in libboinc) - change some assimilator messages to DEBUG level. assimlator/ Makefile.am sah_assimilate_handler.cpp validate/ Makefile.am Eric K. 15 Feb 2005 - fixed missing definition of dir_hier_path() in wufiles.cpp - reordered initializations in constructors to get rid of warning messages - modified configure script to set CXXFLAGS to equal CFLAGS if CXXFLAGS is not defined - The client was trying to look up the graphics library symbol "x11_glut_is_initialized" rather than "xwin_glut_is_initialized" configure.ac client/ gdata.h sah_gfx_base.cpp worker.cpp splitter/ wufiles.cpp Eric K. 16 Feb 2005 - Fixed broken nightly tarball trim_sources Eric K. 16 Feb 2005 -Rather than rechirping the original data every 1000 chirp steps, we now rechirp the original data every step. This will make results more repeatable when restarting work units. It may also allow floating point rather than double precision trig functions. -The savedWUData in analysis_state used to be the raw data from the file. As of now it is the baseline smoothed data floating point data (unchirpped). client/ seti.h seti.cpp analyzeFuncs.cpp - Fixed broken nightly tarball Eric K. 10 Mar 2005 -To better support systems with concurrent calculation of sin() and cos() I've added a sincos() and sincosf() function for systems without these intrinsics. -Modified analyzeFuncs and fft8g to use sincosf(). -Fixed bug that prevented baseline smoothing on chirp 0 data. -Modified configure to check for sinf(),cosf(),sincos() and sincosf() configure.ac config.h.in client/ fft8g.cpp sincos.h analyzeFuncs.cpp Jeff 11 Mar 2005 - Templated the science pre_processing function. Max(id) for result in the master science DB before putting this change online was 9289454. assimilator/ sah_assimilate_handler.cpp Charlie 11 Mar 2005 - Add support for building Mac SETI@home application using XCODE IDE on Macintosh. mac_build/ HowToBuildBOINC_XCode.rtf seti_boinc.xcode.zip Jeff 16 Mar 2005 - We now do values checking on signals and do not pass a signal on to preprocessing is there is a critical value out of range (ra, decl, time, freq at this point). We so however attemp to insert such a signal into the master DB, with the value 1 placed in rfi_found. Max(id) for result in the master science DB before putting this change online was 9826217. It came to light during testing this change that the occasional insert failures that we see are for signals with wildly bad values (NaNs ?). assimilator/ sah_assimilate_handler.cpp Jeff 17 Mar 2005 - Began inserting signals with pre-processed values: - precession of coordinates from EOD to J2000. This uses the serendip precession code. This was tested by comparing assimilator precession results to those obtained by the online FUSE precession calculator: http://fuse.pha.jhu.edu/cgi-bin/precess_tool There was agreement to under an arcsecond. This was also tested under RA wrap conditions. Here are 2 examples: obs RA obs decl sah precession obs time precession by fuse calc sah-fuse diff in arcsec RA decl RA decl RA decl RA decl 17.018570 18.127011 17.014893 18.134086 2453368.151255 17.014886 18.13411 0.378 -0.0864 0.001608 28.397810 23.997351 28.37006 2453365.416415 23.997336 28.36997 0.81 0.324 - calculation of the signal's barycentric frequency. This also uses serendip code. Frequency shifts were within the expected range (max ~= 142KHz) but no independent tests were done. - calculation of the cubic pixel number. This was tested by reversing the qpix calculation and comparing the resulting RA/Decl with the the original. There was agreement to a max deviation of ~1.3 arcminutes which is OK because the qpix reversal gives you the pixel center coordinates which is a max of ~1.3 arcmin arcminutes from the pixel edge (given nside=2048). Most diviations on reversal were smaller than this. Max(id) for result in the master science DB before putting this change online was 9927205. assimilator/ sah_assimilate_handler.cpp Jeff 21 Mar 2005 - Better debugging output during WU file path resolution. assimilator/ sah_assimilate_handler.cpp Rom 23 Mar 2005 - Fix the release build of the S@H app on Windows client/ version.cpp client/win_build/ seti_boinc.vcproj Eric 12 Apr 2005 - Fix bug in database code. The informix interface was expecting blobs to be presented in hex format rather than raw binary. So informix interface was attempting to translate the code to binary. In addition there was a bug in the translating code such that only characters 'a'-'f' and 'A'-'F' were being translated. The result was that most of the blob data were reassigned blob[i]=(blob[2*i]*16+blob[2*i+1])&0xff. - For better debugging, I changed the sqlifx.ec chk_status() macro (which included a RETURN!!! Yuck!) into a boolean function. - Since the informix SQLCODE variable (and the identical sqlca.sqlcode) aren't available to the debugger, I replaced accesses to this variable with calls to sql_error_code(). - Since when errors were detected, sql_close() was being called which cleared the error code. We've added a function sql_last_error_code() to return the last non-zero error code and sql_reset_error_code() to reset the last non-zero error code. There's still some work to do as far as returning proper error status to the calling environment - Changed the database name in the schema to sah2@sci_master_tcp to match move to new db server/ db/ schema_master.[cpp,h,sql] schema_to_class.awk sqlapi.h sqlblob.h sqlifx.ec Jeff 27 Apr 2005 - Many changes to the informix related code in db/ in order to get the science master DB migration code to work and to fix a bug that was preventing the proper insertion of PoT's (both gaussian and pulse). Eric L essentially rewrote sqlifx.ec. Note that to allow DB insertions with ID's the symbol KEEP_ID must be defined at compile time. - also some mods to the config insert tools in order to add some new configs. db/ db_table.h schema_master.cpp schema_to_class.awk sqlapi.h sqlblob.h sqlifx.ec sqlrow.cpp sqlrow.h tools/ Makefile.in insert_analysis_config.cpp insert_s4_receivers.cpp insert_splitter_config.cpp settings.sql splitter_configs.xml Jeff 01 May 2005 - recompiled the validater to pick up the credit fix referenced: Bruce 29 April 2005 and started it in the public project. Here is the start line of sah_validate1: 2005-05-01 13:37:32 [normal ] Starting validator Jeff 02 May 2005 - Assimilator changes: - If there is no canonical result for a WU, return 0. This will cause the boinc assimilator to mark the WU as assimilated and it will then have it's file's and it's DB record(s) deleted. No canonical result means that too many results were returned with no concensus. - use sql_last_error_code() rather than sql_error_code(), as the latter always returns 0. - I a result insert get an informix error -239, return 0. This will cause the boinc assimilator to mark the WU as assimilated and it will then have it's file's and it's DB record(s) deleted. A -239 (uniqueness violation, in this case on sah result field boinc_result) means that we have already inserted the canonical result for this WU. This should "never" happen but maybe with aome odd stop/start combo it does. - If the bad value check detects a bad value in a signal, replace this bad value with a recognizable marker. This is in addition to flagging the signal in the rfi_found field. This value replacement is needed because some bad values cannot be interted into the DB. The marker value is -91.0. This is an impossible value for ra, decl, time, and freq. - Max(id) for result in the master science DB before this change went online was 13364296. assimilator/ sah_assimilate_handler.cpp Charlie 05 May 2005 Mac: Modify projects and rebuild with OS 10.3.0 compatibility SDK. Update build instructions. Check in XCode project. mac_build/ HowToBuildBOINC_XCode.rtf seti_boinc.xcode boinc.pbproj/ project.pbxproj (add) Eric K. 18 May 2005 - Changed includes of C headers to includes of C++ headers. (i.e. we now include rather than ) - Modified malloc_a() to use native aligned allocation routines if available. - Removed explicit use of _aligned_malloc on _WIN32 platforms since malloc_a() will use _aligned_malloc(). - Defined type sah_complex which is compatible with the FFTW complex data type. Complex arrays that used to be defined a float arrays are now of type sah_complex. Code accessing these arrays has been modified where necessary. - Added mods to allow the function prototypes in sincos.h to work if these functions are present, but not in the system header. - Modified the method by which the chirp table is computed. The goal is to have the drift be less than 1 bin over the duration of interest to the analysis. In the case of gaussians that duration is 2 beam crossings. In the case of pulses it's one beam crossing. In the case of spikes it's one fft length. This should pick up 1.5 dB in sensitivity to gaussians, pulses and triplets. We could pick up another 0.25 dB with another doubling of this duration, but I think we've reached diminishing returns. - Replaced repeated allocations of WorkData in the main loop with one allocation prior to loop entry - Made main processing loop compatible with FFTW. The configure script now detects the FFTW library and header files and if both are available USE_FFTW is defined in "config.h". This define determines which FFT is used. config.guess config.sub ltmain.sh Makefile Makefile.incl configure.ac client/ Makefile.am analyzeFuncs.[cpp,h] malloc_a.[cpp,h] fft8g.[cpp,h] chirpfft.cpp lcgamm.cpp analyzePoT.cpp s_util.[cpp,h] main.cpp progress.cpp pulsefind.cpp seti.[cpp,h] analyzeReport.cpp sincos.h test_workunits/ reference_work_unit.sah Rom 26 June 2005 - Update Windows project files to use the FFTW library and optimize for SSE client/ win-config.h client/win_build/ seti_boinc.vcproj Jeff 26 July 2005 - Added a sky_map table to the db schema. This will be the primary table used to control the near time persistency checker. - Split a while() loop into 2 lines because otherwise gdb would not allow a break to be set inside the loop (Eric change). db/ schema_master.sql schema_master.[cpp,h] sqlifx.ec Jeff 09 Sept 2005 - added a couple of libs to the splitter makefile that the new boinc crypto code needs. splitter/ Makefile.in Jeff 05 Oct 2005 - Removed old/new hash boolean from call to dir_hier_path(). splitter/ wufiles.cpp Jeff 28 Oct 2005 - Fixed memory leak in the validator. - Sync with changes in the BOINC SCHED_MSG_LOG definition. validate/ sah_validate.cpp sah_boinc_db.cpp Jeff 1/9/2006 Jeff Splitter related changes. - account for new command_line parm in create_work() - we just pass NULL. - changed all instances of safe_strncpy() to strlcpy(). - change the app config file name to sah_enhanced_config.xml. - added settings ID WU name. splitter/ readtape.cpp wufiles.cpp db/ app_config.cpp Jeff 1/11/2006 - More safe_strncpy -> strlcpy(). client/ timecvt.cpp Jeff 1/19/2006 - added field sb_id to tape, workunit_grp, workunit, and result. These fields were required for the DB merge. We can drop thme after a while. - app config file name back to sah_config.xml. This should be a command line item. db/ app_config.cpp schema_master.cpp schema_master.h schema_master.sql Jeff 1/23/2006 - The assimilator now uses the settings ID that is embedded in the wu/result name to get to the analysis_config and receiver_config tables. If the settings ID has not changed from one result to the next (normally true until the enhanced client gets released) then we do no DB accessing. This replaces the logic whereby we were reading the wu and wug for each result. - Both the enhanced and old splitter were previously modified to embed the settings ID into the wu/result names. assimilator/ sah_assimilate_handler.cpp Jeff 1/24/2006 - Templated signal insertion. There were several other small code changes secondary to this. - if (appid == 2) signal.reserved = 1. This is temporary for enhanced rollout plus DB correction. The correction code needs to know is the signals were returned by an enhanced app or not. This sah2:result.max(id) before this change went on was 1615350419. assimilator/ sah_assimilate_handler.cpp Jeff 2/7/2006 - Changed the type of q_pix in all 4 signal table schemas from integer to int8. - The assimilator now inserts signals with "n_pix", a 64 bit integer. It contains "q_pix" in the high order 32 bits and frequency with a resoltion of 10 Hz in the low order 32 bits. All floating point numbers are cast (ie floored) to integers in this processed. Note: the max IDs before this change were: spike 1017689548 gaussian 116885361 pulse 173469464 triplet 125669326 -------------------- Testing notes (all tests look good) ------------------ Here is a new spike. id 1017690489 result_id 1619052602 peak_power 24.45193290000 mean_power 1.000000000000 time 2453342.626688 ra 2.944765570000 decl 26.35156250000 q_pix 3601673817190043 freq 1421050038.263 detection_freq 1421049936.330 barycentric_freq 1421103637.391 fft_len 131072 chirp_rate -1.38084543000 rfi_checked 0 rfi_found 0 reserved 0 n_pix q_pix freq ---------------- ----------- ----------- 3601673817190043 = 00 0C CB B4 08 78 6E 9B 00 0C CB B4 = 838580.00 which translates to RA 2.9443359 and Decl 26.3392294 from DB 2.9447656 26.3515625 --------- ---------- 37 arcsec diff 44 arcsec diff 08 78 6E 9B = 142110363 1421103637.391/10 = 142110363 --------- 0 Hz diff Here is a new gaussian: id 116899622 result_id 1619068124 peak_power 1.717239500000 mean_power 0.458329827 time 2452982.120403 ra 14.84703540000 decl 18.09752270000 q_pix 38639321233114672 freq 1419769999.385 detection_freq 1419770480.211 barycentric_freq 1419689449.058 fft_len 16384 chirp_rate 11.23900990000 rfi_checked 0 rfi_found 0 reserved 0 sigma 6.227958200000 chisqr 1.342639920000 null_chisqr 2.142316580000 score 0.00 max_power 4.632330890000 pot n_pix q_pix freq ----------------- ----------- ----------- 38639321233114672 = 00 89 46 42 08 76 46 30 00 89 46 42 = 8996418 which translates to RA 14.8461914 18.0921908 from DB 14.8470354 18.0975227 ---------- ---------- 73 arcsec diff 19 arcsec diff 08 76 46 30 = 141968944 1419689449.058/10 = 141968944 --------- 0 Hz diff Here is a new triplet: id 125678570 result_id 1619068730 peak_power 10.59097860000 mean_power 0.00197354145 time 2453358.223775 ra 18.05746840000 decl 20.87687870000 q_pix 142995601912863989 freq 1419248962.402 detection_freq 1419248962.402 barycentric_freq 1419256216.076 fft_len 32 chirp_rate 0.00 rfi_checked 0 rfi_found 0 reserved 0 period 0.919142425 n_pix q_pix freq ------------------ ----------- ----------- 142995601912863989 = 01 fc 05 be 08 75 9c f5 01 FC 05 BE = 33293758 which translates to RA 18.0571289 Decl 20.8620894 from DB 18.0574684 20.8768787 ---------- ---------- 29 arcsec diff 53 arcsec diff 08 75 9C F5 = 141925621 1419256216/10 = 141925621 --------- 0 Hz diff Here is a new pulse: id 173470235 result_id 1619053031 peak_power 0.919080853 mean_power 0.00388364005 time 2453357.914301 ra 10.59253220000 decl 18.10714530000 q_pix 121561945579447491 freq 1420880737.305 detection_freq 1420880737.305 barycentric_freq 1420750751.969 fft_len 64 chirp_rate 0.00 rfi_checked 0 rfi_found 0 reserved 0 period 0.293273598 snr 7.352646830000 thresh 7.250113490000 score 0.00 len_prof 44 pot n_pix q_pix freq ------------------ ----------- ----------- 121561945579447491 = 01 AF DF F2 08 77 E4 C3 01 AF DF F2 = 28303346.00 which translates to RA 10.5922852 Decl 18.0921908 from DB 10.5925322 Decl 18.1071453 ---------- ---------- 21 arcsec diff 54 arcsec diff 08 77 E4 C3 = 142075075 1420750751.969/10 = 142075075 --------- 0 Hz diff 2/23/2006 Jeff - Changed the frequency to fpix conversion from a cast-to-long to a round function: inline long round(double x) {return long(floor(x + 0.5f));} Casts from floating point to integers are always equivalent to either (int)floor() or (int)ceil(), depending on the rounding mode of the platform. This sah2:result.max(id) before this change went on was 1623225559. assimilator/ sah_assimilate_handler.cpp I then thought there was a problem and fell back on this change. The old assimilator went back on after result id 1623229153. I confirmed that there was in fact no problem and the new assimilator went back on on 2/24/06 after result id 1623492910. Testing notes: Here is a new spike: id 1024551102 result_id 1623225782 peak_power 24.31553840000 mean_power 1.000000000000 time 2451858.467759 ra 21.35094640000 decl 18.07765010000 q_pix 55794923851997434 freq 1420622880.906 detection_freq 1420621698.453 barycentric_freq 1420741058.565 fft_len 131072 chirp_rate -19.5776901000 rfi_checked 0 rfi_found 0 reserved 0 n_pix q_pix freq ------------------ ----------- ----------- 55794923851997434 00 C6 39 30 08 77 E0 FA 00 C6 39 30 = 12990768 which translates to RA 21.3515625 Decl 18.0725708 21.3509464 18.0776501 ---------- ---------- 53 arcsec diff 18 arcsec diff 0877E0FA = 142074106 round(1420741058.565/10) = 142074106 --------- 0 Hz diff Here is a new pulse: id 176938950 result_id 1623229140 peak_power 0.229531646 mean_power 0.00195498206 time 2451802.752266 ra 1.953974720000 decl 19.68553160000 q_pix 2934081280477886 freq 1420283508.301 detection_freq 1420283508.301 barycentric_freq 1420192624.394 fft_len 32 chirp_rate 0.00 rfi_checked 0 rfi_found 0 reserved 0 period 0.0233727992 snr 5.806743140000 thresh 5.665772440000 score 0.00 len_prof 7 pot n_pix q_pix freq ------------------ ----------- ----------- 2934081280477886 00 0A 6C 88 08 77 0A BE 000A6C88 = 683144 which translates to RA 1.9541016 Decl 19.6889732 1.95397472 Decl 19.6855316 ---------- ---------- 11 arcsec diff 12 arcsec diff 08770ABE = 142019262 round(1420192624.394/10) = 142019262 --------- 0 Hz diff Here is a new gaussian: id 120516510 result_id 1623489856 peak_power 3.313514950000 mean_power 0.580334067 time 2451925.666315 ra 7.090055470000 decl 8.357689860000 q_pix 98579528333729636 freq 1418915066.719 detection_freq 1418912570.889 barycentric_freq 1418934757.328 fft_len 16384 chirp_rate -35.8465271000 rfi_checked 0 rfi_found 0 reserved 0 sigma 3.568017480000 chisqr 1.412076230000 null_chisqr 2.102728610000 score 0.00 max_power 8.865511890000 pot n_pix q_pix freq ------------------ ----------- ----------- 98579528333729636 01 5E 39 8F 08 75 1F 64 015E398F = 22952335 which translates to RA 7.0898438 Decl 8.3666866 7.09005547 Decl 8.35768986 ---------- ---------- 18 arcsec diff 32 arcsec diff 08751F64 = 141893476 round(1418934757.328/10) = 141893476 --------- 0 Hz diff 3/24/06 Jeff Validator result overflow checking no longer uses an internal buffer. stderr_out is checked in place. validate/ sah_validate.cpp 3/30/06 David Added gutil_text.C to windows project 5/4/06 Charlie - Mac: Fix glut.h to be compatible with Mac's OpenGL framework. - Create combined config.h file for Intel and PowerPC Macs. - Create shell script to build fftw-3.1.1 library as universal binary (PowerPC and Intel). - Update seti_boinc XCode project to build both PowerPC and Intel versions of SETI@home Enhanced application for Macintosh. glut/ glut.h mac_build/ config.h buildfftw-3.1.1.sh seti_boinc.xcodeproj/ project.pbxproj 5/5/06 Charlie - Mac: Fix fftw-3.1.1 build script to work on PowerPC as well as Intel Macs. mac_build/ buildfftw-3.1.1.sh 5/8/06 Charlie - Mac: Add icon to SETI@home enhanced. client/ app_icon.h (added) main.cpp mac_build/ seti_boinc.xcodeproj/ project.pbxproj 5/9/06 Charlie - Mac: Fix crash bug on systems 10.3.0 through 10.3.8 due to undefined sinf, cosf, atanf functions in dynamic linked library usr/lib/libSystem.B.dylib. The fix is to not #define HAVE_SINF, HAVE_COSF and HAVE_ATANF in config.h file for PowerPC builds. - Update Mac version to 5.13 mac_build/ config.h 5/15/06 Eric - Version to 5.15 - Embedded calls to boinc_worker_timer() in main loop 6/14/06 Eric - Version to 5.17 - Removed calls to boinc_worker_timer() from main loop. - Added support for transposing the PoT array on large memory machines. This can improve performance, since caching is better for the transposed PoT. Initial code by Alex Kan. - Added several variations of transpose functions. Depending upon the size and associativity of the machine cache, one may outperform the rest. - Fixed some boinc compile problems (changes to the boinc_app_mouse_move(), etc prototypes) - added files in "client/vector" to the Dev-C++ and VCC projects. - added high resolution timer class (vector/hires_timer.*) for function timing. - added timing code for on the fly function testing and switching. This currently supporst BaseLineSmooth(), GetPowerSpectrum(), ChirpData(), and Transpose(). Support for pulse, triplet and Gaussian finding will come later. Functions can be added to the tests by adding them to the arrays in analyzeFuncs_vector.cpp. client/ analyzeFuncs.[cpp,h] analyzePot.[cpp,h] analyzeReport.[cpp,h] sah_gfx.cpp sah_gfx_base.cpp win-config.h seti.h pulsefind.cpp chirpfft.cpp s_util.h vector/ analyzeFuncs_vector.[cpp,h] hires_timer.[cpp,h] analyzeFuncs_altivec.cpp win_build/ *.dev *.vcproj win_build/ win_version.h m4/ optimizations.m4 configure.ac 7/20/06 Charlie - Mac: Update seti_boinc XCode project for added source files and to link with universal binary versions of BOINC libraries as built by current BOINC XCode project (but seti_boinc project still builds separate PPC and Intel applications.) mac_build/ seti_boinc.xcodeproj/ project.pbxproj 8/1/06 Charlie - Mac: Update seti_boinc XCode project for Altivec support. mac_build/ seti_boinc.xcodeproj/ project.pbxproj 8/2/06 Charlie - Mac: Create a new mac-specific config.h file which #includes either config-i386.h or config-ppc.h; include instructions for generating these files. Tthis is much easier than trying to merge them into one combined file with "#ifdef i386" etc. - #undef'ed HAVE_ATANF, HAVE_COSF and HAVE_SINF because this generates much smaller code - Create a new shell script makeseticonfigs.sh to automatically create config-i386.h and config-ppc.h. mac_build/ config.h config-i386.h (new) config-ppc.h (new) makeseticonfigs.sh (new) seti_boinc.xcodeproj/ project.pbxproj 8/3/06 Charlie - Mac: Allow HAVE_ATANF, HAVE_COSF and HAVE_SINF for Intel to match earlier versions. mac_build/ config.h 8/28/06 Charlie - Mac: Incresae stack size by 8MB for Intel Macs only. This seems to take care of the remaining screensaver graphics crashes. client/ main.cpp 9/19/06 Charlie - Mac: Incresae stack size by another 8MB for Intel Macs only for a total of 24MB. There were still a few occasional crashes with 16MB stack. Tripling the original stack allocation is consistent with my observation that memory sizes for most applications on Intel Macs seem to be about three times that on PowerPC Macs. client/ main.cpp 1/29/07 Charlie - Mac: Set Maximum stack size to system limit, for compatibvility with future versions of core client (rlp.rlim_cur = rlp.rlim_max). The core client will do this after fork() and before execv(). NOTE: if the OS has set rlim_max to RLIM_INFINITY, that value is -1. So adding a fixed amount (like 16MB) to -1 would actually reduce the limit instead of increasing it. This change avoids that problem. client/ main.cpp 3/16/07 Jeffc - some setilib related name changes. No logic change. assimilator/ sah_assimilate_handler.cpp 4/23/07 jeffc - Upon recompile of the assimilator for bruno (i686-linux), it aborted with: *** stack smashing detected *** This turned out to be an undersized char array in routine sql_insert_id(). I increased it from 21 bytes to 256 bytes. Still not too safe... sah:result.max(id) before this change was 1691705161. db/ sqlifx.ec 5/2/07 jeffc - Assimilator changes: - Functions radecl2pix(), pix2radecl(), and eod2stdepoch() were moved to setilib. - The code to pack ra, decl, and freq into signal.q_pix was put in setilib function co_radeclfreq2npix(). - Lots of little code and build cleanups. sah:result.max(id) before this change was 1694234121. assimilator/ Makefile.am sah_assimilate_handler.cpp 5/31/07 korpela - Increased version number to 5.20 !!! THIS IS NOT YET A WORKING BUILD. I WILL TAG IT WHEN IT WORKS !!! - Lots of changes by Joe Segur to implement optimized algorithms. - Current build finds extra triplets. Tracking that down now. - This might not build on Visual Studio. Significant changes are: 1. Modified Pulse finding. This includes both algorithmic improvements effective on all systems, and the possibility of using vectorized folding subroutines on systems with SIMD capability. Files: pulsefind.cpp, h - primary changes analyzeReport.cpp, h - minor supporting change AKfoldSSE.cpp - new The algorithmic improvements include: - The sums produced in the folding subroutines are not divided by the fold level, saving a small amount of time. - The invert_lcgf() caching saves the display threshold value rather than the report threshold, and also doesn't scale by fold level. This allows a quick comparison where only for the approximately 1% of cases where display threshold is reached does report threshold need to be calculated and checked. - Calculations of period values are kept in integer form and only converted to floating point for reporting. - The memcpy() of Pulse PoT arrays before the initial fold by 3, 4, or 5 is removed. - The sequence of folding operations for Pulse PoTs of length 511 and shorter is cached. This reduces the 3 nested loops to a single faster loop for most cases where the loop overhead was using a significant fraction of the time for folding. - The default folding subroutines are optimized for FPU and coded to encourage efficient instruction scheduling by the compiler. In support of SIMD folding: - Outputs of the folding subroutines are written 16 byte aligned so the next fold can use aligned loads. (This is also more cache-friendly even when SIMD isn't available). - Because SIMD routines are not very efficient for the shortest PoT lengths, particularly those not divisible by 4, the choice of routine for each length up to 31 is table-driven. (Again, this proved to also be a help for the default FPU optimized routines). Overall, the algorithmic improvements approach a 10% improvement in total crunch time, SIMD folding another 10%. 2. Transpose changes and additions: - Transpose is only done for chirp/fft pairs for which Gaussian, Pulse, or Triplet searching will be done. - Changed testing from 512x2048 to 16Kx64 which is used much more. That had very little effect on my Pentium-M with 1 MiB L2 cache, more on my Willamette P4 with 256 KiB L2, and most on my Pentium-MMX with 256 KiB very slow L2 on the motherboard. - Added a non-prefetch version of v_vTranspose4. It's faster on my Willamette P4 system than the original, though slightly slower on my Pentium-M system. (I also did the same for the GetPowerSpectrum routines with similar effect.) - Added another vectorized 4x4 subtranspose which differs mainly in using non-temporal writes, plus a variety of functions which use it. One of those always measures fastest on my two systems with SIMD capability, by a 30% or more margin. files: analyzeFuncs.cpp, h analyzeFuncs_sse.cpp, h analyzeFuncs_vector.cpp, h 3. Chirping changes and additions: - Modified CalcTrigArray() so when going two or more ChirpRateInd steps it only transits the two 16 MiB arrays once. - Modified testing so the change from negative to positive chirp goes two steps up. That provides a better overall speed approximation, though it's only a rough match to the number of chirp indices which are skipped in typical WUs. - Modified testing to start at chirp index 27040 so the error check is including the difficult angles of over 262144 which make single float rounding produce fractional input to the SinCos approximation with only 5 bits of precision. - After testing, if TrigArray isn't chosen then InitTrigArray() is not called again. - Added SSE3, SSE2, and SSE1 versions derived from Alex Kan's sources. - Added an FPU version patterned after the SIMD versions; quick rounding and non-branching polynomial SinCos approximation. On my systems it's quicker than TrigArray and of course it doesn't need the extra 32 MiB array space. This one isn't yet in a lunatics.at release, but Simon has built pretest versions so I'll find out soon if it's faster on AMD systems. Note 1: The DevC++ builds do a good job of making main() align per the default preferred_stack_boundary of 2^4, but not the worker thread. To work around that so the SIMD chirping wouldn't crash I added a hack near the beginning of worker() to force the stack pointer to a multiple of 16 for GNUC builds. The calculations in those SIMD routines are complex enough that there are register spills to temporary stack variables, so the kind of aligned alloca() used in analyzeFuncs_x86_64.cpp isn't adequate, I did try that. I suppose adding enough additional aligned variables could make that approach work, but I'm reluctant to modify those well-tested routines more than strictly necessary. Note 2: The "const" in float4 constant definitions seems to conflict with the MinGW intrinsics. I'm not sure why, I thought the C style cast to (void *) used in the *mmintrin.h files should work, so I just removed "const" for now. files: x86_float4.cpp, h - modified analyzeFuncs.cpp, h - modified analyzeFuncs_vector.cpp, h - modified analyzeFuncs_sse.cpp - modified analyzeFuncs_fpu.cpp - new analyzeFuncs_sse2.cpp - new analyzeFuncs_sse3.cpp - new 4. Miscellaneous: - In seti.cpp, h added save to and restore from state file of individual signal counts, plus relocated the final report of those values there; it's now called before both the normal exit in analyzeFuncs.cpp and the overflow exit in worker.cpp. - In analyzeFuncs.cpp added output of a CUSTOM_STRING (if defined) to the beginning of stderr, and a restart indication with the progress in percent. - In worker.cpp replaced the try/catch for parsing the state file with a check for existence of that file, same as in my 517STxx builds from the "Builds for unexplained error test" NC forum thread. - In analyzeFuncs_vector.cpp, h restructured the tables of functions to test to a single table for each type, adding a field indicating what CPU capabilities are required for the function. Also added a routine to set a variable to the host capabilities; the testing routines compare those and don't try unsupported routines. 06/07/2007 Eric K. - Version to 5.21 - Fixed crash on non-SSE processors. - More optimized code merging from Joe Segur "In analyzeFuncs.cpp I moved the call to ComputePoTInfo up before the call to ChooseFunctions() because the folding test uses some of the PoTInfo values both directly and indirectly. The 3 new arguments in ChooseFunctions() are needed because the folding test accesses the ChirpFftPairs array. client/ analyzeFuncs.cpp pulsefind.h vector/ AKfoldSSE.cpp (removed) analyzeFuncs_sse.cpp analyzeFuncs_vector.[cpp,h] x86_float4.h win_build/ seti_boinc.dev 7/20/07 jeffc Added science table hotpix. db/ schema_master.{sql,cpp,h} 7/21/07 Charlie - Mac: Changed files for new vector functions, changed config.h to sah_config.h, version 5.23, etc. mac_build/ config-i386.h config-ppc.h makeseticonfigs.sh seti_boinc.xcodeproj/ project.pbxproj 7/24/07 Charlie - Mac: Reconfigure XCode project for separate PowerPC and Intel targets, to allow individual source files to have different compiler flags for each architecture. - Mac: Use auto-config to build new config-i386.h, config-ppc.h; add changes to sah_config.h to override certain items in these files. -Mac: Update build instructions. mac_build/ config-i386.h config-ppc.h sah_config.h seti_boinc.xcodeproj/ project.pbxproj HowToBuildSETI_XCode.rtf 7/25/07 Charlie - Mac: More tweaks to XCode project and sah_config.h. mac_build/ sah_config.h seti_boinc.xcodeproj/ project.pbxproj 7/25/07 jeffc The assimilator now populates a new table - hotpix. Rows consist of a qpix and the time of assimlation. For each result assimilated a unique list of qpixes for the signal set is constructed. For each of these qpixes a new row in hotpix will be inserted, unless there is already a row for that qpix, in which case the time will be unpdated. Max ID for result in beta before this change was 379785. assimilator/ Makefile.am sah_assimilate_handler.cpp 7/25/07 jeffc Placed a uniqueness constraint on hotpix.id via a unique index. db/ schema_master.{sql,h,cpp}