📄 mxdevice.java
字号:
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 + -