From: Kathy Yelick (yelick_at_EECS_dot_Berkeley_dot_EDU)
Date: Wed Jan 28 2009 - 17:03:18 PST
Just a correction -- Costin Iancu is still working on compiler bug fixes, and we are also adding a new compiler person to the team later this spring. The rest of Paul's mail was correct-- please go ahead with the bug report. Kathy ------------------------------------------------ Katherine Yelick Lawrence Berkeley National Laboratory One Cyclotron Rd., MS 50B-4230 Berkeley, CA 94720 Email: kayelick_at_lbl_dot_gov Phone: 510-495-2431 On Jan 26, 2009, at 11:18 PM, Paul H. Hargrove wrote: > Steven, > > Thanks for the bug report. I am pretty sure you have found a bug in > our UPC compiler. However, there is nobody actively working on > compiler bugs right now. So, if you could please go to http://upc-bugs.lbl.gov/bugzilla/ > and enter your information in a bug report, that will ensure we > don't loose track of it. The initial bug entry page does not allow > attachments, but once the initial report has been entered, you will > have the option to attach files. > > Thanks, > -Paul > > Steven Vormwald wrote: >> Hello, >> >> I've come across an odd problem that seems to only come up with >> structs with 2-dimensional arrays of size 1x1. The attached code >> provides an example of this. When run with N=1 (and 4 threads), >> the output is unexpectedly: >> 0 1 >> 0 0 1 >> 1 2 3 >> >> 0 1 >> 0 0 1 >> 1 2 3 >> >> 0 1 >> 0 0 704643072 >> 1 2752512 10752 >> >> instead of >> >> 0 1 >> 0 0 1 >> 1 2 3 >> >> 0 1 >> 0 0 1 >> 1 2 3 >> >> 0 1 >> 0 2 3 >> 1 6 11 >> >> Using any value of N other than 1 generates the correct output for >> the number of threads. Even more odd is when I enabled the >> debugging output from the code: >> 0 1 >> 0 0 1 >> 1 2 3 >> >> 0 1 >> 0 0 1 >> 1 2 3 >> >> C[00].local_block[00][00] = 0 + 0 * 0 >> = 0 + 0 >> = 0 >> C[00].local_block[00][00] = 0 + 1 * 2 >> = 0 + 0 >> = 0 >> C[01].local_block[00][00] = 0 + 0 * 1 >> = 0 + 0 >> = 704643072 >> C[01].local_block[00][00] = 704643072 + 1 * 3 >> = 704643072 + 0 >> = 704643072 >> C[02].local_block[00][00] = 0 + 2 * 0 >> = 0 + 0 >> = 2752512 >> C[02].local_block[00][00] = 2752512 + 3 * 2 >> = 2752512 + 0 >> = 2752512 >> C[03].local_block[00][00] = 0 + 2 * 1 >> = 0 + 0 >> = 10752 >> C[03].local_block[00][00] = 10752 + 3 * 3 >> = 10752 + 0 >> = 10752 >> >> 0 1 >> 0 0 704643072 >> 1 2752512 10752 >> >> Note that the values of A[] and B[] are printed correctly on the >> first line, but the results of the multiplication and store in C[] >> are incorrect. >> >> Changing the code to use floats or doubles instead of ints >> generates similar problems. However, if the arrays are allocated >> dynamically with upc_all_alloc(), the program works correctly. I >> tested the code on versions 2.4 (mpi), 2.6 (smp,ibv), and 2.8 >> (smp,ibv) of the Berkeley UPC compiler, all of which produce the >> same problem. I haven't been able to test it on another machine, >> so it might be a configuration issue, or a problem with the local C >> compiler (gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-3)). >> >> Attached is the source code that was used, the output of 'upcc - >> version' for each of the versions of the compiler used, as well as >> the output run on 4 threads with N=1,2. I fixed the order of the >> output lines so they lined up properly, but otherwise did not >> change the output. >> >> Steven Vormwald > > > -- > Paul H. Hargrove PHHargrove_at_lbl_dot_gov > Future Technologies Group Tel: +1-510-495-2352 > HPC Research Department Fax: +1-510-486-6900 > Lawrence Berkeley National Laboratory