}
public static void startPE() throws IOException{
// Concoct user-readable name
CommunicationManager cManager = CommunicationManager.getManager();
Aleph.setDebugFile(thisPE().label);
// Initialize static fields
thisPE = new PE(cManager.getAddress());
thisPE.parent = cManager.getParentAddress();
thisPE.numPEs = Integer.parseInt(Aleph.getProperty("aleph.numPEs", "1"));
thisPE.index = Integer.parseInt(Aleph.getProperty("aleph.index", "0"));
// Fill in peers, using handshake with parent
synchronized (lock) { // only the paranoid survive
thisPE.group = null;
Integer id = new Integer(Aleph.getIntProperty("aleph.group", 0));
cManager.send(thisPE.parent, new PEGroup.AskParent(thisPE, id, thisPE.index));
while (thisPE.group == null) {
try {lock.wait();} catch (InterruptedException e) {}
}
Logger.fetal("PE started...");