public static extern CudnnStatus cudnnConvolutionBackwardBias( CudnnHandle handle, CudnnTensorDescriptorHandle srcDescriptor, [In] CUdeviceptr srcData, CudnnTensorDescriptorHandle destDescriptor, [In, Out] CUdeviceptr destData, CudnnAccumulateResult accumulate);
public static extern CudnnStatus cudnnConvolutionBackwardFilter( CudnnHandle handle, CudnnTensorDescriptorHandle srcDescriptor, [In] CUdeviceptr srcData, CudnnTensorDescriptorHandle diffDescriptor, [In] CUdeviceptr diffData, CudnnConvolutionDescriptorHandle convolutionDescriptor, CudnnFilterDescriptorHandle gradientDescriptor, [In, Out] CUdeviceptr gradientData, CudnnAccumulateResult accumulate);
public static extern CudnnStatus cudnnConvolutionBackwardData( CudnnHandle handle, CudnnFilterDescriptorHandle filterDescriptor, [In] CUdeviceptr filterData, CudnnTensorDescriptorHandle diffDescriptor, [In] CUdeviceptr diffData, CudnnConvolutionDescriptorHandle convolutionDescriptor, CudnnTensorDescriptorHandle gradientDescriptor, [In, Out] CUdeviceptr gradientData, CudnnAccumulateResult accumulate);
public static extern CudnnStatus cudnnConvolutionForward( CudnnHandle handle, CudnnTensorDescriptorHandle srcDescriptor, [In] CUdeviceptr srcData, CudnnFilterDescriptorHandle filterDescriptor, [In] CUdeviceptr filterData, CudnnConvolutionDescriptorHandle convolutionDescriptor, CudnnTensorDescriptorHandle destDescriptor, [In, Out] CUdeviceptr destData, CudnnAccumulateResult accumulate);
public void BackwardBias(CudnnTensorDescriptor srcTensor, CudaDeviceVariable<double> srcData, CudnnTensorDescriptor destTensor, CudaDeviceVariable<double> destData, CudnnAccumulateResult accumulate) { Contract.Requires(srcTensor != null); Contract.Requires(srcData != null); Contract.Requires(destTensor != null); Contract.Requires(destData != null); ThrowIfNotInitialized(); CheckIfCompatible(CudnnType.Double, srcTensor, destTensor); Invoke(() => CudnnNativeMethods.cudnnConvolutionBackwardBias(handle, srcTensor.Handle, srcData.DevicePointer, destTensor.Handle, destData.DevicePointer, accumulate)); }
public void BackwardData(CudnnFilterDescriptor filter, CudaDeviceVariable<float> filterData, CudnnTensorDescriptor diffTensor, CudaDeviceVariable<float> diffData, CudnnConvolutionDescriptor convolution, CudnnTensorDescriptor gradient, CudaDeviceVariable<float> gradientData, CudnnAccumulateResult accumulate) { Contract.Requires(filter != null); Contract.Requires(filterData != null); Contract.Requires(diffTensor != null); Contract.Requires(diffData != null); Contract.Requires(convolution != null); Contract.Requires(gradient != null); Contract.Requires(gradientData != null); ThrowIfNotInitialized(); CheckIfCompatible(CudnnType.Float, filter, diffTensor, gradient); Invoke(() => CudnnNativeMethods.cudnnConvolutionBackwardData(handle, filter.Handle, filterData.DevicePointer, diffTensor.Handle, diffData.DevicePointer, convolution.Handle, gradient.Handle, gradientData.DevicePointer, accumulate)); }
public void BackwardBias(CudnnTensorDescriptor srcTensor, double[] srcData, CudnnTensorDescriptor destTensor, double[] destData, CudnnAccumulateResult accumulate) { Contract.Requires(srcTensor != null); Contract.Requires(srcData != null); Contract.Requires(destTensor != null); Contract.Requires(destData != null); ThrowIfNotInitialized(); CheckIfCompatible(CudnnType.Double, srcTensor, destTensor); using (var srcDataGpu = new CudaDeviceVariable<double>(srcData.Length)) using (var destDataGpu = new CudaDeviceVariable<double>(destData.Length)) { srcDataGpu.CopyToDevice(srcData); Invoke(() => CudnnNativeMethods.cudnnConvolutionBackwardBias(handle, srcTensor.Handle, srcDataGpu.DevicePointer, destTensor.Handle, destDataGpu.DevicePointer, accumulate)); destDataGpu.CopyToHost(destData); } }
public void BackwardData(CudnnFilterDescriptor filter, double[] filterData, CudnnTensorDescriptor diffTensor, double[] diffData, CudnnConvolutionDescriptor convolution, CudnnTensorDescriptor gradient, double[] gradientData, CudnnAccumulateResult accumulate) { Contract.Requires(filter != null); Contract.Requires(filterData != null); Contract.Requires(diffTensor != null); Contract.Requires(diffData != null); Contract.Requires(convolution != null); Contract.Requires(gradient != null); Contract.Requires(gradientData != null); ThrowIfNotInitialized(); CheckIfCompatible(CudnnType.Double, filter, diffTensor, gradient); using (var filterDataGpu = new CudaDeviceVariable <double>(filterData.Length)) using (var diffDataGpu = new CudaDeviceVariable <double>(diffData.Length)) using (var gradientDataGpu = new CudaDeviceVariable <double>(gradientData.Length)) { filterDataGpu.CopyToDevice(filterData); diffDataGpu.CopyToDevice(diffData); Invoke(() => CudnnNativeMethods.cudnnConvolutionBackwardData(handle, filter.Handle, filterDataGpu.DevicePointer, diffTensor.Handle, diffDataGpu.DevicePointer, convolution.Handle, gradient.Handle, gradientDataGpu.DevicePointer, accumulate)); gradientDataGpu.CopyToHost(gradientData); } }
public void BackwardBias(CudnnTensorDescriptor srcTensor, double[] srcData, CudnnTensorDescriptor destTensor, double[] destData, CudnnAccumulateResult accumulate) { Contract.Requires(srcTensor != null); Contract.Requires(srcData != null); Contract.Requires(destTensor != null); Contract.Requires(destData != null); ThrowIfNotInitialized(); CheckIfCompatible(CudnnType.Double, srcTensor, destTensor); using (var srcDataGpu = new CudaDeviceVariable <double>(srcData.Length)) using (var destDataGpu = new CudaDeviceVariable <double>(destData.Length)) { srcDataGpu.CopyToDevice(srcData); Invoke(() => CudnnNativeMethods.cudnnConvolutionBackwardBias(handle, srcTensor.Handle, srcDataGpu.DevicePointer, destTensor.Handle, destDataGpu.DevicePointer, accumulate)); destDataGpu.CopyToHost(destData); } }
public void Forward(CudnnTensorDescriptor srcTensor, float[] srcData, CudnnFilterDescriptor filter, float[] filterData, CudnnConvolutionDescriptor convolution, CudnnTensorDescriptor destTensor, float[] destData, CudnnAccumulateResult accumulate) { Contract.Requires(srcTensor != null); Contract.Requires(srcData != null); Contract.Requires(filter != null); Contract.Requires(filterData != null); Contract.Requires(convolution != null); Contract.Requires(destTensor != null); Contract.Requires(destData != null); ThrowIfNotInitialized(); CheckIfCompatible(CudnnType.Float, srcTensor, destTensor, filter); using (var srcDataGpu = new CudaDeviceVariable <float>(srcData.Length)) using (var filterDataGpu = new CudaDeviceVariable <float>(filterData.Length)) using (var destDataGpu = new CudaDeviceVariable <float>(destData.Length)) { srcDataGpu.CopyToDevice(srcData); filterDataGpu.CopyToDevice(filterData); Invoke(() => CudnnNativeMethods.cudnnConvolutionForward(handle, srcTensor.Handle, srcDataGpu.DevicePointer, filter.Handle, filterDataGpu.DevicePointer, convolution.Handle, destTensor.Handle, destDataGpu.DevicePointer, accumulate)); destDataGpu.CopyToHost(destData); } }
public void Forward(CudnnTensorDescriptor srcTensor, CudaDeviceVariable <float> srcData, CudnnFilterDescriptor filter, CudaDeviceVariable <float> filterData, CudnnConvolutionDescriptor convolution, CudnnTensorDescriptor destTensor, CudaDeviceVariable <float> destData, CudnnAccumulateResult accumulate) { Contract.Requires(srcTensor != null); Contract.Requires(srcData != null); Contract.Requires(filter != null); Contract.Requires(filterData != null); Contract.Requires(convolution != null); Contract.Requires(destTensor != null); Contract.Requires(destData != null); ThrowIfNotInitialized(); CheckIfCompatible(CudnnType.Float, srcTensor, destTensor, filter); Invoke(() => CudnnNativeMethods.cudnnConvolutionForward(handle, srcTensor.Handle, srcData.DevicePointer, filter.Handle, filterData.DevicePointer, convolution.Handle, destTensor.Handle, destData.DevicePointer, accumulate)); }
public void Forward(CudnnTensorDescriptor srcTensor, CudaDeviceVariable<float> srcData, CudnnFilterDescriptor filter, CudaDeviceVariable<float> filterData, CudnnConvolutionDescriptor convolution, CudnnTensorDescriptor destTensor, CudaDeviceVariable<float> destData, CudnnAccumulateResult accumulate) { Contract.Requires(srcTensor != null); Contract.Requires(srcData != null); Contract.Requires(filter != null); Contract.Requires(filterData != null); Contract.Requires(convolution != null); Contract.Requires(destTensor != null); Contract.Requires(destData != null); ThrowIfNotInitialized(); CheckIfCompatible(CudnnType.Float, srcTensor, destTensor, filter); Invoke(() => CudnnNativeMethods.cudnnConvolutionForward(handle, srcTensor.Handle, srcData.DevicePointer, filter.Handle, filterData.DevicePointer, convolution.Handle, destTensor.Handle, destData.DevicePointer, accumulate)); }
public void Forward(CudnnTensorDescriptor srcTensor, float[] srcData, CudnnFilterDescriptor filter, float[] filterData, CudnnConvolutionDescriptor convolution, CudnnTensorDescriptor destTensor, float[] destData, CudnnAccumulateResult accumulate) { Contract.Requires(srcTensor != null); Contract.Requires(srcData != null); Contract.Requires(filter != null); Contract.Requires(filterData != null); Contract.Requires(convolution != null); Contract.Requires(destTensor != null); Contract.Requires(destData != null); ThrowIfNotInitialized(); CheckIfCompatible(CudnnType.Float, srcTensor, destTensor, filter); using (var srcDataGpu = new CudaDeviceVariable<float>(srcData.Length)) using (var filterDataGpu = new CudaDeviceVariable<float>(filterData.Length)) using (var destDataGpu = new CudaDeviceVariable<float>(destData.Length)) { srcDataGpu.CopyToDevice(srcData); filterDataGpu.CopyToDevice(filterData); Invoke(() => CudnnNativeMethods.cudnnConvolutionForward(handle, srcTensor.Handle, srcDataGpu.DevicePointer, filter.Handle, filterDataGpu.DevicePointer, convolution.Handle, destTensor.Handle, destDataGpu.DevicePointer, accumulate)); destDataGpu.CopyToHost(destData); } }
public void BackwardBias(CudnnTensorDescriptor srcTensor, CudaDeviceVariable <double> srcData, CudnnTensorDescriptor destTensor, CudaDeviceVariable <double> destData, CudnnAccumulateResult accumulate) { Contract.Requires(srcTensor != null); Contract.Requires(srcData != null); Contract.Requires(destTensor != null); Contract.Requires(destData != null); ThrowIfNotInitialized(); CheckIfCompatible(CudnnType.Double, srcTensor, destTensor); Invoke(() => CudnnNativeMethods.cudnnConvolutionBackwardBias(handle, srcTensor.Handle, srcData.DevicePointer, destTensor.Handle, destData.DevicePointer, accumulate)); }
public void BackwardFilter(CudnnTensorDescriptor srcTensor, CudaDeviceVariable <double> srcData, CudnnTensorDescriptor diffTensor, CudaDeviceVariable <double> diffData, CudnnConvolutionDescriptor convolution, CudnnFilterDescriptor gradient, CudaDeviceVariable <double> gradientData, CudnnAccumulateResult accumulate) { Contract.Requires(srcTensor != null); Contract.Requires(srcData != null); Contract.Requires(diffTensor != null); Contract.Requires(diffData != null); Contract.Requires(convolution != null); Contract.Requires(gradient != null); Contract.Requires(gradientData != null); ThrowIfNotInitialized(); CheckIfCompatible(CudnnType.Double, srcTensor, diffTensor, gradient); Invoke(() => CudnnNativeMethods.cudnnConvolutionBackwardFilter(handle, srcTensor.Handle, srcData.DevicePointer, diffTensor.Handle, diffData.DevicePointer, convolution.Handle, gradient.Handle, gradientData.DevicePointer, accumulate)); }
public void BackwardFilter(CudnnTensorDescriptor srcTensor, double[] srcData, CudnnTensorDescriptor diffTensor, double[] diffData, CudnnConvolutionDescriptor convolution, CudnnFilterDescriptor gradient, double[] gradientData, CudnnAccumulateResult accumulate) { Contract.Requires(srcTensor != null); Contract.Requires(srcData != null); Contract.Requires(diffTensor != null); Contract.Requires(diffData != null); Contract.Requires(convolution != null); Contract.Requires(gradient != null); Contract.Requires(gradientData != null); ThrowIfNotInitialized(); CheckIfCompatible(CudnnType.Double, srcTensor, diffTensor, gradient); using (var srcDataGpu = new CudaDeviceVariable<double>(srcData.Length)) using (var diffDataGpu = new CudaDeviceVariable<double>(diffData.Length)) using (var gradientDataGpu = new CudaDeviceVariable<double>(gradientData.Length)) { srcDataGpu.CopyToDevice(srcData); diffDataGpu.CopyToDevice(diffData); Invoke(() => CudnnNativeMethods.cudnnConvolutionBackwardFilter(handle, srcTensor.Handle, srcDataGpu.DevicePointer, diffTensor.Handle, diffDataGpu.DevicePointer, convolution.Handle, gradient.Handle, gradientDataGpu.DevicePointer, accumulate)); gradientDataGpu.CopyToHost(gradientData); } }