Sequential composition of "supersteps". - Local computation - Process Communication - Barrier Synchronization |
* More detailed will be announced very soon.
To helping understand the Synchronization and Superstep, I made a "Serialize Printing of Hello World" example.
The below codes create 10 BSPPeerThreads. Each thread will have a shuffled ID number from 0 to 9.
BSPPeerThread thread; int[] randomSequence = new int[] { 2, 3, 4, 5, 0, 1, 6, 7, 8, 9 }; for (int i = 0; i < NUM_PEER; i++) { conf.set("bsp.peers.num", String.valueOf(NUM_PEER)); conf.set(BSPConstants.PEER_HOST, "localhost"); conf.set(BSPConstants.PEER_PORT, String .valueOf(30000 + randomSequence[i])); conf.set(BSPConstants.ZOOKEEPER_SERVER_ADDRS, "localhost:21810"); thread = new BSPPeerThread(conf, randomSequence[i]); thread.start(); System.out.println(randomSequence[i] + ", " + thread.getName()); list.add(thread); } for (int i = 0; i < NUM_PEER; i++) { list.get(i).join(); }
Try to run below codes, then you'll see the output in order of thread ID. (It'll take 10 steps)
for (int i = 0; i < NUM_PEER; i++) { if (myId == i) { echo.add(getName()); System.out.println("Hello BSP from " + i + " of " + NUM_PEER + ": " + getName()); } try { Thread.sleep(2500); peer.sync(); } catch (IOException e) { e.printStackTrace(); } catch (KeeperException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } }
Hopefully it will show the best performance and the lowest latency!!
ReplyDeleteSurprise, surprise!
ReplyDelete