Library/ManagedCuda/CudaPitchedDeviceVariable.cs
/// <summary>
/// Copy data from this device to host memory
/// </summary>
/// <param name="hostDest">Destination</param>
/// <param name="width">Width in elements</param>
/// <param name="height">Height in elements</param>
Copy data from this device to host memory
Copy data from this device to host memory
public void CopyToHost(T[] hostDest, SizeT width, SizeT height)
		{
			if (disposed) throw new ObjectDisposedException(this.ToString());
			GCHandle handle = GCHandle.Alloc(hostDest, GCHandleType.Pinned);
			try
			{
				CUDAMemCpy2D copyParams = new CUDAMemCpy2D();
				copyParams.dstHost = handle.AddrOfPinnedObject();
				copyParams.dstMemoryType = CUMemoryType.Host;
				copyParams.srcDevice = _devPtr;
				copyParams.srcMemoryType = CUMemoryType.Device;
				copyParams.srcPitch = _pitch;
				copyParams.Height = height;
				copyParams.WidthInBytes = width * (SizeT)Marshal.SizeOf(typeof(T));
				res = DriverAPINativeMethods.SynchronousMemcpy_v2.cuMemcpy2D_v2(ref copyParams);
				Debug.WriteLine(String.Format("{0:G}, {1}: {2}", DateTime.Now, "cuMemcpy2D", res));
			}
			finally
			{
				handle.Free();
			}
			if (res != CUResult.Success)
				throw new CudaException(res);
		}
public void CopyToHost ( T [ ] hostDest , SizeT width , SizeT height ) { if ( disposed ) throw new ObjectDisposedException ( this . ToString ( ) ) ; GCHandle handle = GCHandle . Alloc ( hostDest , GCHandleType . Pinned ) ; try { CUDAMemCpy2D copyParams = new CUDAMemCpy2D ( ) ; copyParams . dstHost = handle . AddrOfPinnedObject ( ) ; copyParams . dstMemoryType = CUMemoryType . Host ; copyParams . srcDevice = _devPtr ; copyParams . srcMemoryType = CUMemoryType . Device ; copyParams . srcPitch = _pitch ; copyParams . Height = height ; copyParams . WidthInBytes = width * ( SizeT ) Marshal . SizeOf ( typeof ( T ) ) ; res = DriverAPINativeMethods . SynchronousMemcpy_v2 . cuMemcpy2D_v2 ( ref copyParams ) ; Debug . WriteLine ( String . Format ( " " , DateTime . Now , " " , res ) ) ; } finally { handle . Free ( ) ; } if ( res != CUResult . Success ) throw new CudaException ( res ) ; }
Copy data from this device to host memory
Copy data from this device to host memory
hostDest
T[]
None
width
SizeT
Width in elements
Width in elements
height
SizeT
Height in elements
Height in elements