⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mxdevice.java

📁 MPI for java for Distributed Programming
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
      dynamicBufferLength = buf.getDynamicBuffer().length ;	        }    else {      dynamicBufferLength = 0;    }    //buf.getStaticBuffer().putInt( staticBufferLength, 4 );    //buf.getStaticBuffer().put( encoding, 0); .. ..     //buf.getStaticBuffer().putInt( dynamicBufferLength, 0 );        //System.out.println("offset "+offset);    //System.out.println("staticBufferLength "+staticBufferLength );    //System.out.println("dynamicBufferLength"+dynamicBufferLength);        nativeIsend(buf, dstID, tag, context, staticBufferLength, 		    dynamicBufferLength, sendRequest, offset );     requestMap.put( new Long(sendRequest.handle), sendRequest) ;     return sendRequest ;	    }  public void send(mpjbuf.Buffer buf, ProcessID dstID,                            int tag, int context) throws XDevException {    int staticBufferLength = buf.getSize() ;    int dynamicBufferLength;        int offset = buf.offset();     //System.out.println("offset "+offset);    if(buf.getDynamicBuffer() != null) {      dynamicBufferLength = buf.getDynamicBuffer().length ;	        }    else {      dynamicBufferLength = 0;    }    //we can write the control-section here ..	      nativeSend(buf, dstID, tag, context, staticBufferLength,		    dynamicBufferLength);  }  public mpjdev.Request issend(mpjbuf.Buffer buf, ProcessID dstID,                                        int tag, int context) 	  				throws XDevException {     MXSendRequest sendRequest = new MXSendRequest();			           int staticBufferLength = buf.getSize() ;    int dynamicBufferLength;        if(buf.getDynamicBuffer() != null) {      dynamicBufferLength = buf.getDynamicBuffer().length ;	        }    else {      dynamicBufferLength = 0;    }    nativeIssend(buf, dstID, tag, context, staticBufferLength, 		    dynamicBufferLength, sendRequest );    requestMap.put( new Long(sendRequest.handle), sendRequest) ;     return sendRequest ;	    }  public void ssend(mpjbuf.Buffer buf, ProcessID dstID,                             int tag, int context) throws XDevException {    int staticBufferLength = buf.getSize() ;    int dynamicBufferLength;        if(buf.getDynamicBuffer() != null) {      dynamicBufferLength = buf.getDynamicBuffer().length ;	        }    else {      dynamicBufferLength = 0;    }        nativeSsend(buf, dstID, tag, context, staticBufferLength,		    dynamicBufferLength);  }  public mpjdev.Status recv(mpjbuf.Buffer buf, ProcessID srcID,                                     int tag, int context) 	                             throws XDevException {    mpjdev.Status status = new mpjdev.Status();    //we do not need any of this bollocks if the native code can set     // "status.srcID and status.tag"    int ANY_SRC = 0; //0 is false and 1 is true    if(srcID.uuid().equals(xdev.Device.ANY_SRC.uuid()) ) {      ANY_SRC = 1;	        }    //else if(srcID.uuid().equals(xdev.Device.ANY_SRC.uuid())) {     //  ANY_SRC = 1;      	        //  status.tag = tag;    //} else if(tag == Device.ANY_TAG) {    //  status.srcID = srcID.uuid();    //} else {    //  status.srcID = srcID.uuid();    //  status.tag = tag;    //}    nativeRecv( buf, srcID, tag, context, status, ANY_SRC);    status.srcID = pids[status.source].uuid();     try {       buf.commit();       status.type = buf.getSectionHeader() ;       status.numEls = buf.getSectionSize() ;     }    catch(Exception e) {       throw new XDevException(e); 	        }     return status;	        }  public mpjdev.Request irecv(mpjbuf.Buffer buf, ProcessID srcID,                                       int tag, int context,                                       mpjdev.Status status) 	                               throws XDevException {     MXRecvRequest recvRequest = new MXRecvRequest(this);    int ANY_SRC = 0; //0 is false and 1 is true        if(srcID.uuid().equals(xdev.Device.ANY_SRC.uuid())) {       ANY_SRC = 1;      	        }        recvRequest.status = new mpjdev.Status();     nativeIrecv(buf, srcID, tag, context, status, recvRequest,	    ANY_SRC);     requestMap.put( new Long(recvRequest.handle), recvRequest) ;     return recvRequest;	    }  public mpjdev.Status probe(ProcessID srcID, int tag,                                      int context) throws XDevException {    mpjdev.Status status = new mpjdev.Status();	      int ANY_SRC = 0; //0 is false and 1 is true    if(srcID.uuid().equals(xdev.Device.ANY_SRC.uuid())) {       ANY_SRC = 1;      	        }     //else {     //  status.srcID = srcID.uuid();    //  status.tag = tag;    //}    nativeProbe(srcID, tag, context, status, ANY_SRC);    status.srcID = pids[status.source].uuid();     return status;	    }  public mpjdev.Status iprobe(ProcessID srcID, int tag,                                       int context) throws XDevException {    mpjdev.Status status = new mpjdev.Status();	      int ANY_SRC = 0; //0 is false and 1 is true    if(srcID.uuid().equals(xdev.Device.ANY_SRC.uuid())) {       ANY_SRC = 1;      	        }    int isCompleted = 0 ;     //System.out.println(" context(iprobe) "+context);     isCompleted = nativeIprobe(srcID, tag, 		    context, status, ANY_SRC, isCompleted );    //System.out.println(" isCompleted (after probe) <"+isCompleted+">");    //System.out.println(" isCompleted (after probe) <"+status+">");    if(isCompleted == 1) {       status.srcID = pids[status.source].uuid();     }    //we need to return null in case there is no message that has been     //probed.    return ((isCompleted == 1) ? status : null);   }   // TODO: need to get rid of isPeeked flag ..its not required anymore ...  public mpjdev.Request peek() throws XDevException {     long natPeekedReqHandle ; 	      //this status is dummy ...no use ...    mpjdev.Status completedStatus = new mpjdev.Status() ;     natPeekedReqHandle = nativePeek(completedStatus) ;     //note that peekedRequest is not deleted from requestMap ...    //iwait is supposed to do this ...    MXRequest peekedRequest = requestMap.get(new Long(natPeekedReqHandle)) ;     //peekedRequest.isPeeked = 1 ;     //peekedRequest.status = completedStatus ;     return peekedRequest ;   }/*  public static mpjdev.Status iwaitany(mpjdev.Request[] requests) {     MXRequest peekedRequest ;    long natPeekedReqHandle ;     mpjdev.Status completedStatus = new mpjdev.Status() ;     boolean found = false;      boolean inActive = true ;     // check if there is a valid request which could be peeked     for(int i=0 ; i< requests.length ; i++) {       if(requests[i] != null) {  	         inActive = false; 	            }    }    if(inActive) {       return null;  	        }        do {      natPeekedReqHandle = nativePeek(completedStatus) ;       //iwait will delete it ...      peekedRequest = requestMap.get(new Long(natPeekedReqHandle)) ;       //peekedRequest = (MXRequest) nativePeek(completedStatus);      //peekedRequest.isPeeked = 1;      completedStatus = peekedRequest.iwait() ;       //deletePeekedRequest(peekedRequest, peekedRequest.requestStruct) ;       // see if the peekedRequest is in the argument       for(int j=0 ;j<requests.length ; j++) { 	if(requests[j] != null) {                 if(peekedRequest == requests[j]) { 	    completedStatus.index = j ; 	  	    found = true;             break;	  }	}      }      if(!found) {         System.out.println(" The message peeked is not what we are looking for"+	  	           "... trying more ... ");       }    } while(!found);        //completedStatus = peekedRequest.iwait();     // need to delete global reference ...    return completedStatus ;   }  */ //iwaitany ends ...  native void nativeInit(String[] args, int rank,		  String[] processNames, int[] ranks, int nprocs,		  MXProcessID[] pids, long msb, long lsb) ;   native void nativeIsend(mpjbuf.Buffer buf, ProcessID dstID, int tag, 		  int context, int staticBufferLength,		  int dynamicBufferLength, MXSendRequest req, 		  int offset );  native void nativeSend(mpjbuf.Buffer buf, ProcessID dstID, int tag, 		  int context, int staticBufferLength,		  int dynamicBufferLength);  native void nativeIssend(mpjbuf.Buffer buf, ProcessID dstID, int tag, 		  int context, int staticBufferLength,		  int dynamicBufferLength, MXSendRequest req);  native void nativeSsend(mpjbuf.Buffer buf, ProcessID dstID, int tag, 		  int context, int staticBufferLength,		  int dynamicBufferLength);  native void nativeIrecv(mpjbuf.Buffer buf, ProcessID srcID, int tag, 		  int context, mpjdev.Status status, MXRecvRequest req, 		  int anySrc);  native void nativeRecv(mpjbuf.Buffer buf, ProcessID srcID, int tag,		  int context, mpjdev.Status status, int anySrc);  native void nativeProbe(ProcessID srcID, int tag, int context, 		  mpjdev.Status status, int anySrc);  native int nativeIprobe(ProcessID srcID, int tag, int context,		  mpjdev.Status status, int anySrc, int isCompleted);  native long nativePeek(mpjdev.Status completedStatus) ;   static native void deletePeekedRequest(MXRequest request, 		  long requestStruct) ;   native void nativeFinish();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -