package x10; class FRASimpleDist { //static long POLY = 0x0000000000000007L; // DZ //static long PERIOD = 1317624576693539401L; // DZ static int HPCC_starts(int n) { return n; //int i; // DZ //int j; //long m2[] = {}; // = Rail.make[long](64); //while (n < 0) n += PERIOD; //while (n > PERIOD) n -= PERIOD; // //if (n == 0) return 0x1L; //long temp = 0x1; //for (i=0; i<64; i++) { // m2[i] = temp; // temp = (temp << 1) ^ (temp < 0 ? POLY : 0L); // temp = (temp << 1) ^ (temp < 0 ? POLY : 0L); //} //for (i=62; i>=0; i--) if (((n >> i) & 1) != 0) break; //long ran = 0x2; //while (i > 0) { // temp = 0; // for (j=0; j<64; j++) if (((ran >> j) & 1) != 0) temp ^= m2[j]; // ran = temp; // i -= 1; // if (((n >> i) & 1) != 0) // ran = (ran << 1) ^ (ran < 0 ? POLY : 0); //} //return ran; } static void randomAccessUpdate(int num_updates, int logLocalTableSize, int MAX_PLACES) { Conc.finish_begin(); randomAccessUpdate_1(num_updates,logLocalTableSize,MAX_PLACES); Conc.finish_end(); } static void randomAccessUpdate_1(int num_updates, int logLocalTableSize, int MAX_PLACES) { for (int p=0; p<MAX_PLACES; p++) { int valp = p; Conc.async_begin(); randomAccessUpdate_2(num_updates,logLocalTableSize,MAX_PLACES,p,valp); Conc.async_end(); } } static void randomAccessUpdate_2(int num_updates, int logLocalTableSize, int MAX_PLACES, int p, int valp) { //int ran = HPCC_starts(valp*(num_updates/MAX_PLACES)); // DZ for (int i=0; i<num_updates/*/MAX_PLACES // DZ*/; i++) { Conc.async_begin(); randomAccessUpdate_3(); Conc.async_end(); } } static void randomAccessUpdate_3() {} public static void main(String args[]) { int MAX_PLACES = 16; //must be a power of 2 int logLocalTableSize = args.length; //> 1 && args[0].equals("-m") ? Integer.parseInt(args[1]) : 12; // DZ int localTableSize = logLocalTableSize; //1<<logLocalTableSize; // DZ int tableSize = localTableSize*MAX_PLACES; int num_updates = 4*tableSize; randomAccessUpdate(num_updates,logLocalTableSize,MAX_PLACES); // repeat for testing. randomAccessUpdate(num_updates,logLocalTableSize,MAX_PLACES); for (int i=0; i<MAX_PLACES; i++) { Conc.async_begin(); main_1(); Conc.async_end(); } } static void main_1() { //val table = tables(); // DZ //int err = 0; // DZ //for (int j=0; j<table.a.length; j++) // DZ // if (table.a(j) != j) err++; // DZ //} // DZ } }