/// <summary> /// Resolves the memory type of the given device pointer. /// </summary> /// <param name="value">The device pointer to check.</param> /// <returns>The resolved memory type</returns> public static unsafe CudaMemoryType GetCudaMemoryType(IntPtr value) { int data = 0; var err = CurrentAPI.GetPointerAttribute( new IntPtr(Unsafe.AsPointer(ref data)), PointerAttribute.CU_POINTER_ATTRIBUTE_MEMORY_TYPE, value); if (err == CudaError.CUDA_ERROR_INVALID_VALUE) { return(CudaMemoryType.None); } CudaException.ThrowIfFailed(err); return((CudaMemoryType)data); }
/// <summary> /// Resolves the memory type of the given device pointer. /// </summary> /// <param name="value">The device pointer to check.</param> /// <returns>The resolved memory type</returns> public static unsafe CudaMemoryType GetCudaMemoryType(IntPtr value) { // This functionality requires unified addresses (X64) Backends.Backend.EnsureRunningOnPlatform(TargetPlatform.X64); int data = 0; var err = CurrentAPI.GetPointerAttribute( new IntPtr(Unsafe.AsPointer(ref data)), PointerAttribute.CU_POINTER_ATTRIBUTE_MEMORY_TYPE, value); if (err == CudaError.CUDA_ERROR_INVALID_VALUE) { return(CudaMemoryType.None); } CudaException.ThrowIfFailed(err); return((CudaMemoryType)data); }