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
}
}