Package jpvm

Examples of jpvm.jpvmMessage


      buf.pack(num);
      buf.pack(task_name);
      buf.pack(512); //default maximum heap size;
      pvm_send(buf,daemonTid,jpvmDaemonMessageTag.jpvmdSpawnTask);
      try {
    jpvmMessage m = pvm_recv(jpvmDaemonMessageTag.jpvmdSpawnTask);
    ret = m.buffer.upkint();
    m.buffer.unpack(tids,ret,1);
      }
      catch (jpvmException jpe) {
    jpvmDebug.error("pvm_spawn, internal error");
View Full Code Here


      buf.pack(num);
      buf.pack(task_name);
      buf.pack(heapSize);
      pvm_send(buf,daemonTid,jpvmDaemonMessageTag.jpvmdSpawnTask);
      try {
    jpvmMessage m = pvm_recv(jpvmDaemonMessageTag.jpvmdSpawnTask);
    ret = m.buffer.upkint();
    m.buffer.unpack(tids,ret,1);
      }
      catch (jpvmException jpe) {
    jpvmDebug.error("pvm_spawn, internal error");
View Full Code Here


  public synchronized void pvm_send(jpvmBuffer buf, jpvmTaskId tid,
      int tag) throws jpvmException {
    jpvmDebug.note("pvm_send, sending message to "+tid.toString());
    jpvmMessage message = new jpvmMessage(buf, tid, myTid, tag);
    if(myTid.equals(tid)) {
      // Just enqueue the message
      myMessageQueue.enqueue(message);
    }
    else {
      jpvmSendConnection conn = getConnection(tid);
      message.send(conn);
    }
  }
View Full Code Here

  }

  public synchronized void pvm_mcast(jpvmBuffer buf, jpvmTaskId tids[],
      int ntids, int tag) throws jpvmException {
    int exceptions = 0;
    jpvmMessage message = new jpvmMessage(buf, null, myTid, tag);
    for(int i=0;i<ntids; i++) {
      jpvmTaskId tid = tids[i];
      message.destTid = tid;
      jpvmDebug.note("pvm_mcast, sending message to "+
        tid.toString());
      try {
          jpvmSendConnection conn = getConnection(tid);
          message.send(conn);
      }
      catch (jpvmException jpe) {
        exceptions++;
      }
    }
View Full Code Here

  public jpvmConfiguration pvm_config() {
      jpvmBuffer buf = new jpvmBuffer();
      jpvmConfiguration ret = null;
      try {
    pvm_send(buf,daemonTid,jpvmDaemonMessageTag.jpvmdHostStatus);
    jpvmMessage m = pvm_recv(jpvmDaemonMessageTag.jpvmdHostStatus);
    int n = m.buffer.upkint();
    ret = new jpvmConfiguration(n);
    for(int i=0;i<n;i++)
      ret.hostNames[i] = m.buffer.upkstr();
    m.buffer.unpack(ret.hostDaemonTids,n,1);
View Full Code Here

      try {
    jpvmBuffer buf = new jpvmBuffer();
    pvm_send(buf,conf.hostDaemonTids[which],
      jpvmDaemonMessageTag.jpvmdTaskStatus);
    jpvmMessage m = pvm_recv(jpvmDaemonMessageTag.jpvmdTaskStatus);
    ret = new jpvmTaskStatus();
    ret.hostName = conf.hostNames[which];
    ret.numTasks = m.buffer.upkint();
    if(ret.numTasks==0) {
      ret.taskNames = null;
View Full Code Here

      boolean alive = true;
      while(alive) {
        try {
    jpvmDebug.note("jpvmRecvThread ("+my_num+") - blocking "+
      "for a message.");
    jpvmMessage nw = new jpvmMessage(conn);
    jpvmDebug.note("jpvmRecvThread ("+my_num+") - got a "+
      "new message.");
    queue.enqueue(nw);
    Thread.yield();
        }
View Full Code Here


      //Barrier Sync
      for (int i=0;i<info.numTasks*info.endIndex.length+info.numTasks; i++) {
        // Receive a message...
        jpvmMessage message = info.jpvm.pvm_recv(NetMessageTag.readySig);
        // Unpack the message...
        String str = message.buffer.upkstr();
        System.out.println(str);
      }
      jpvmBuffer buf = new jpvmBuffer();
View Full Code Here

  public void closeHosts() {
    try {

      for (int i=0;i<info.numTasks; i++) {
        jpvmMessage message = info.jpvm.pvm_recv(NetMessageTag.trialReady);
        int freeId = message.buffer.upkint();
        System.out.println("Trial Host "+freeId+" is killed");
        jpvmBuffer buf = new jpvmBuffer();
        buf.pack(0);
        info.jpvm.pvm_send(buf,info.tids[freeId],NetMessageTag.stopSig);
View Full Code Here


      seedInt = saveInt;
      for (int i=0;i<info.numTasks; i++) {
        // Receive a message...
        jpvmMessage message = info.jpvm.pvm_recv(NetMessageTag.trialReady);
        int freeId = message.buffer.upkint();
        System.out.println("Trial Host "+freeId+" change connection");
        seedInt = seedInt - info.endIndex.length;

        jpvmBuffer buf = new jpvmBuffer();
        buf.pack(seedInt);
        buf.pack(ba.length);
        buf.pack(ba, ba.length, 1);
        info.jpvm.pvm_mcast(buf,netTids[i],info.endIndex.length,NetMessageTag.changeConnection);
        // Unpack the message...
      }

      trialId = -1;
      expId = 0;
      int aliveHost = info.numTasks;
      int totalTrials=0;
      for(int j=0;j< exp.subExp.length; j++)
      {
        totalTrials += exp.subExp[j].repetition;
      }

      totalTrials = totalTrials * pas.numOfHosts;
      boolean stop = false;

      boolean badweight=false;

      //Barrier Sync
      for (int i=0;i<info.numTasks*info.endIndex.length; i++) {
        // Receive a message...
        jpvmMessage message = info.jpvm.pvm_recv(NetMessageTag.readySig);
        // Unpack the message...
        String str = message.buffer.upkstr();
        int posi;
        if((posi=str.indexOf("$")) >=0 )
        {
          badweight = true;
          double tmpval =  Double.parseDouble(str.substring(posi+1));
          if(tmpval > tmpValue) {
            tmpValue = tmpval;
            valueSd =0.0;
          }
        }
        System.out.println(str);
      }

      jpvmBuffer buf ;
      double per=0.0;
      boolean overflow=false;


      if(!badweight)
      {
        System.out.println("************ simulation is starting *********************");
        //listening and processing
        ToDo toDo = new ToDo(90); //1min's threshold
        int countHosts=0;
        while(!stop)
        {
          jpvmMessage m =  info.jpvm.pvm_recv(); //receive info from others
          switch(m.messageTag)
          {
            case NetMessageTag.checkTime: //received percentage time and reset netHosts
              int hostId = m.buffer.upkint();
              int eId = m.buffer.upkint();
              double root_time = m.buffer.upkdouble();
              per = root_time/exp.subExp[eId].trialLength*100;
              stop = true; //can stop now;
              overflow=true;
              for (int i=0;i<info.numTasks; i++) //reset all the netHosts
              {
                buf = new jpvmBuffer();
                info.jpvm.pvm_mcast(buf,netTids[i],info.endIndex.length,NetMessageTag.resetNetHost);
              }
              System.out.println("Overflow detected");
              break;
            case NetMessageTag.trialReady:
              int freeId = m.buffer.upkint(); //get free host id;
              trialId++;
//              System.out.println("Now trialId is "+ trialId);
              if(expId < exp.subExp.length)
              {
                if(trialId == exp.subExp[expId].repetition && expId+1 == exp.subExp.length)
                {      
                  expId++;
                }
                else if(trialId == exp.subExp[expId].repetition && expId+1 != exp.subExp.length)                                                          
                {      
                  trialId =0;
                  expId++;
                }
              }
              if(expId < exp.subExp.length// game is still on;
              {
                System.out.println("Subexp "+expId+" trial "+ trialId+" freeId "+freeId);
                buf = new jpvmBuffer();
                buf.pack(trialId);
                buf.pack(expId);
                info.jpvm.pvm_send(buf,info.tids[freeId],NetMessageTag.oneTrial);
              }
              else if( aliveHost != 0 ) // if all the work are done and some hosts are not killed
              {
                System.out.println("host "+freeId+" finished his job");
                //              buf = new jpvmBuffer();
                //              buf.pack(0);
                //              info.jpvm.pvm_send(buf,info.tids[freeId],NetMessageTag.stopSig);
                //aliveHost--;
                buf = new jpvmBuffer();
                buf.pack(0);
                info.jpvm.pvm_send(buf,info.tids[freeId],NetMessageTag.tempStopSig);                                         
              }
              break;
            case NetMessageTag.getBackData:
              countHosts++;
              if(countHosts== info.endIndex.length) {aliveHost--;countHosts=0;}
              //System.out.println("Receiving data from ");
              RecorderData spikes = (RecorderData)m.buffer.upkcnsobj();
//              System.out.print("Receiving data from "+m.buffer.upkint()+" and alive hosts"+aliveHost+"\n");
              //comibne for single unit
              Set entries = spikes.receiver.entrySet();
              Iterator entryIter = entries.iterator();
              while (entryIter.hasNext()) {
                Map.Entry<String, LinkedList<Double> > entry = (Map.Entry<String, LinkedList<Double> >)entryIter.next();
                String key = entry.getKey()// Get the key from the entry.
                LinkedList<Double> value = entry.getValue()// Get the value.
                LinkedList<Double> tmp = rdata.receiver.get(key);
                if(tmp == null)
                {
                  rdata.receiver.put(key, tmp=(new LinkedList<Double>()));
                }
                //if( spike.time !=0.0 ) tmp.add(spike.time); //put received info into memory
                tmp.addAll(value); //put received info into memory
              }
              ///comibne for multi unit
              entries = spikes.multiCounter.entrySet();
              entryIter = entries.iterator();
              while (entryIter.hasNext()) {
                Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>)entryIter.next();
                String key = entry.getKey()// Get the key from the entry.
                Integer value = entry.getValue()// Get the value.
                Integer tmp = rdata.multiCounter.get(key);
                if(tmp == null)
                {
                  rdata.multiCounter.put(key, tmp=(new Integer(0)));
                }
                tmp+=value;
                rdata.multiCounter.put(key, tmp);
              }
              entries = spikes.multiCounterAll.entrySet();
              entryIter = entries.iterator();
              while (entryIter.hasNext()) {
                Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>)entryIter.next();
                String key = entry.getKey()// Get the key from the entry.
                Integer value = entry.getValue()// Get the value.
                Integer tmp = rdata.multiCounterAll.get(key);
                if(tmp == null)
                {
                  rdata.multiCounterAll.put(key, tmp=(new Integer(0)));
                }
                tmp+=value;
                rdata.multiCounterAll.put(key, tmp);
              }
              //combine for field ele
              entries = spikes.fieldCounter.entrySet();
              entryIter = entries.iterator();
              while (entryIter.hasNext()) {
                Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>)entryIter.next();
                String key = entry.getKey()// Get the key from the entry.
                //              System.out.println(key);
                Integer value = entry.getValue()// Get the value.
                Integer tmp = rdata.fieldCounter.get(key);
                if(tmp == null)
                {
                  rdata.fieldCounter.put(key, tmp=(new Integer(0)));
                }
                tmp+=value;
                rdata.fieldCounter.put(key, tmp);
              }
              //combine for vector ele
              entries = spikes.vectorCounterX.entrySet();
              entryIter = entries.iterator();
              while (entryIter.hasNext()) {
                Map.Entry<String, Double> entry = (Map.Entry<String, Double>)entryIter.next();
                String key = entry.getKey()// Get the key from the entry.
                Double value = entry.getValue()// Get the value.
                Double tmp = rdata.vectorCounterX.get(key);
                if(tmp == null)
                {
                  rdata.vectorCounterX.put(key, tmp=(new Double(0.0)));
                }
                tmp+=value;
                rdata.vectorCounterX.put(key, tmp);
              }
              entries = spikes.vectorCounterY.entrySet();
              entryIter = entries.iterator();
              while (entryIter.hasNext()) {
                Map.Entry<String, Double> entry = (Map.Entry<String, Double>)entryIter.next();
                String key = entry.getKey()// Get the key from the entry.
                Double value = entry.getValue()// Get the value.
                Double tmp = rdata.vectorCounterY.get(key);
                if(tmp == null)
                {
                  rdata.vectorCounterY.put(key, tmp=(new Double(0.0)));
                }
                tmp+=value;
                rdata.vectorCounterY.put(key, tmp);
              }
              break;
            case NetMessageTag.trialDone:
              totalTrials--;
              int res_trial = m.buffer.upkint();
              int res_exp = m.buffer.upkint();
              //  System.out.println("R: "+"E"+res_exp+"T"+res_trial);
              //RecordBuffer spikes = (RecordBuffer)m.buffer.upkcnsobj();
              IntraRecBuffer intra = (IntraRecBuffer)m.buffer.upkcnsobj();
              /*
              //      System.out.println(intra);

              Iterator<NetRecordSpike> iter_spike = spikes.buff.iterator();
              //          System.out.println("spikes"+spikes.buff.size());
              while(iter_spike.hasNext())
              {
              NetRecordSpike spike = iter_spike.next();

              LinkedList<Double> tmp = receiver.get("E"+res_exp+"T"+res_trial+"N"+spike.from);

              if(tmp == null)
              {
              receiver.put("E"+res_exp+"T"+res_trial+"N"+spike.from, tmp=(new LinkedList<Double>()));
              }
              //if( spike.time !=0.0 ) tmp.add(spike.time); //put received info into memory
              tmp.add(spike.time); //put received info into memory
              //System.out.println("fire: time:"+spike.time+ " index:"+spike.from);
              }
              */

              for(int i = 0; i < intra.neurons.length; i++)
              {
                int neu = intra.neurons[i];
                int eleId = exp.recorder.intraIndex(neu);
                LinkedList<IntraInfo> info = intra.buff.get(i);
                LinkedList<IntraInfo> currList;
                if((currList=(LinkedList<IntraInfo>)intraReceiver[eleId+res_exp*exp.recorder.intraEle.size()])!=null)
                {
                  Iterator<IntraInfo> intraData = info.iterator();
                  Iterator<IntraInfo> thisData = currList.iterator();
                  while(intraData.hasNext())
                  {
                    (thisData.next()).plus(intraData.next());
                  }
                }
                else
                {
                  intraReceiver[eleId+res_exp*exp.recorder.intraEle.size()]=info; 
                }
              }
              break;
          }

          if( aliveHost == 0 && totalTrials==0)
          {
            stop = true;
            break;
          }
        }
        toDo.stop();

        if(overflow)
        {
          tmpValue = (100.0-per)/100.0;
          valueSd =0.0;
          //Barrier Sync
        }
        else
        {
          tmpValue = parDoc.getFitValue(pas,intraReceiver,rdata);
          double [] bootVal = new double [200]; //200 times to get Sd.
          for(int i=0; i < 200; i++)
          {
            bootVal[i] = parDoc.getRanFitValue(pas,intraReceiver,rdata,idum);
          }
          valueSd = FunUtil.sd(bootVal);
          for (int i=0;i<info.numTasks; i++) {
            buf = new jpvmBuffer();
            info.jpvm.pvm_mcast(buf,netTids[i],info.endIndex.length,NetMessageTag.netHostNotify);
          }
        }

      }
      else
      {
        for (int i=0;i<info.numTasks; i++) {
          buf = new jpvmBuffer();
          info.jpvm.pvm_mcast(buf,netTids[i],info.endIndex.length,NetMessageTag.netHostNotify);
        }
      }

      for (int i=0;i<info.numTasks*info.endIndex.length; i++) {
        // Receive a message...
        jpvmMessage message = info.jpvm.pvm_recv(NetMessageTag.readySig);
        // Unpack the message...
        String str = message.buffer.upkstr();
        System.out.println(str);
      }

View Full Code Here

TOP

Related Classes of jpvm.jpvmMessage

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.