#include #include #define SZ 5000 int main(int argc, char** argv) { int i, j; static shared float b[SZ], c[SZ]; static shared[SZ] float A[SZ][SZ]; time_t sec; struct timeb t1, t2; unsigned short usec; upc_forall(i = 0; i < SZ; i++; i) { b[i] = i; for(j = 0; j < SZ; j++) A[i][j] = i*j; } ftime(&t1); upc_forall(i = 0; i < SZ; i++; i) { c[i] = 0; for(j = 0; j < SZ; j++) c[i] += A[i][j] * b[j]; } ftime(&t2); upc_barrier; //Calculate time sec = t2.time - t1.time; usec = t2.millitm - t1.millitm; if(t2.millitm - t1.millitm < 0) sec--; printf("Thread %i/%i. Calculation time = %ld.%d.\n", MYTHREAD, THREADS, sec, usec); }