Running the Run-Time Error Detection Test Suite 1) Download and untar and gunzip as necessary 2) In the directory UPC copy the appropriate CONFIGURATION.* file to CONFIGURATION. If one is not appropriate copy one that is close, and modify as needed. 3) Modify CONFIGURATION file as tools to incorporate additional tools. Also, the TMP variable allow you to specify a temporary space which may be faster than a subdirectory of the current working directory. ** CAUTION ** If you change the value of TMP, do not change it to RESULT or to any directory which you want to keep, as this directory is destroyed prior to running each test. 4) In the directory UPC, issue ./run_tests_all This will run all the tests for UPC, printing a section by section summary. There are over 2000 tests, so depending on the machine and compiler (either compiling or running) these tests can take significant time. E.g. On a 4 processor Opteron system running HP UPC, runtime for the entire set of tests varied from 90 minutes to over 5 hours depending on the compiler. 5) After running, you can cd into any section, and see which tests passed/failed in the files test_results_E, test_results_D, test_results_C, test_results_B, test_results_A. The criteria for passing at the E level is the least strict and the A level is the most strict. 6) In each section, you may type ../chk test_name where test_name is one of the tests in any of the test_results files. An example is at the end of the Readme. 7) After running, you can issue ./cleanup_all to get rid of the result files. 8) Note: Some compilers do not implement the full UPC specification. E.g. Hewlett-Packard UPC does not support UPC I/O and the GNU UPC compiler supports neither UPC I/O nor UPC collective routines. These tests then fail to compile or link, and are not counted in the grading as either a PASS or a FAIL, they are just ignored for grading, as these are RUN-TIME tests. If you encounter problems with these tests, please send email to rted@iastate.edu Appendix A: ----------- ../chk example: --------------- cd UPC/A_Deadlcks ../chk c_A_2_a test_results_A:c_A_2_a PASS test_results_B:c_A_2_a PASS test_results_C:c_A_2_a PASS test_results_D:c_A_2_a PASS test_results_E:c_A_2_a PASS Actual error message for test c_A_2_a : ------------------------------------------- Error in thread 1 - value in upc_notify or upc_barrier (23) does not match value in upc_notify or upc_barrier from other threads Error in thread 0 - value in upc_notify or upc_barrier (11) does not match value in upc_notify or upc_barrier from other threads Traceback for process 542746(ssp mode) apid 543051.1 on node 0 _kill+0x0030 (0x8001087130) at kill.c _raise+0x00A8 (0x8001058B28) at raise.c:27 abort+0x00B8 (0x8001056358) at abort.c:44 ___upc_notify+0x0A70 (0x800103C250) at upc_notify_wait.c:245 funcA+0x0054 (0x8001002CB4) at c_A_2_a_s.upc:30 main+0x01D4 (0x8001003494) at c_A_2_a.upc:46 Fault: Killed by user id 26414 process 542746 ./limit_real_time_nums_a[4]: 543051 Abort Ideal error message for test c_A_2_a : ------------------------------------------- ERROR: deadlocked at barriers Threads 0, 2, and 3 are waiting at a 'upc_barrier' with value 11 at line 30 in file 'c_A_2_a_s.upc'. Thread 1 is waiting at a 'upc_barrier' with value 23 at line 30 in file 'c_A_2_a_s.upc'. Appendix B: ----------- For greater flexibility: 9) To run just one or two sections for a given language, you may type ./run_tests_all section1 section2 ... This does destroy any existing test_results files, and any files in the RESULTS subdirectory. 10) If you are in a section subdirectory, you may run just a few of the tests for that section by issuing ../tools/run_tests test1 test2 ... Again, this destroys any existing test_results and RESULTS/ files. Once this is done, ../chk works only for the smaller set of tests you've just run.