code: public static int cuMemcpyPeer(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, long ByteCount)
      {
          return cuMemcpyPeerNative(dstDevice, dstContext, srcDevice, srcContext, ByteCount);
      }
docs: Copies device memory between two contexts.
  
  <pre>
  CUresult cuMemcpyPeer (
  CUdeviceptr dstDevice,
  CUcontext dstContext,
  CUdeviceptr srcDevice,
  CUcontext srcContext,
  size_t ByteCount )
  </pre>
  <div>
  <p>Copies device memory between two contexts.
  Copies from device memory in one context to device memory in another
  context.
  <tt>dstDevice</tt> is the base device
  pointer of the destination memory and <tt>dstContext</tt> is the
  destination context. <tt>srcDevice</tt> is the base device pointer of
  the source memory and <tt>srcContext</tt> is the source pointer. <tt>ByteCount</tt> specifies the number of bytes to copy.
  </p>
  <p>Note that this function is asynchronous
  with respect to the host, but serialized with respect all pending and
  future asynchronous
  work in to the current context, <tt>srcContext</tt>, and <tt>dstContext</tt> (use cuMemcpyPeerAsync to
  avoid this synchronization).
  </p>
  <div>
  <span>Note:</span>
  <p>Note that this
  function may also return error codes from previous, asynchronous
  launches.
  </p>
  </div>
  </p>
  </div>
  
  @param dstDevice Destination device pointer
  @param dstContext Destination context
  @param srcDevice Source device pointer
  @param srcContext Source context
  @param ByteCount Size of memory copy in bytes
  
  @return CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED,
  CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE
  
  @see JCudaDriver#cuMemcpyDtoD
  @see JCudaDriver#cuMemcpy3DPeer
  @see JCudaDriver#cuMemcpyDtoDAsync
  @see JCudaDriver#cuMemcpyPeerAsync
  @see JCudaDriver#cuMemcpy3DPeerAsync