public void Cudnn_Descriptors_ConstructPoolingWithSetup(CudnnPoolingDescriptorParameters param)
        {
            using (var pooling = CudnnContext.CreatePooling(param))
            {
                Assert.True(pooling.IsInitialized);

                CudnnPoolingMode mode = default(CudnnPoolingMode);
                int windowHeight = 0, windowWidth = 0;
                int verticalStride = 0, horizontalStride = 0;

                CudnnContext.Invoke(() => CudnnNativeMethods.cudnnGetPoolingDescriptor(pooling.Handle, out mode, out windowHeight, out windowWidth, out verticalStride, out horizontalStride));

                Assert.Equal(pooling.Parameters.Mode, mode);
                Assert.Equal(pooling.Parameters.Height, windowHeight);
                Assert.Equal(pooling.Parameters.Width, windowWidth);
                Assert.Equal(pooling.Parameters.HeightStride, verticalStride);
                Assert.Equal(pooling.Parameters.WidthStride, horizontalStride);
            }
        }
        public void Cudnn_Descriptors_ConstructPoolingWithSetup(CudnnPoolingDescriptorParameters param)
        {
            using (var pooling = CudnnContext.CreatePooling(param))
            {
                Assert.True(pooling.IsInitialized);

                CudnnPoolingMode mode = default(CudnnPoolingMode);
                int windowHeight = 0, windowWidth = 0;
                int verticalStride = 0, horizontalStride = 0;

                CudnnContext.Invoke(() => CudnnNativeMethods.cudnnGetPoolingDescriptor(pooling.Handle, out mode, out windowHeight, out windowWidth, out verticalStride, out horizontalStride));

                Assert.Equal(pooling.Parameters.Mode, mode);
                Assert.Equal(pooling.Parameters.Height, windowHeight);
                Assert.Equal(pooling.Parameters.Width, windowWidth);
                Assert.Equal(pooling.Parameters.HeightStride, verticalStride);
                Assert.Equal(pooling.Parameters.WidthStride, horizontalStride);
            }
        }