BiGraph create(int numNodes, int numDegree, boolean verbose, Random r)
{
- Node newnode = global new Node();
// making nodes (we create a table)
//if (verbose) System.printString("making nodes (tables in orig. version)");
Node[] hTable = global new Node[numNodes];
Node[] eTable = global new Node[numNodes];
- hTable = newnode.fillTable(numNodes, numDegree, r);
- eTable = newnode.fillTable(numNodes, numDegree, r);
+ hTable = Node.fillTable(numNodes, numDegree, r);
+ eTable = Node.fillTable(numNodes, numDegree, r);
// making neighbors
//if (verbose) System.printString("updating from and coeffs");
public void run() {
int iteration;
- int b;
atomic {
iteration = numIter;
- b = mybarr.numthreads;
}
for (int i = 0; i < iteration; i++) {
- Barrier runBarrier = new Barrier();
/* for eNodes */
atomic {
Node prev, curr;
}
curr = curr.next;
}
- runBarrier.enterBarrier(mybarr);
+ Barrier.enterBarrier(mybarr);
}
/* for hNodes */
}
curr = curr.next;
}
- runBarrier.enterBarrier(mybarr);
+ Barrier.enterBarrier(mybarr);
}
}
}
* @param degree the out degree of each node
* @return a table containing all the nodes.
**/
- public Node[] fillTable(int size, int degree, Random r)
+ public static Node[] fillTable(int size, int degree, Random r)
{
Node[] table = global new Node[size];
int tmp;
boolean retry=true;
- if (b.numthreads == 1)
- return;
-
do {
if (!b.cleared) {
b.entercount++;
tmp = b.entercount;
if (tmp==b.numthreads) {
- b.cleared=true;
+ if(b.numthreads > 1)
+ b.cleared=true;
b.entercount--;
return;
}
BiGraph create(int numNodes, int numDegree, boolean verbose, Random r)
{
- Node newnode = new Node();
-
// making nodes (we create a table)
if (verbose) System.out.println("making nodes (tables in orig. version)");
- Node[] hTable = newnode.fillTable(numNodes, numDegree, r);
- Node[] eTable = newnode.fillTable(numNodes, numDegree, r);
+ Node[] hTable = Node.fillTable(numNodes, numDegree, r);
+ Node[] eTable = Node.fillTable(numNodes, numDegree, r);
// making neighbors
if (verbose) System.out.println("updating from and coeffs");
public void run() {
for (int i = 0; i < numIter; i++) {
- Barrier runBarrier = new Barrier();
/* for eNodes */
Node prev = bg.eNodes;
Node curr = null;
}
curr = curr.next;
}
- runBarrier.enterBarrier(mybarr);
- //mybarr.reset();
+ Barrier.enterBarrier(mybarr);
/* for hNodes */
prev = bg.hNodes;
}
curr = curr.next;
}
- runBarrier.enterBarrier(mybarr);
- //mybarr.reset();
+ Barrier.enterBarrier(mybarr);
}
}
BiGraph graph1 = new BiGraph();
int num_threads = 2;
Barrier mybarr = new Barrier(num_threads);
- System.out.println("DEBUG -> num_threads = " + num_threads);
BiGraph graph = graph1.create(em.numNodes, em.numDegree, em.printResult, rand);
long end0 = System.currentTimeMillis();
* @param degree the out degree of each node
* @return a table containing all the nodes.
**/
- public Node[] fillTable(int size, int degree, Random r)
+ public static Node[] fillTable(int size, int degree, Random r)
{
Node[] table = new Node[size];