提交 bec034eb authored 作者: Mathieu Germain's avatar Mathieu Germain

added winograd in get_op_params

上级 49b1fc63
...@@ -386,6 +386,9 @@ class GpuDnnConv(DnnBase, COp): ...@@ -386,6 +386,9 @@ class GpuDnnConv(DnnBase, COp):
elif self.algo == 'fft_tiling': elif self.algo == 'fft_tiling':
# need v4 for conv2d, need v5 for conv3d # need v4 for conv2d, need v5 for conv3d
alg = 'CUDNN_CONVOLUTION_FWD_ALGO_FFT_TILING' alg = 'CUDNN_CONVOLUTION_FWD_ALGO_FFT_TILING'
elif self.algo == 'winograd':
# need v4 for conv2d, need v5 for conv3d
alg = 'CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD'
elif self.algo in ['guess_once', 'guess_on_shape_change']: elif self.algo in ['guess_once', 'guess_on_shape_change']:
# The convolution implementation should be choosen according # The convolution implementation should be choosen according
# to a heuristic # to a heuristic
...@@ -882,6 +885,9 @@ class GpuDnnConvGradI(DnnBase, COp): ...@@ -882,6 +885,9 @@ class GpuDnnConvGradI(DnnBase, COp):
# need v4, big workspace, but less then fft # need v4, big workspace, but less then fft
# need v5, for conv3d. # need v5, for conv3d.
alg = 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_FFT_TILING' alg = 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_FFT_TILING'
elif self.algo == 'winograd':
# need v5
alg = 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD'
elif self.algo in ['guess_once', 'guess_on_shape_change']: elif self.algo in ['guess_once', 'guess_on_shape_change']:
# The convolution implementation should be chosen according # The convolution implementation should be chosen according
# to a heuristic # to a heuristic
......
...@@ -475,6 +475,9 @@ class GpuDnnConv(DnnBase): ...@@ -475,6 +475,9 @@ class GpuDnnConv(DnnBase):
elif self.algo == 'fft_tiling': elif self.algo == 'fft_tiling':
# need v4 # need v4
alg = 'CUDNN_CONVOLUTION_FWD_ALGO_FFT_TILING' alg = 'CUDNN_CONVOLUTION_FWD_ALGO_FFT_TILING'
elif self.algo == 'winograd':
# need v5
alg = 'CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD'
defs.append(('CONV_ALGO', alg)) defs.append(('CONV_ALGO', alg))
if self.algo in ['guess_once', 'guess_on_shape_change', if self.algo in ['guess_once', 'guess_on_shape_change',
...@@ -754,13 +757,16 @@ class GpuDnnConvGradI(DnnBase): ...@@ -754,13 +757,16 @@ class GpuDnnConvGradI(DnnBase):
alg = 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_0' alg = 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_0'
if self.algo == 'none': if self.algo == 'none':
alg = 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_0' alg = 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_0'
if self.algo == 'deterministic': elif self.algo == 'deterministic':
alg = 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_1' alg = 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_1'
if self.algo == 'fft': elif self.algo == 'fft':
alg = 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_FFT' alg = 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_FFT'
if self.algo == 'fft_tiling': elif self.algo == 'fft_tiling':
# big workspace but less than fft # big workspace but less than fft
alg = 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_FFT_TILING' alg = 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_FFT_TILING'
elif self.algo == 'winograd':
# need v5
alg = 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD'
if self.algo in ['guess_once', 'guess_on_shape_change', if self.algo in ['guess_once', 'guess_on_shape_change',
'time_once', 'time_on_shape_change']: 'time_once', 'time_on_shape_change']:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论