code: public static int cuMemcpyPeerAsync(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, long ByteCount, CUstream hStream)
      {
          return checkResult(cuMemcpyPeerAsyncNative(dstDevice, dstContext, srcDevice, srcContext, ByteCount, hStream));
      }
docs: Copies device memory between two contexts asynchronously.
  
  <pre>
  CUresult cuMemcpyPeerAsync (
  CUdeviceptr dstDevice,
  CUcontext dstContext,
  CUdeviceptr srcDevice,
  CUcontext srcContext,
  size_t ByteCount,
  CUstream hStream )
  </pre>
  <div>
  <p>Copies device memory between two contexts
  asynchronously.  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. Note that
  this function is asynchronous with respect to the host and all work in
  other
  streams in other devices.
  </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
  @param hStream Stream identifier
  
  @return CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED,
  CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE
  
  @see JCudaDriver#cuMemcpyDtoD
  @see JCudaDriver#cuMemcpyPeer
  @see JCudaDriver#cuMemcpy3DPeer
  @see JCudaDriver#cuMemcpyDtoDAsync
  @see JCudaDriver#cuMemcpy3DPeerAsync