public void Cudnn_Descriptors_ConstructTensorWithMajorRow() { var param = new CudnnTensorDescriptorParameters(CudnnType.Float, CudnnTensorFormat.MajorRow, 10, 5, 2, 4); using (var tensor = CudnnContext.CreateTensor(param)) using (var tensor2 = CudnnContext.CreateTensor()) { Assert.True(tensor.IsInitialized); Assert.False(tensor2.IsInitialized); CudnnContext.Invoke(() => CudnnNativeMethods.cudnnSetTensor4dDescriptor(tensor2.Handle, CudnnTensorFormat.MajorRow, CudnnType.Float, 10, 5, 2, 4)); CudnnType dataType = default(CudnnType); int n1 = 0, c1 = 0, h1 = 0, w1 = 0; int nStride1 = 0, cStride1 = 0, hStride1 = 0, wStride1 = 0; CudnnContext.Invoke(() => CudnnNativeMethods.cudnnGetTensor4dDescriptor(tensor.Handle, out dataType, out n1, out c1, out h1, out w1, out nStride1, out cStride1, out hStride1, out wStride1)); int n2 = 0, c2 = 0, h2 = 0, w2 = 0; int nStride2 = 0, cStride2 = 0, hStride2 = 0, wStride2 = 0; CudnnContext.Invoke(() => CudnnNativeMethods.cudnnGetTensor4dDescriptor(tensor2.Handle, out dataType, out n2, out c2, out h2, out w2, out nStride2, out cStride2, out hStride2, out wStride2)); Assert.Equal(n2, n1); Assert.Equal(c2, c1); Assert.Equal(h2, h1); Assert.Equal(w2, w1); Assert.Equal(nStride2, nStride1); Assert.Equal(cStride2, cStride1); Assert.Equal(hStride2, hStride1); Assert.Equal(wStride2, wStride1); } }
public void Cudnn_Descriptors_ConstructTensorWithSetup(CudnnTensorDescriptorParameters param) { using (var tensor = CudnnContext.CreateTensor(param)) { Assert.True(tensor.IsInitialized); CudnnType dataType = default(CudnnType); int n = 0, c = 0, h = 0, w = 0; int nStride = 0, cStride = 0, hStride = 0, wStride = 0; CudnnContext.Invoke(() => CudnnNativeMethods.cudnnGetTensor4dDescriptor(tensor.Handle, out dataType, out n, out c, out h, out w, out nStride, out cStride, out hStride, out wStride)); Assert.Equal(tensor.Parameters.Num, n); Assert.Equal(tensor.Parameters.Channels, c); Assert.Equal(tensor.Parameters.Height, h); Assert.Equal(tensor.Parameters.Width, w); Assert.Equal(tensor.Parameters.NumStride, nStride); Assert.Equal(tensor.Parameters.ChannelsStride, cStride); Assert.Equal(tensor.Parameters.HeightStride, hStride); Assert.Equal(tensor.Parameters.WidthStride, wStride); } }
public void Cudnn_Descriptors_ConstructTensorWithSetup(CudnnTensorDescriptorParameters param) { using (var tensor = CudnnContext.CreateTensor(param)) { Assert.True(tensor.IsInitialized); CudnnType dataType = default(CudnnType); int n = 0, c = 0, h = 0, w = 0; int nStride = 0, cStride = 0, hStride = 0, wStride = 0; CudnnContext.Invoke(() => CudnnNativeMethods.cudnnGetTensor4dDescriptor(tensor.Handle, out dataType, out n, out c, out h, out w, out nStride, out cStride, out hStride, out wStride)); Assert.Equal(tensor.Parameters.Num, n); Assert.Equal(tensor.Parameters.Channels, c); Assert.Equal(tensor.Parameters.Height, h); Assert.Equal(tensor.Parameters.Width, w); Assert.Equal(tensor.Parameters.NumStride, nStride); Assert.Equal(tensor.Parameters.ChannelsStride, cStride); Assert.Equal(tensor.Parameters.HeightStride, hStride); Assert.Equal(tensor.Parameters.WidthStride, wStride); } }
public void Cudnn_Descriptors_ConstructTensorWithMajorRow() { var param = new CudnnTensorDescriptorParameters(CudnnType.Float, CudnnTensorFormat.MajorRow, 10, 5, 2, 4); using (var tensor = CudnnContext.CreateTensor(param)) using (var tensor2 = CudnnContext.CreateTensor()) { Assert.True(tensor.IsInitialized); Assert.False(tensor2.IsInitialized); CudnnContext.Invoke(() => CudnnNativeMethods.cudnnSetTensor4dDescriptor(tensor2.Handle, CudnnTensorFormat.MajorRow, CudnnType.Float, 10, 5, 2, 4)); CudnnType dataType = default(CudnnType); int n1 = 0, c1 = 0, h1 = 0, w1 = 0; int nStride1 = 0, cStride1 = 0, hStride1 = 0, wStride1 = 0; CudnnContext.Invoke(() => CudnnNativeMethods.cudnnGetTensor4dDescriptor(tensor.Handle, out dataType, out n1, out c1, out h1, out w1, out nStride1, out cStride1, out hStride1, out wStride1)); int n2 = 0, c2 = 0, h2 = 0, w2 = 0; int nStride2 = 0, cStride2 = 0, hStride2 = 0, wStride2 = 0; CudnnContext.Invoke(() => CudnnNativeMethods.cudnnGetTensor4dDescriptor(tensor2.Handle, out dataType, out n2, out c2, out h2, out w2, out nStride2, out cStride2, out hStride2, out wStride2)); Assert.Equal(n2, n1); Assert.Equal(c2, c1); Assert.Equal(h2, h1); Assert.Equal(w2, w1); Assert.Equal(nStride2, nStride1); Assert.Equal(cStride2, cStride1); Assert.Equal(hStride2, hStride1); Assert.Equal(wStride2, wStride1); } }