X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;ds=sidebyside;f=Robust%2Fsrc%2FBenchmarks%2FPrefetch%2FEm3d%2Fdsm%2FBiGraphN.java;h=19793c1d8d0a9ed2c9a8b56081f3c215a63e90c5;hb=40a6fc47815746d763fca23b8495798ed2a4baa9;hp=9c5a8f69a5ef4c8c8c760829cd18b2db51c52d97;hpb=a9def6c0199c018c3bbfd0318b49bfcd92a72b77;p=IRC.git diff --git a/Robust/src/Benchmarks/Prefetch/Em3d/dsm/BiGraphN.java b/Robust/src/Benchmarks/Prefetch/Em3d/dsm/BiGraphN.java index 9c5a8f69..19793c1d 100644 --- a/Robust/src/Benchmarks/Prefetch/Em3d/dsm/BiGraphN.java +++ b/Robust/src/Benchmarks/Prefetch/Em3d/dsm/BiGraphN.java @@ -36,52 +36,124 @@ public class BiGraph * @return the bi graph that we've created. **/ - static BiGraph create(int numNodes, int numDegree, boolean verbose, Random r) + static BiGraph create(int numNodes, int degree, boolean verbose, Random r) { - // making nodes (we create a table) //if (verbose) System.printString("making nodes (tables in orig. version)"); - Node [] eTable=Node.fillTable(numNodes, numDegree, r); - Node [] hTable=Node.fillTable(numNodes, numDegree, r); - - // making neighbors - //if (verbose) System.printString("updating from and coeffs"); - for(int i = 0; i< numNodes; i++) { - Node n = hTable[i]; - n.makeUniqueNeighbors(eTable, r); - } - - for (int i = 0; i < numNodes; i++) { - Node n = eTable[i]; - n.makeUniqueNeighbors(hTable, r); - } - - // Create the fromNodes and coeff field - //if (verbose) System.printString("filling from fields"); - for(int i = 0; i< numNodes; i++) { - Node n = hTable[i]; - n.makeFromNodes(); - } - - for (int i = 0; i < numNodes; i++) { - Node n = eTable[i]; - n.makeFromNodes(); - } - - // Update the fromNodes - for (int i = 0; i < numNodes; i++) { - Node n = hTable[i]; - n.updateFromNodes(r); - } - for (int i = 0; i < numNodes; i++) { - Node n = eTable[i]; - n.updateFromNodes(r); - } + //Node [] eTable=Node.fillTable(numNodes, numDegree, r); + //Node [] hTable=Node.fillTable(numNodes, numDegree, r); + + Node [] eTable = global new Node[numNodes]; + Node [] hTable = global new Node[numNodes]; + eTable[0] = global new Node(degree, r); + hTable[0] = global new Node(degree, r); + BiGraph g = global new BiGraph(eTable, hTable); + return g; } + + /** + * + * + * @return + **/ + public void allocate( int indexBegin, int indexEnd, int degree, Random r ) + { + Node prevNodeE = global new Node(degree, r); + Node prevNodeH = global new Node(degree, r); + + eNodes[indexBegin] = prevNodeE; + hNodes[indexBegin] = prevNodeH; + + for( int i = indexBegin + 1; i < indexEnd; i++ ) { + Node curNodeE = global new Node(degree, r); + Node curNodeH = global new Node(degree, r); + + eNodes[i] = curNodeE; + hNodes[i] = curNodeH; + + prevNodeE.next = curNodeE; + prevNodeH.next = curNodeH; + + prevNodeE = curNodeE; + prevNodeH = curNodeH; + } + } + + + public void linkSegments( int index ) { + eNodes[index - 1].next = eNodes[index]; + hNodes[index - 1].next = hNodes[index]; + } + + + /** + * + * + * @return + **/ + public void makeNeighbors( int indexBegin, int indexEnd, Random r ) + { + System.printString( "Making unique neighbors for hNodes...\n" ); + + // making neighbors + //if (verbose) System.printString("updating from and coeffs"); + for(int i = indexBegin; i < indexEnd; i++) { + Node n = hNodes[i]; + n.makeUniqueNeighbors(eNodes, r); + } + + System.printString( "Making unique neighbors for eNodes...\n" ); + + for (int i = indexBegin; i < indexEnd; i++) { + Node n = eNodes[i]; + n.makeUniqueNeighbors(hNodes, r); + } + } + + + public void makeFromNodes( int indexBegin, int indexEnd ) + { + System.printString( "Making h fromNodes...\n" ); + + // Create the fromNodes and coeff field + //if (verbose) System.printString("filling from fields"); + for(int i = indexBegin; i < indexEnd; i++) { + Node n = hNodes[i]; + n.makeFromNodes(); + } + + System.printString( "Making e fromNodes...\n" ); + + for(int i = indexBegin; i < indexEnd; i++) { + Node n = eNodes[i]; + n.makeFromNodes(); + } + } + + + public void makeFromLinks( int indexBegin, int indexEnd, Random r ) + { + System.printString( "Updating h fromNodes...\n" ); + + // Update the fromNodes + for(int i = indexBegin; i < indexEnd; i++) { + Node n = hNodes[i]; + n.updateFromNodes(r); + } + + System.printString( "Updating e fromNodes...\n" ); + + for(int i = indexBegin; i < indexEnd; i++) { + Node n = eNodes[i]; + n.updateFromNodes(r); + } + } + + /** * Override the toString method to print out the values of the e and h nodes. * @return a string contain the values of the e and h nodes.