From: Eric Frederich (eric.frederich_at_gmail_dot_com)
Date: Wed Dec 07 2005 - 14:47:52 PST
Hello, I'd like to share something that has been troubling me. Attached I have two files. One is the program, the other is the input to the program. I compiled the program with ./upcc -pthreads -o matrixSolver -T=2 matrixSolver.upc and run the program like ./upcrun -n 2 -c 2 -p 2 matrixSolver matrix.500.in As the program is attached it freezes on me at the following point in the code. if (ABS(a[j][i]) > ABS(a[maxrow][i])) I take the two operands of this inequality and store them in local variables tmpa and tmpb. If you use these variables for the inequality (like if(tmpa > tmpb) ) the program runs fine and solves the matrix. This confuses me greatly since the macro ABS still works since I am using it when storing the variables in tmpa and tmpb. the ABS macro is defined as follows... #define ABS(x) (x < 0 ? -(x) : (x)) Any ideas anyone? Also, I hope that I am accomplishing what I wanted to do. I want to distribute the rows of the matrix in a round robin fashion. I haven't got to dynamic memory allocation with UPC yet so I defined the array as follows. shared[1001] double a[1000][1001]; By doing this is affinity of a[0][0] through a[0][1001] going to the first thread, and the affinity of a[1][0] through a[1][1001] going to the next thread, and the affinity of a[2][0] through a[2][1001] to the next, and so on? This is a square matrix with an extra column to store the one dimensional vector. Thanks ahead of time, ------------------------ Eric L. Frederich