public static int cudaMemPrefetchAsync(Pointer devPtr, long count, int dstDevice, cudaStream_t stream)
    {
        return checkResult(cudaMemPrefetchAsyncNative(devPtr, count, dstDevice, stream));
    }
public static int cudaMemPrefetchAsync ( Pointer devPtr , long count , int dstDevice , cudaStream_t stream ) { return checkResult ( cudaMemPrefetchAsyncNative ( devPtr , count , dstDevice , stream ) ) ; }
Prefetches memory to the specified destination device
<br>
Prefetches memory to the specified destination device.  devPtr is the
base device pointer of the memory to be prefetched and dstDevice is the
destination device. count specifies the number of bytes to copy. stream
is the stream in which the operation is enqueued.<br>
<br>
Passing in cudaCpuDeviceId for dstDevice will prefetch the data to CPU memory.<br>
<br>
If no physical memory has been allocated for this region, then this memory region
will be populated and mapped on the destination device. If there's insufficient
memory to prefetch the desired region, the Unified Memory driver may evict pages
belonging to other memory regions to make room. If there's no memory that can be
evicted, then the Unified Memory driver will prefetch less than what was requested.<br>
<br>
In the normal case, any mappings to the previous location of the migrated pages are
removed and mappings for the new location are only setup on the dstDevice.
The application can exercise finer control on these mappings using ::cudaMemAdvise.<br>
<br>
Note that this function is asynchronous with respect to the host and all work
on other devices.

@param devPtr    Pointer to be prefetched
@param count     Size in bytes
@param dstDevice Destination device to prefetch to
@param stream    Stream to enqueue prefetch operation

@return cudaSuccess, cudaErrorInvalidValue, cudaErrorInvalidDevice

@see JCuda#cudaMemcpy
@see JCuda#cudaMemcpyPeer
@see JCuda#cudaMemcpyAsync
@see JCuda#cudaMemcpy3DPeerAsync
@see JCuda#cudaMemAdvise