From 76fa71573b5815330cd80dcf1cd96860929751ea Mon Sep 17 00:00:00 2001 From: Megvii Engine Team Date: Mon, 24 Aug 2020 10:54:36 +0800 Subject: [PATCH] feat(dnn/cuda): add cutlass nchw4 convolution GitOrigin-RevId: 93c9b212f4543e50ec56b5623e1b77bf7209a45b --- dnn/scripts/Makefile | 5 +- dnn/src/cuda/conv_bias/algo.cpp | 19 ++- dnn/src/cuda/conv_bias/algo.h | 32 ++++- .../conv_bias/cutlass_convolution_wrapper.cu | 127 +++++++++++++++++- .../conv_bias/cutlass_convolution_wrapper.cuh | 9 ++ .../implicit_gemm_int8_nchw32_imma.cpp | 32 ++--- .../implicit_gemm_int8_nchw4_dp4a.cpp | 109 ++++++--------- ..._int8_implicit_gemm_cutlass_wrapper.cuinl} | 2 +- ...4a_ncdiv4hw4_128x128x32_64x32x32_hswish.cu | Bin 0 -> 1687 bytes ...m_dp4a_ncdiv4hw4_128x128x32_64x32x32_id.cu | Bin 0 -> 1681 bytes ...dp4a_ncdiv4hw4_128x128x32_64x32x32_relu.cu | Bin 0 -> 1685 bytes ...p4a_ncdiv4hw4_128x32x32_64x32x32_hswish.cu | Bin 0 -> 1686 bytes ...mm_dp4a_ncdiv4hw4_128x32x32_64x32x32_id.cu | Bin 0 -> 1680 bytes ..._dp4a_ncdiv4hw4_128x32x32_64x32x32_relu.cu | Bin 0 -> 1684 bytes ...p4a_ncdiv4hw4_128x64x32_64x32x32_hswish.cu | Bin 0 -> 1686 bytes ...mm_dp4a_ncdiv4hw4_128x64x32_64x32x32_id.cu | Bin 0 -> 1680 bytes ..._dp4a_ncdiv4hw4_128x64x32_64x32x32_relu.cu | Bin 0 -> 1684 bytes ...m_dp4a_ncdiv4hw4_16x64x8_16x64x8_hswish.cu | Bin 0 -> 1682 bytes ..._gemm_dp4a_ncdiv4hw4_16x64x8_16x64x8_id.cu | Bin 0 -> 1676 bytes ...emm_dp4a_ncdiv4hw4_16x64x8_16x64x8_relu.cu | Bin 0 -> 1680 bytes ...cdiv4hw4_1x1_128x128x32_64x32x32_hswish.cu | Bin 0 -> 1688 bytes ...4a_ncdiv4hw4_1x1_128x128x32_64x32x32_id.cu | Bin 0 -> 1682 bytes ..._ncdiv4hw4_1x1_128x128x32_64x32x32_relu.cu | Bin 0 -> 1686 bytes ...ncdiv4hw4_1x1_128x32x32_64x32x32_hswish.cu | Bin 0 -> 1687 bytes ...p4a_ncdiv4hw4_1x1_128x32x32_64x32x32_id.cu | Bin 0 -> 1681 bytes ...a_ncdiv4hw4_1x1_128x32x32_64x32x32_relu.cu | Bin 0 -> 1685 bytes ...ncdiv4hw4_1x1_128x64x32_64x32x32_hswish.cu | Bin 0 -> 1687 bytes ...p4a_ncdiv4hw4_1x1_128x64x32_64x32x32_id.cu | Bin 0 -> 1681 bytes ...a_ncdiv4hw4_1x1_128x64x32_64x32x32_relu.cu | Bin 0 -> 1685 bytes ...4a_ncdiv4hw4_1x1_16x64x8_16x64x8_hswish.cu | Bin 0 -> 1683 bytes ...m_dp4a_ncdiv4hw4_1x1_16x64x8_16x64x8_id.cu | Bin 0 -> 1677 bytes ...dp4a_ncdiv4hw4_1x1_16x64x8_16x64x8_relu.cu | Bin 0 -> 1681 bytes ...ncdiv4hw4_1x1_32x128x32_32x64x32_hswish.cu | Bin 0 -> 1687 bytes ...p4a_ncdiv4hw4_1x1_32x128x32_32x64x32_id.cu | Bin 0 -> 1681 bytes ...a_ncdiv4hw4_1x1_32x128x32_32x64x32_relu.cu | Bin 0 -> 1685 bytes ..._ncdiv4hw4_1x1_32x32x32_32x32x32_hswish.cu | Bin 0 -> 1686 bytes ...dp4a_ncdiv4hw4_1x1_32x32x32_32x32x32_id.cu | Bin 0 -> 1680 bytes ...4a_ncdiv4hw4_1x1_32x32x32_32x32x32_relu.cu | Bin 0 -> 1684 bytes ..._ncdiv4hw4_1x1_32x64x32_32x64x32_hswish.cu | Bin 0 -> 1686 bytes ...dp4a_ncdiv4hw4_1x1_32x64x32_32x64x32_id.cu | Bin 0 -> 1680 bytes ...4a_ncdiv4hw4_1x1_32x64x32_32x64x32_relu.cu | Bin 0 -> 1684 bytes ...ncdiv4hw4_1x1_64x128x32_64x32x32_hswish.cu | Bin 0 -> 1687 bytes ...p4a_ncdiv4hw4_1x1_64x128x32_64x32x32_id.cu | Bin 0 -> 1681 bytes ...a_ncdiv4hw4_1x1_64x128x32_64x32x32_relu.cu | Bin 0 -> 1685 bytes ..._ncdiv4hw4_1x1_64x32x32_64x32x32_hswish.cu | Bin 0 -> 1686 bytes ...dp4a_ncdiv4hw4_1x1_64x32x32_64x32x32_id.cu | Bin 0 -> 1680 bytes ...4a_ncdiv4hw4_1x1_64x32x32_64x32x32_relu.cu | Bin 0 -> 1684 bytes ..._ncdiv4hw4_1x1_64x64x32_64x32x32_hswish.cu | Bin 0 -> 1686 bytes ...dp4a_ncdiv4hw4_1x1_64x64x32_64x32x32_id.cu | Bin 0 -> 1680 bytes ...4a_ncdiv4hw4_1x1_64x64x32_64x32x32_relu.cu | Bin 0 -> 1684 bytes ...p4a_ncdiv4hw4_32x128x32_32x64x32_hswish.cu | Bin 0 -> 1686 bytes ...mm_dp4a_ncdiv4hw4_32x128x32_32x64x32_id.cu | Bin 0 -> 1680 bytes ..._dp4a_ncdiv4hw4_32x128x32_32x64x32_relu.cu | Bin 0 -> 1684 bytes ...dp4a_ncdiv4hw4_32x32x32_32x32x32_hswish.cu | Bin 0 -> 1685 bytes ...emm_dp4a_ncdiv4hw4_32x32x32_32x32x32_id.cu | Bin 0 -> 1679 bytes ...m_dp4a_ncdiv4hw4_32x32x32_32x32x32_relu.cu | Bin 0 -> 1683 bytes ...dp4a_ncdiv4hw4_32x64x32_32x64x32_hswish.cu | Bin 0 -> 1685 bytes ...emm_dp4a_ncdiv4hw4_32x64x32_32x64x32_id.cu | Bin 0 -> 1679 bytes ...m_dp4a_ncdiv4hw4_32x64x32_32x64x32_relu.cu | Bin 0 -> 1683 bytes ...p4a_ncdiv4hw4_64x128x32_64x32x32_hswish.cu | Bin 0 -> 1686 bytes ...mm_dp4a_ncdiv4hw4_64x128x32_64x32x32_id.cu | Bin 0 -> 1680 bytes ..._dp4a_ncdiv4hw4_64x128x32_64x32x32_relu.cu | Bin 0 -> 1684 bytes ...dp4a_ncdiv4hw4_64x32x32_64x32x32_hswish.cu | Bin 0 -> 1685 bytes ...emm_dp4a_ncdiv4hw4_64x32x32_64x32x32_id.cu | Bin 0 -> 1679 bytes ...m_dp4a_ncdiv4hw4_64x32x32_64x32x32_relu.cu | Bin 0 -> 1683 bytes ...dp4a_ncdiv4hw4_64x64x32_64x32x32_hswish.cu | Bin 0 -> 1685 bytes ...emm_dp4a_ncdiv4hw4_64x64x32_64x32x32_id.cu | Bin 0 -> 1679 bytes ...m_dp4a_ncdiv4hw4_64x64x32_64x32x32_relu.cu | Bin 0 -> 1683 bytes ..._ncdiv32hw32_128x128x64_64x64x64_hswish.cu | Bin 1675 -> 1695 bytes ...imma_ncdiv32hw32_128x128x64_64x64x64_id.cu | Bin 1669 -> 1689 bytes ...ma_ncdiv32hw32_128x128x64_64x64x64_relu.cu | Bin 1673 -> 1693 bytes ..._ncdiv32hw32_128x256x64_64x64x64_hswish.cu | Bin 1675 -> 1695 bytes ...imma_ncdiv32hw32_128x256x64_64x64x64_id.cu | Bin 1669 -> 1689 bytes ...ma_ncdiv32hw32_128x256x64_64x64x64_relu.cu | Bin 1673 -> 1693 bytes ...a_ncdiv32hw32_128x64x64_64x32x64_hswish.cu | Bin 1674 -> 1694 bytes ..._imma_ncdiv32hw32_128x64x64_64x32x64_id.cu | Bin 1668 -> 1688 bytes ...mma_ncdiv32hw32_128x64x64_64x32x64_relu.cu | Bin 1672 -> 1692 bytes ...iv32hw32_1x1_128x128x64_64x64x64_hswish.cu | Bin 1676 -> 1696 bytes ..._ncdiv32hw32_1x1_128x128x64_64x64x64_id.cu | Bin 1670 -> 1690 bytes ...cdiv32hw32_1x1_128x128x64_64x64x64_relu.cu | Bin 1674 -> 1694 bytes ...iv32hw32_1x1_128x256x64_64x64x64_hswish.cu | Bin 1676 -> 1696 bytes ..._ncdiv32hw32_1x1_128x256x64_64x64x64_id.cu | Bin 1670 -> 1690 bytes ...cdiv32hw32_1x1_128x256x64_64x64x64_relu.cu | Bin 1674 -> 1694 bytes ...div32hw32_1x1_128x64x64_64x32x64_hswish.cu | Bin 1675 -> 1695 bytes ...a_ncdiv32hw32_1x1_128x64x64_64x32x64_id.cu | Bin 1669 -> 1689 bytes ...ncdiv32hw32_1x1_128x64x64_64x32x64_relu.cu | Bin 1673 -> 1693 bytes ...iv32hw32_1x1_256x128x64_64x64x64_hswish.cu | Bin 1676 -> 1696 bytes ..._ncdiv32hw32_1x1_256x128x64_64x64x64_id.cu | Bin 1670 -> 1690 bytes ...cdiv32hw32_1x1_256x128x64_64x64x64_relu.cu | Bin 1674 -> 1694 bytes ...cdiv32hw32_1x1_32x64x64_32x16x64_hswish.cu | Bin 1674 -> 1694 bytes ...ma_ncdiv32hw32_1x1_32x64x64_32x16x64_id.cu | Bin 1668 -> 1688 bytes ..._ncdiv32hw32_1x1_32x64x64_32x16x64_relu.cu | Bin 1672 -> 1692 bytes ...div32hw32_1x1_64x128x64_32x64x64_hswish.cu | Bin 1675 -> 1695 bytes ...a_ncdiv32hw32_1x1_64x128x64_32x64x64_id.cu | Bin 1669 -> 1689 bytes ...ncdiv32hw32_1x1_64x128x64_32x64x64_relu.cu | Bin 1673 -> 1693 bytes ...cdiv32hw32_1x1_64x64x64_32x32x64_hswish.cu | Bin 1674 -> 1694 bytes ...ma_ncdiv32hw32_1x1_64x64x64_32x32x64_id.cu | Bin 1668 -> 1688 bytes ..._ncdiv32hw32_1x1_64x64x64_32x32x64_relu.cu | Bin 1672 -> 1692 bytes ..._ncdiv32hw32_256x128x64_64x64x64_hswish.cu | Bin 1675 -> 1695 bytes ...imma_ncdiv32hw32_256x128x64_64x64x64_id.cu | Bin 1669 -> 1689 bytes ...ma_ncdiv32hw32_256x128x64_64x64x64_relu.cu | Bin 1673 -> 1693 bytes ...ma_ncdiv32hw32_32x64x64_32x16x64_hswish.cu | Bin 1673 -> 1693 bytes ...m_imma_ncdiv32hw32_32x64x64_32x16x64_id.cu | Bin 1667 -> 1687 bytes ...imma_ncdiv32hw32_32x64x64_32x16x64_relu.cu | Bin 1671 -> 1691 bytes ...a_ncdiv32hw32_64x128x64_32x64x64_hswish.cu | Bin 1674 -> 1694 bytes ..._imma_ncdiv32hw32_64x128x64_32x64x64_id.cu | Bin 1668 -> 1688 bytes ...mma_ncdiv32hw32_64x128x64_32x64x64_relu.cu | Bin 1672 -> 1692 bytes ...ma_ncdiv32hw32_64x64x64_32x32x64_hswish.cu | Bin 1673 -> 1693 bytes ...m_imma_ncdiv32hw32_64x64x64_32x32x64_id.cu | Bin 1667 -> 1687 bytes ...imma_ncdiv32hw32_64x64x64_32x32x64_relu.cu | Bin 1671 -> 1691 bytes dnn/test/common/conv_bias.cpp | 2 +- dnn/test/cuda/conv_bias_int8.cpp | 13 +- src/opr/test/dnn/convolution.cpp | 92 +++++++++++++ 113 files changed, 333 insertions(+), 109 deletions(-) rename dnn/src/cuda/conv_bias/{int8_imma/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32.cuinl => int8/conv_bias_int8_implicit_gemm_cutlass_wrapper.cuinl} (96%) create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x128x32_64x32x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x128x32_64x32x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x128x32_64x32x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x32x32_64x32x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x32x32_64x32x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x32x32_64x32x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x64x32_64x32x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x64x32_64x32x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x64x32_64x32x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_16x64x8_16x64x8_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_16x64x8_16x64x8_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_16x64x8_16x64x8_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x128x32_64x32x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x128x32_64x32x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x128x32_64x32x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x32x32_64x32x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x32x32_64x32x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x32x32_64x32x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x64x32_64x32x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x64x32_64x32x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x64x32_64x32x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_16x64x8_16x64x8_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_16x64x8_16x64x8_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_16x64x8_16x64x8_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x128x32_32x64x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x128x32_32x64x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x128x32_32x64x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x32x32_32x32x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x32x32_32x32x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x32x32_32x32x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x64x32_32x64x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x64x32_32x64x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x64x32_32x64x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x128x32_64x32x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x128x32_64x32x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x128x32_64x32x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x32x32_64x32x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x32x32_64x32x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x32x32_64x32x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x64x32_64x32x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x64x32_64x32x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x64x32_64x32x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x128x32_32x64x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x128x32_32x64x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x128x32_32x64x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x32x32_32x32x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x32x32_32x32x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x32x32_32x32x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x64x32_32x64x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x64x32_32x64x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x64x32_32x64x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x128x32_64x32x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x128x32_64x32x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x128x32_64x32x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x32x32_64x32x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x32x32_64x32x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x32x32_64x32x32_relu.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x64x32_64x32x32_hswish.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x64x32_64x32x32_id.cu create mode 100644 dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x64x32_64x32x32_relu.cu diff --git a/dnn/scripts/Makefile b/dnn/scripts/Makefile index 91458b20..98ed7b4e 100644 --- a/dnn/scripts/Makefile +++ b/dnn/scripts/Makefile @@ -36,8 +36,9 @@ all: ${PARAM_DEFS} ${ELEMWISE_IMPL} ${CUDA_CONV_IMPL} ../src/cuda/elemwise_multi_type/kimpl: gen_elemwise_multi_type_kern_impls.py ./$^ --type cuda $@ -../src/cuda/conv_bias/int8/kimpl: gen_cuda_conv_bias_kern_impls.py - ./$^ --type dp4a $@ +../src/cuda/conv_bias/int8/kimpl: gen_cuda_conv_bias_kern_impls.py gen_cutlass_conv_bias_kern_impls.py + ./gen_cuda_conv_bias_kern_impls.py --type dp4a $@ + ./gen_cutlass_conv_bias_kern_impls.py --type dp4a $@ ../src/cuda/conv_bias/int8_imma/kimpl: gen_cuda_conv_bias_kern_impls.py gen_cutlass_conv_bias_kern_impls.py ./gen_cuda_conv_bias_kern_impls.py --type imma $@ diff --git a/dnn/src/cuda/conv_bias/algo.cpp b/dnn/src/cuda/conv_bias/algo.cpp index 6d3b1b4e..df80af20 100644 --- a/dnn/src/cuda/conv_bias/algo.cpp +++ b/dnn/src/cuda/conv_bias/algo.cpp @@ -91,7 +91,10 @@ ConvBiasForwardImpl::AlgoPack::AlgoPack() { } #endif #endif - all_algos.push_back(&int8_nchw4_dotprod); + fill_dp4a_algos(); + for (auto&& algo : int8_nchw4_dotprod) { + all_algos.push_back(&algo); + } all_algos.push_back(&int8_chwn4_dotprod); for (size_t i = all_algo_size; i < all_algos.size(); ++i) { non_cudnn_algos.push_back(all_algos[i]); @@ -253,6 +256,20 @@ void ConvBiasForwardImpl::AlgoPack::fill_imma_algos() { } #endif +void ConvBiasForwardImpl::AlgoPack::fill_dp4a_algos() { + using AlgoParam = AlgoInt8NCHW4DotProdImplicitGemm::AlgoParam; + int8_nchw4_dotprod.emplace_back(AlgoParam{128, 128, 32, 64, 32, 32}); + int8_nchw4_dotprod.emplace_back(AlgoParam{128, 64, 32, 64, 32, 32}); + int8_nchw4_dotprod.emplace_back(AlgoParam{64, 128, 32, 64, 32, 32}); + int8_nchw4_dotprod.emplace_back(AlgoParam{32, 128, 32, 32, 64, 32}); + int8_nchw4_dotprod.emplace_back(AlgoParam{128, 32, 32, 64, 32, 32}); + int8_nchw4_dotprod.emplace_back(AlgoParam{64, 64, 32, 64, 32, 32}); + int8_nchw4_dotprod.emplace_back(AlgoParam{32, 64, 32, 32, 64, 32}); + int8_nchw4_dotprod.emplace_back(AlgoParam{64, 32, 32, 64, 32, 32}); + int8_nchw4_dotprod.emplace_back(AlgoParam{32, 32, 32, 32, 32, 32}); + int8_nchw4_dotprod.emplace_back(AlgoParam{16, 64, 8, 16, 64, 8}); +} + ConvBiasForwardImpl::AlgoBase* ConvBiasForwardImpl::AlgoPack::cudnn_conv_from_enum( diff --git a/dnn/src/cuda/conv_bias/algo.h b/dnn/src/cuda/conv_bias/algo.h index 08da5449..2c673ff0 100644 --- a/dnn/src/cuda/conv_bias/algo.h +++ b/dnn/src/cuda/conv_bias/algo.h @@ -386,18 +386,39 @@ public: class ConvBiasForwardImpl::AlgoInt8NCHW4DotProdImplicitGemm final : public AlgoBase { public: - AlgoInt8NCHW4DotProdImplicitGemm() = default; + struct AlgoParam { + int threadblock_m; + int threadblock_n; + int threadblock_k; + int warp_m; + int warp_n; + int warp_k; + std::string to_string() { + /// default algorithm + if (threadblock_m == 128 && threadblock_n == 128 && + threadblock_k == 32 && warp_m == 32 && warp_n == 64 && + warp_k == 32) { + return ""; + } + return ssprintf("_%dX%dX%d_%dX%dX%d", threadblock_m, threadblock_n, + threadblock_k, warp_m, warp_n, warp_k); + } + }; + AlgoInt8NCHW4DotProdImplicitGemm(AlgoParam algo_param) + : m_algo_param{algo_param}, + m_name{ssprintf("INT8_NCHW4_DOTPROD_IMPLICIT_GEMM%s", + m_algo_param.to_string().c_str())} {} bool is_available(const SizeArgs& args) const override; size_t get_workspace_in_bytes(const SizeArgs& args) const override; void exec(const ExecArgs& args) const override; - const char* name() const override { - return "INT8_NCHW4_DOTPROD_IMPLICIT_GEMM"; - } + const char* name() const override { return m_name.c_str(); } bool is_reproducible() const override { return true; } private: WorkspaceBundle get_workspace_bundle(dt_byte* raw_ptr, const SizeArgs& args) const; + AlgoParam m_algo_param; + std::string m_name; }; #if CUDA_VERSION >= 10000 @@ -578,7 +599,7 @@ public: AlgoMatmul8x8x32 matmul8x8x32; AlgoBatchedMatmul batched_matmul; Algo1x1 a1x1; - AlgoInt8NCHW4DotProdImplicitGemm int8_nchw4_dotprod; + std::vector int8_nchw4_dotprod; AlgoInt8CHWN4DotProdImplicitGemm int8_chwn4_dotprod; #if CUDA_VERSION >= 10000 AlgoQUInt4x4x32WMMA wmma_quint4x4x32; @@ -605,6 +626,7 @@ private: void fill_imma_algos(); #endif void fill_cudnn_algos(); + void fill_dp4a_algos(); }; } // namespace cuda diff --git a/dnn/src/cuda/conv_bias/cutlass_convolution_wrapper.cu b/dnn/src/cuda/conv_bias/cutlass_convolution_wrapper.cu index 02a293ae..832e1228 100644 --- a/dnn/src/cuda/conv_bias/cutlass_convolution_wrapper.cu +++ b/dnn/src/cuda/conv_bias/cutlass_convolution_wrapper.cu @@ -19,7 +19,6 @@ #endif #include "src/common/opr_param_defs_enumv.cuh" #include "src/cuda/conv_bias/cutlass_convolution_wrapper.cuh" - #pragma GCC diagnostic pop using namespace megdnn; @@ -149,4 +148,130 @@ INST(true); INST(false); #undef INST +#if MEGDNN_TEGRA_X1 +template +void megdnn::cuda::cutlass_wrapper:: + do_conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4( + const int8_t* /* d_src */, const int8_t* /* d_filter */, + const int32_t* /* d_bias */, const int8_t* /* d_z */, + int8_t* /* d_dst */, int* /* workspace */, + const convolution::ConvParam& /* param */, + uint32_t /* nonlinear_mode */, float /* alpha */, + float /* beta */, float /* gamma */, float /* scale */, + const GemmCoord& /* threadblock_shape */, + const GemmCoord& /* warp_shape */, cudaStream_t /* stream */) {} +#else +template +void megdnn::cuda::cutlass_wrapper:: + do_conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4( + const int8_t* d_src, const int8_t* d_filter, + const int32_t* d_bias, const int8_t* d_z, int8_t* d_dst, + int* workspace, const convolution::ConvParam& param, + uint32_t nonlinear_mode, float alpha, float beta, float gamma, + float scale, const GemmCoord& threadblock_shape, + const GemmCoord& warp_shape, cudaStream_t stream) { +#define DISPATCH_KERNEL_WITH_TILE_SHAPE(threadblock_m_, threadblock_n_, \ + threadblock_k_, warp_m_, warp_n_, \ + warp_k_, aligned_) \ + if (threadblock_shape.m() == threadblock_m_ && \ + threadblock_shape.n() == threadblock_n_ && \ + threadblock_shape.k() == threadblock_k_ && \ + warp_shape.m() == warp_m_ && warp_shape.n() == warp_n_ && \ + warp_shape.k() == warp_k_) { \ + using ThreadBlockShape = \ + cutlass::gemm::GemmShape; \ + using WarpShape = cutlass::gemm::GemmShape; \ + using InstructionShape = cutlass::gemm::GemmShape<1, 1, 4>; \ + using Convolution = cutlass::convolution::device::Convolution< \ + int8_t, cutlass::layout::TensorNCxHWx<4>, int8_t, \ + cutlass::layout::TensorCxRSKx<4>, ElementOutput, \ + cutlass::layout::TensorNCxHWx<4>, int32_t, \ + cutlass::layout::TensorNCxHWx<4>, int32_t, \ + cutlass::convolution::ConvType::kConvolution, \ + cutlass::arch::OpClassSimt, cutlass::arch::Sm61, \ + ThreadBlockShape, WarpShape, InstructionShape, EpilogueOp, \ + cutlass::convolution::threadblock:: \ + ConvolutionNCxHWxThreadblockSwizzle< \ + cutlass::convolution::ConvType::kConvolution>, \ + 2, 4, aligned_, NeedLoadFromConstMem>; \ + typename Convolution::ConvolutionParameter conv_param{ \ + param.n, param.ci, param.co, param.hi, param.wi, \ + param.fh, param.fw, param.ho, param.wo, param.sh, \ + param.sw, param.ph, param.pw, 1, 1}; \ + return cutlass_convolution_wrapper( \ + d_src, d_filter, d_bias, d_z, d_dst, workspace, conv_param, \ + epilogue, stream); \ + } +#define DISPATCH_KERNEL \ + DISPATCH_KERNEL_WITH_TILE_SHAPE(128, 128, 32, 64, 32, 32, 16); \ + DISPATCH_KERNEL_WITH_TILE_SHAPE(128, 64, 32, 64, 32, 32, 16); \ + DISPATCH_KERNEL_WITH_TILE_SHAPE(64, 128, 32, 64, 32, 32, 16); \ + DISPATCH_KERNEL_WITH_TILE_SHAPE(128, 32, 32, 64, 32, 32, 16); \ + DISPATCH_KERNEL_WITH_TILE_SHAPE(32, 128, 32, 32, 64, 32, 16); \ + DISPATCH_KERNEL_WITH_TILE_SHAPE(64, 64, 32, 64, 32, 32, 16); \ + DISPATCH_KERNEL_WITH_TILE_SHAPE(32, 64, 32, 32, 64, 32, 16); \ + DISPATCH_KERNEL_WITH_TILE_SHAPE(64, 32, 32, 64, 32, 32, 16); \ + DISPATCH_KERNEL_WITH_TILE_SHAPE(32, 32, 32, 32, 32, 32, 16); \ + DISPATCH_KERNEL_WITH_TILE_SHAPE(16, 64, 8, 16, 64, 8, 4); \ + megdnn_assert(false, \ + "unsupported threadblock shape (%dx%dx%d) and warp shape " \ + "(%dx%dx%d)", \ + threadblock_shape.m(), threadblock_shape.n(), \ + threadblock_shape.k(), warp_shape.m(), warp_shape.n(), \ + warp_shape.k()); + using ElementOutput = int8_t; + using ElementAccumulator = int32_t; + using ElementBias = int32_t; + using ElementCompute = float; + using NonlineMode = megdnn::param_enumv::ConvBias::NonlineMode; + switch (nonlinear_mode) { + case NonlineMode::IDENTITY: { + using EpilogueOp = + cutlass::epilogue::thread::BiasAddLinearCombinationClamp< + ElementOutput, 4, ElementAccumulator, ElementBias, + ElementCompute>; + typename EpilogueOp::Params epilogue{alpha, beta, gamma}; + DISPATCH_KERNEL; + } + case NonlineMode::RELU: { + using EpilogueOp = cutlass::epilogue::thread:: + BiasAddLinearCombinationReluClamp< + ElementOutput, 4, ElementAccumulator, ElementBias, + ElementCompute>; + typename EpilogueOp::Params epilogue{alpha, beta, gamma, 0}; + DISPATCH_KERNEL; + } + case NonlineMode::H_SWISH: { + using EpilogueOp = cutlass::epilogue::thread:: + BiasAddLinearCombinationHSwishClamp< + ElementOutput, 4, ElementAccumulator, ElementBias, + ElementCompute>; + typename EpilogueOp::Params epilogue{alpha, beta, gamma, scale}; + DISPATCH_KERNEL; + } + default: + megdnn_assert(false, + "unsupported nonlinear mode for conv bias operator"); + } +#undef DISPATCH_KERNEL_WITH_TILE_SHAPE +#undef DISPATCH_KERNEL +} +#endif + +#define INST(need_load_from_const_mem) \ + template void megdnn::cuda::cutlass_wrapper:: \ + do_conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4< \ + need_load_from_const_mem>( \ + const int8_t* d_src, const int8_t* d_filter, \ + const int32_t* d_bias, const int8_t* d_z, int8_t* d_dst, \ + int* workspace, const convolution::ConvParam& param, \ + uint32_t nonlinear_mode, float alpha, float beta, \ + float gamma, float scale, \ + const GemmCoord& threadblock_shape, \ + const GemmCoord& warp_shape, cudaStream_t stream); +INST(true); +INST(false); +#undef INST + // vim: syntax=cuda.doxygen diff --git a/dnn/src/cuda/conv_bias/cutlass_convolution_wrapper.cuh b/dnn/src/cuda/conv_bias/cutlass_convolution_wrapper.cuh index 02481004..172ed5d7 100644 --- a/dnn/src/cuda/conv_bias/cutlass_convolution_wrapper.cuh +++ b/dnn/src/cuda/conv_bias/cutlass_convolution_wrapper.cuh @@ -37,6 +37,15 @@ void do_conv_bias_int8_implicit_gemm_imma_ncdiv32hw32( const GemmCoord& threadblock_shape, const GemmCoord& warp_shape, cudaStream_t stream); +template +void do_conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4( + const int8_t* d_src, const int8_t* d_filter, const int32_t* d_bias, + const int8_t* d_z, int8_t* d_dst, int* workspace, + const convolution::ConvParam& param, uint32_t nonlinear_mode, + float alpha, float beta, float gamma, float scale, + const GemmCoord& threadblock_shape, const GemmCoord& warp_shape, + cudaStream_t stream); + } // namespace cutlass_wrapper } // namespace cuda } // namespace megdnn diff --git a/dnn/src/cuda/conv_bias/implicit_gemm_int8_nchw32_imma.cpp b/dnn/src/cuda/conv_bias/implicit_gemm_int8_nchw32_imma.cpp index c350ffaa..7f42126c 100644 --- a/dnn/src/cuda/conv_bias/implicit_gemm_int8_nchw32_imma.cpp +++ b/dnn/src/cuda/conv_bias/implicit_gemm_int8_nchw32_imma.cpp @@ -57,30 +57,16 @@ bool ConvBiasForwardImpl::AlgoInt8NCHW32IMMAImplicitGemm::is_available( // only support sm_75 or later, platform should have tensorcore int8 // support available &= is_compute_capability_required(7, 5); - if (fh == 1 && fw == 1) - return available; - // for non 1x1 convolution, we have to check constant memory size - auto&& device_prop = current_device_prop(); - // const mem size >= 64K - available &= device_prop.totalConstMem >= 65536; - size_t const_mem_usage = get_workspace_in_bytes(args) - - args.filter_layout->span().dist_byte(); - available &= const_mem_usage <= device_prop.totalConstMem; + // FIXME: too large filter size is not supported now + available &= fh * fw <= 49; return available; } WorkspaceBundle ConvBiasForwardImpl::AlgoInt8NCHW32IMMAImplicitGemm::get_workspace_bundle( dt_byte* raw_ptr, const SizeArgs& args) const { - size_t ci = args.filter_layout->operator[](1) * 32; - size_t fh = args.filter_layout->operator[](2); - size_t fw = args.filter_layout->operator[](3); size_t ws_filter = args.filter_layout->span().dist_byte(); - if (fh == 1 && fw == 1) { - return WorkspaceBundle{raw_ptr, {ws_filter}}; - } - size_t ws_size = (ci / 32) * fh * fw * sizeof(int32_t) * 2; - return WorkspaceBundle{raw_ptr, {ws_filter, ws_size}}; + return WorkspaceBundle{raw_ptr, {ws_filter}}; } size_t @@ -148,9 +134,9 @@ void ConvBiasForwardImpl::AlgoInt8NCHW32IMMAImplicitGemm::exec( false>(args.src_tensor->compatible_ptr(), reinterpret_cast(ws_filter), args.bias_tensor->compatible_ptr(), z_dev_ptr, - args.dst_tensor->compatible_ptr(), - nullptr, kern_param, nonlinear_mode, - alpha, beta, gamma, dst_scale, + args.dst_tensor->compatible_ptr(), nullptr, + kern_param, nonlinear_mode, alpha, beta, gamma, + dst_scale, cutlass_wrapper::GemmCoord{m_algo_param.threadblock_m, m_algo_param.threadblock_n, m_algo_param.threadblock_k}, @@ -159,14 +145,12 @@ void ConvBiasForwardImpl::AlgoInt8NCHW32IMMAImplicitGemm::exec( m_algo_param.warp_k}, stream); } else { - auto workspace = ws.get(1); cutlass_wrapper::do_conv_bias_int8_implicit_gemm_imma_ncdiv32hw32( args.src_tensor->compatible_ptr(), reinterpret_cast(ws_filter), args.bias_tensor->compatible_ptr(), z_dev_ptr, - args.dst_tensor->compatible_ptr(), - reinterpret_cast(workspace), kern_param, nonlinear_mode, - alpha, beta, gamma, dst_scale, + args.dst_tensor->compatible_ptr(), nullptr, kern_param, + nonlinear_mode, alpha, beta, gamma, dst_scale, cutlass_wrapper::GemmCoord{m_algo_param.threadblock_m, m_algo_param.threadblock_n, m_algo_param.threadblock_k}, diff --git a/dnn/src/cuda/conv_bias/implicit_gemm_int8_nchw4_dp4a.cpp b/dnn/src/cuda/conv_bias/implicit_gemm_int8_nchw4_dp4a.cpp index d3c414b4..cf656801 100644 --- a/dnn/src/cuda/conv_bias/implicit_gemm_int8_nchw4_dp4a.cpp +++ b/dnn/src/cuda/conv_bias/implicit_gemm_int8_nchw4_dp4a.cpp @@ -11,7 +11,8 @@ #include "./algo.h" #include "src/cuda/utils.h" -#include "src/cuda/convolution_helper/bias_visitor.cuh" +#include "src/cuda/convolution_helper/parameter.cuh" +#include "src/cuda/conv_bias/cutlass_convolution_wrapper.cuh" using namespace megdnn; using namespace cuda; @@ -53,21 +54,16 @@ bool ConvBiasForwardImpl::AlgoInt8NCHW4DotProdImplicitGemm::is_available( // only support sm_61 or later, platform should have fast native int8 // support available &= is_compute_capability_required(6, 1); + // FIXME: too large filter size is not supported now + available &= fh * fw <= 49; return available; } WorkspaceBundle ConvBiasForwardImpl::AlgoInt8NCHW4DotProdImplicitGemm::get_workspace_bundle( dt_byte* raw_ptr, const SizeArgs& args) const { - size_t ws_size_src = args.src_layout->span().dist_byte(); - size_t ws_size_filter = args.filter_layout->span().dist_byte(); - size_t ws_size_dst = args.dst_layout->span().dist_byte(); - if (args.z_layout->ndim > 0) { - size_t ws_size_z = args.z_layout->span().dist_byte(); - return WorkspaceBundle{ - raw_ptr, {ws_size_src, ws_size_filter, ws_size_dst, ws_size_z}}; - } - return WorkspaceBundle{raw_ptr, {ws_size_src, ws_size_filter, ws_size_dst}}; + size_t ws_filter = args.filter_layout->span().dist_byte(); + return WorkspaceBundle{raw_ptr, {ws_filter}}; } size_t @@ -84,27 +80,9 @@ void ConvBiasForwardImpl::AlgoInt8NCHW4DotProdImplicitGemm::exec( UNPACK_CONV_BIAS_NCHW4_PARAM(*(args.src_layout), fm, *(args.dst_layout), param); auto ws = get_workspace_bundle(args.workspace.raw_ptr, args); - auto ws_src = ws.get(0); - auto ws_filter = ws.get(1); - auto ws_dst = ws.get(2); + auto ws_filter = ws.get(0); auto&& stream = cuda_stream(args.opr->handle()); - // reformat src from nchw4 to chwn4 - { - TensorLayout src{{n, ci / 4 * hi * wi}, dtype::Int32()}; - src.init_contiguous_stride(); - TensorLayout dst = src; - dst.stride[0] = 1, dst.stride[1] = dst[0]; - TensorND ts_src, ts_dst; - ts_src.raw_ptr = args.src_tensor->raw_ptr; - ts_src.layout = src; - ts_dst.raw_ptr = ws_src; - ts_dst.layout = dst; - auto&& transpose = - args.opr->handle()->create_operator(); - transpose->exec(ts_src, ts_dst); - } - // reformat filter from nchw4 to chwn4 { TensorLayout src{{co, ci / 4 * fh * fw}, dtype::Int32()}; @@ -136,53 +114,42 @@ void ConvBiasForwardImpl::AlgoInt8NCHW4DotProdImplicitGemm::exec( dst_scale = args.dst_layout->dtype.param().scale; float alpha = src_scale * filter_scale / dst_scale, beta = bias_scale / dst_scale; - - // process z int8_t* z_dev_ptr = nullptr; - float gamma = 1.f; + float gamma = 0.0; if (args.z_layout->ndim > 0) { - auto ws_z = ws.get(3); - - TensorLayout src{{n, co / 4 * ho * wo}, dtype::Int32()}; - src.init_contiguous_stride(); - TensorLayout dst = src; - dst.stride[0] = 1, dst.stride[1] = dst[0]; - TensorND ts_src, ts_dst; - ts_src.raw_ptr = args.z_tensor->raw_ptr; - ts_src.layout = src; - ts_dst.raw_ptr = ws_z; - ts_dst.layout = dst; - auto&& transpose = - args.opr->handle()->create_operator(); - transpose->exec(ts_src, ts_dst); - z_dev_ptr = reinterpret_cast(ws_z); + z_dev_ptr = args.z_tensor->compatible_ptr(); float z_scale = args.z_layout->dtype.param().scale; gamma = z_scale / dst_scale; } - - convolution::PerChannelBiasVisitor bias_visitor; - bias_visitor.bias = args.bias_tensor->compatible_ptr(); - ConvBiasForwardImpl::AlgoInt8CHWN4DotProdImplicitGemm:: - dispatch_nonlinear_mode( - reinterpret_cast(ws_src), - reinterpret_cast(ws_filter), bias_visitor, - z_dev_ptr, reinterpret_cast(ws_dst), kern_param, - alpha, beta, gamma, dst_scale, stream, param.nonlineMode); - - // reformat chwn4 to nchw4 - { - TensorLayout src{{co / 4 * ho * wo, n}, dtype::Int32()}; - src.init_contiguous_stride(); - TensorLayout dst = src; - dst.stride[0] = 1, dst.stride[1] = dst[0]; - TensorND ts_src, ts_dst; - ts_src.raw_ptr = ws_dst; - ts_src.layout = src; - ts_dst.raw_ptr = args.dst_tensor->raw_ptr; - ts_dst.layout = dst; - auto&& transpose = - args.opr->handle()->create_operator(); - transpose->exec(ts_src, ts_dst); + uint32_t nonlinear_mode = static_cast(param.nonlineMode); + if (fh == 1 && fw == 1) { + cutlass_wrapper::do_conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4( + args.src_tensor->compatible_ptr(), + reinterpret_cast(ws_filter), + args.bias_tensor->compatible_ptr(), z_dev_ptr, + args.dst_tensor->compatible_ptr(), nullptr, kern_param, + nonlinear_mode, alpha, beta, gamma, dst_scale, + cutlass_wrapper::GemmCoord{m_algo_param.threadblock_m, + m_algo_param.threadblock_n, + m_algo_param.threadblock_k}, + cutlass_wrapper::GemmCoord{m_algo_param.warp_m, + m_algo_param.warp_n, + m_algo_param.warp_k}, + stream); + } else { + cutlass_wrapper::do_conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4( + args.src_tensor->compatible_ptr(), + reinterpret_cast(ws_filter), + args.bias_tensor->compatible_ptr(), z_dev_ptr, + args.dst_tensor->compatible_ptr(), nullptr, kern_param, + nonlinear_mode, alpha, beta, gamma, dst_scale, + cutlass_wrapper::GemmCoord{m_algo_param.threadblock_m, + m_algo_param.threadblock_n, + m_algo_param.threadblock_k}, + cutlass_wrapper::GemmCoord{m_algo_param.warp_m, + m_algo_param.warp_n, + m_algo_param.warp_k}, + stream); } } diff --git a/dnn/src/cuda/conv_bias/int8_imma/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32.cuinl b/dnn/src/cuda/conv_bias/int8/conv_bias_int8_implicit_gemm_cutlass_wrapper.cuinl similarity index 96% rename from dnn/src/cuda/conv_bias/int8_imma/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32.cuinl rename to dnn/src/cuda/conv_bias/int8/conv_bias_int8_implicit_gemm_cutlass_wrapper.cuinl index fdde30c3..785b7978 100644 --- a/dnn/src/cuda/conv_bias/int8_imma/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32.cuinl +++ b/dnn/src/cuda/conv_bias/int8/conv_bias_int8_implicit_gemm_cutlass_wrapper.cuinl @@ -1,6 +1,6 @@ /** * \file - * dnn/src/cuda/conv_bias/int8_imma/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32.cuinl + * dnn/src/cuda/conv_bias/int8/conv_bias_int8_implicit_gemm_cutlass_wrapper.cuinl * MegEngine is Licensed under the Apache License, Version 2.0 (the "License") * * Copyright (c) 2014-2020 Megvii Inc. All rights reserved. diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x128x32_64x32x32_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x128x32_64x32x32_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..61802649b04294c09573db86f44c319effde6760 GIT binary patch literal 1687 zcma)6ZBN@U5dNND;T37xP@rl-2$>EEGFGNBm`Ek|Eplx)wVF7V?ev9Tzq6C(1r@PM zO`JR5-E)2(-;r3LPrvV`-ya{7+1>Q{Ciy!GhC`Hc$u+T@q4~~zB(!8Cp@m#0b3sh9 z;#wvmSD86gI~O2QS!j+nL`xx4R4foJZAOd8PS7-p5EBIU87nAKrCGk`tCBG^ zIC&{$X*fGkM3bCbt_S}SW2_d`o{$WX0vHGpl4d32XkauQx>klwD?=geW&4@9Pv4oK z!X_!tbLic7l58|litAHa3YiUppmf>M1KAa&jWtEz_B~^qc_YR%E={2yqwW36c5;4w z)r9yMGh+Q^J{+)QUoW7(RlsA!>WQQz9$Ul0T^~TwYr-w!SHhZ-K2F#vX*^L`OwF z7m~Pw_wh!UWt5RzO#*b_=NYq5GDNUE8z-=C7K^MPw&^1R0T)^6(ssc(G1O*^8D9&^ zG4AZG>h9|_g!?j=u3TlR_-w5nZGU%#?vTxIu9b#y50OJM+bO`b>VOJcwGmC17(XdE zBx7Qc1EMBV<%{zRAjQ{sE20oJstD0rqC?cuSI0M*dl)Mg=T4fvqpPG})%0Fq^Yu03 z)sY^~b-3T_x;`iqm>yk(2qejYTFYS$!K^~-LNJu`lt~FE2)EoldsnwLbinWL^`vvS z*Iyc`!A@hHpn&OP#1a@GH4>-Ax88-n(}y-V>Rr5>pNIT)`qz%HEy@gV+CT#PG1?S* zWfY;jrB$VUQW*PeW}j+*r8|in39*Ht Yl_wU#2!X}dtM?|jDpYX9B@>I_A2NzMDF6Tf literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x128x32_64x32x32_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x128x32_64x32x32_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..b32dc8904fea81384273aac554e82f3afc244fa1 GIT binary patch literal 1681 zcma)6ZBN@U5dPj@;T37xP@rl-2$>FvWvrXVU?P>+x5%~K)N0~berYMcerG4m3o2rj znmBj9yXX8oz9X?jAAaA?zTMxa^V`|uP5O5{7>!WICD+7qh88>jky6JlJoc0NF4veX=HiIzfUs9YlIY)*_B94Sq*f}mL(BPIy!GgeTfoLRl)tCBG^ zJb7}`8O}}=(WKy(>*0UI7^?-fCnN`?00u&Yq`6}p4UMKF-^!?IWhA7%Y(G=~89EbG z*firs0lkM#(yb;+aeYdikoj;ha6UV_BfHYsL{s!--!sN}Fk(FC(ve*W?FJUzd@ z>cxB)Idt@PSp58${OX3ySDF*{H81HpSrNs%p&lv5Gk6BqbUe9?PZ z5R&+UaZU;~9iRihz?Fq!5rXB}B!zXeSmq_MO$RYZx6GYS*oEO`P@6Gkd?P5wxU;va zyRXww9m-t#a+RrKvb6@Z{oNJ1L$Y;L>|d}rvTHs11f5DMl@Yv{Gi~Fj7dZR zh?-25FDWj7j!@&Zd?M87AwsVyj!;Wn9p7Z`VXXLDcv1F_t`dD!GkBA&czMZrb)<)L z9q#wKt`C|7rpFf%0x@!+)^eCYFs0C@6buzSV^YEi!u|Ho-lc5~9q{`bJ?$Ls^`}N^ zu+vyCC}8>+u@r_!jl^s5wRahA^Pvr%dLQp6=OKTc{-xt&*-y|4_(%WRq+zbUo2F5Mv&z{Ag>lGc_Nn%lxs%9~kXRU3MQRZY U4_JJ@dTVy8QVou{WMVn^2Xd1)(*OVf literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x128x32_64x32x32_relu.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x128x32_64x32x32_relu.cu new file mode 100644 index 0000000000000000000000000000000000000000..9f0eb40e639f376090a66f8e34a8e92cf5a1a819 GIT binary patch literal 1685 zcma)6ZBN@U5dPj@;T37xP@rl-2$>FvWvrXVU?P>+x5%~K)N0~berYMcerG4m3o2rj znmBj9yXX8oz9X?jAAaA?zTMxa^V`|uP5O5{7>!WICD+7qh88>jky6JlJoc0NF4veX=HiIzfUs9YlIY)*_B94Sq*f}mL(BPIy!GgeTfoLRl)tCBG^ zJb7}`8O}}=(WKy(>*0UI7^?-fCnN`?00u&Yq`6}p4UMKF-^!?IWhA7%Y(G=~89EbG z*firs0lkM#(yb;+aeYdikoj;ha6UV_BfHYsL{s!--!sN}Fk(FC(ve*W?FJUzd@ z>cxB)Idt@PSp58${OX3ySDF*{H81HpSrNs%p&lv5Gk6BqbUe9?PZ z5R&+Uk34sAP6{<0paZ|amxY26g5}vHg>|!7<|VOB7ct1U%$-l#h2o`9n=xj5BPhqX zv$v|duhY;S%3S(#m8oL0wFb2P-4(h+wy?R@8OA+C9?5*C0MohyDr&VxG+kl*px}^< zNkjpNnoN~1DK3DLP~)|PBGhOiLa%9#P)lAN-(>D#tT7?MQo;$s9rw@P#cd58@cUam?Hum) zr$%b9(^xMkVEP!b6b49*#B1@jcNuQUhG6S48kidS7wxwPh zMJVq$ET}}nm_(gcdUX8RPtgkaNB`QSVYa@Trcr{k%Gn2namZ%&srDDTlgN{hSQuGF XY7q<&SbV;EYksRz4UV{EVmbH+YcV-% literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x32x32_64x32x32_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x32x32_64x32x32_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..a3a08d3cda3fb9e9d270ff4172218d9edc209b27 GIT binary patch literal 1686 zcma)6VNcsI5dEHC;T37xP@pOxgiMFTGFGNBm`Ek|&2nuwwVK$L?X;9%zjKnN2`ge% zn>u&CyLW!icOd8J!>^mkxBGiCy_q~-lRu+qI7FFH!cs3dnr*@hVI`-8X|*CVNgY`V ztB5R2?vBkS1jtNjE6|!+B~^y>9I?{p)Vb)uSeg|SO_Bt0NnxM!k|9&N#aq5Q8ApSo zr&5(p@FPPlErb_#@EgNZfe@)!UUGp3&az=>W!Sbdl*(W1UP*YZI+IL# zl8K^#-m6Z?+EQbLJ!Yj;`5=nQkR9F8jV^s^8TzvA8RNV%VmuYfX?veM-#$H$&#o?e zG2dkl9lafvJU^yCyJ6FX6_kI?HCv_&YD70QAjNnB&&o9(om|A|^d$V+vQN~ScLUGQ z{)zjc;7Cj6rB?5Tk75MhU8^@n<~l3IgXy9bjTK{G^@Q{U@MbotGhP7fjGXW5$?^m1F|r&fdE2 zwoc1;Rpug;t4%eXJ8Oluzq>}a&sJ@2gobesQ9v@?7{IjbfQolwqn0f&elT!I&ZV*d zL~W+pmlo$hN>$^vhGNvJB1W%?j?s?3Cce$w!&tL83(D*rU9J4OX5|GoUtV%iAL;&F z`}@6W>Vu+z>Ct(NK#~He^#aBaj4HI!lA}UoTq!s~xa8s4ySY0<2mJP0k2{BZ^{JH_ z>~uZ|3Yb1boWKNWkOVEh_Rgy-y>COHKE#LdxzFFEf9d#kMY#h`TS#C(L~CuA&QK;g z4i73(Feg!`l^z|xw_~&h{xSTmNHtvFP17o&^rrL=2IDH5+osxH=}w|RLh4~=6~rSL UA+Y#-`PKk8+C&FJaXF9v0*RbC^8f$< literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x32x32_64x32x32_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x32x32_64x32x32_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..636ec2234dcf27dad2c673938393d8b48b9bb838 GIT binary patch literal 1680 zcma)6VNcsI5dEHC;T37xP@pOxgiMD78SADom`Ek|&2nuwwVF7V?X;9%zq6AjDJx=C zn>u&CyLW!icOd8J!>`-P*ZX@iy`4N>lRu+qI7FFH!cZqTnr-|GVHKx@m1;$1l3KD9 zMiE))+#c(V50IHEjX-N^lvEii=ZIA%NO>BU^U5de!|*C-%ouaAl1yOS+gsP&)@hjz zWiEWV+Ef$SSp(YL-8H&>wy?R87{)t@Jd)`~1EysURNTpo8n(drLBk$vO~x3?EtNTfAoJV62|JgX<8*zPFLgYfyF6Yr-%IP~{Kio&FgQMkADQ$qjLwq4_qvq|`H#QYF{vTo9YC zxRI$SbZ(FJHUx-FD#Ou+7%60i)B;iOa$@b^KpT=31Wn@@F+pITb%G-8?eZ;Om5ia` z(UX_na(1MNAq98b4F4m>IwPn%A~_%hFc2an%{}92Xbl~ORz^)LBO%>I`+(0kcQx-mp+ZjPxJG9L~GK4eFCWUIVO3`JjdJ!71gMvP}%T4nCz=kHI?le4SK zUd%Uw=(w=|jX)m>)HgpvBkTMR}q3Z3xtd_%J;8`RnvA9ba3NS>UvR1olI;QD$W|p}ga8 zpb`mF5_MYX(eZmXL@VGQ!{0hBN9((38YOtAy?f9Ym)Yzt)$T%f5(N?x2NSDE9fAP@ Si_e#Djc={=;DAde7K6XSuQ@dU literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x64x32_64x32x32_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x64x32_64x32x32_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..cb4167c52003eb2323e9fddaba2435f2af31e0b1 GIT binary patch literal 1686 zcma)6ZBN@U5dNND;T37xP@rl-2$>EEGFGNBm`Ek|Eplx)wVF7V?ev9Tzq6C(1r@QX zN}N02-E)2(-;r3LPrvV`-ya{7+1>Q{Ciy!GhC`Hc$u+T@q4~~zB(!8Cp@m#0b3sh9 z;#wvmSD86gI~O2QS!j+nL`xx4R4foJZAOd8PS7-p5EBIU87nAKrCGk`tCBG^ zIC&{$X*fGkM3bCbt_S}SW2_d`o{$WX0vHGpl4d32XkauQx>klwD?=geW&4@9Pv4oK z!X_!tbLic7l58|litAHa3YiUppmf>M1KAa&jWtEz_B~^qc_YR%E={2yqwW36c5;4w z)rq3(@Ms zz$&H}_fx`=meh(uei%Lq5&YX$@07@jwB%2!ihOq}BInhy(&xIte z;C;LiW*KE9SCar8_<6!ClnfCp&&CO?o5dn4h;90hK)*#+y0l#|P7AdeW5(Bla*R8B ztGfF-4d1@Zr7KsNDmq)MN88_Bp*v*rn`@zA+(YD$%ytSetvaB>R%}GmCB{z*4#}8U zcy*+Q za~rL=U{s-XAsEVe%A|x7giG$8y_?$_I^g%$deS-E>o1Me zV5hN8P{8ytVhK!;8i~{5TkpbO=|dYF^)B9x&qMw?{cFe97G(xFZ6JaD7;Or@GKx^% zaad4^ggJ>it@P;lvmc`s@XzkGPW*8FFioR`(yG!vDU5wKvro0Z(w#((gxJE&$`gxV UguvqK)q4Y66)HI5l8Hs|51}nN_y7O^ literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x64x32_64x32x32_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x64x32_64x32x32_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..9795f15dee6cc8afaf5608ddfe59bae331da215b GIT binary patch literal 1680 zcma)6ZBN@U5dPj@;T37xP@rl-2$>FvWvrXVU?P>+x5%~K)M{c|w$oC6{mxFB7gWTm zDsk?7chC8Gd`Du5KK#C&eY?L;=eM)RoAmE^FdCtZOKync3@vv4Bc&xHDOGZlE(EdZ znj4vlLg)5W?|gvBq%s_BiIGBPNG%a9T~4eW9BD(cf}mL(BPIy!vrbT?OS^i@S0!U; zc=A-r(sFj9i6I4d+zkIC#yTUYJ0UqB1uzgIB+X04(a;(?@~w=TRz^a)%l0$%pP@5B zg-bJD6wrI>9)dOAP{et{|n#UcdDvq=i;X0gl_aZTqjC|BjBPuPXwRZyETW_%+k$GEe%s=Ke# zFdfQV`f`=2BC@pxwEf)`x)skgQEa0f?GR zl`knSfR0e(wR$4d=pjO{DUMJ}TpizJ?qRI>TX;?Oj;_*tRWo>#t$2CKd3B_Ra~Z9&U`U~j5)2hQV^YEi!u9sg-kog?9q{`LJ?$Ls^`}N^u+us( zC}8>+u@q)Ujl^s5wRagV^Pvr%dLQox=OKTc{-xt zVM3x#D?K{?><4HC{G)$u(lA!vP17i$bh>m88sm`7?o;hAb0?7}A#pIRiqs((9WMVn^2jW~eq5uE@ literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x64x32_64x32x32_relu.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_128x64x32_64x32x32_relu.cu new file mode 100644 index 0000000000000000000000000000000000000000..06e8522df2e7c79356f501395b107ecfa2c49be8 GIT binary patch literal 1684 zcma)6ZBN@U5dPj@;T37xP@rl-2$>FvWvrXVU?P>+x5%~K)N0~berYMcerG4m3o2q& zl{k04yXX8oz9X?jAAaA?zTMxa^V`|uP5O5{7>!WICD+7qh88>jky6JlJoc0NF4veX=HiIzfUs9YlIY)*_B94Sq*f}mL(BPIy!GgeTfoLRl)tCBG^ zJb7}`8O}}=(WKy(>*0UI7^?-fCnN`?00u&Yq`6}p4UMKF-^!?IWhA7%Y(G=~89EbG z*firs0lkM#(yb;+aeYdikoj;ha6UV_BfHYsL{s!--!sN}Fk(FC(ve*W?FJUzd@ z>cxB)Idt@PSp58${OX3ySDF*{H81HpSrNs%p&lv5Gk6BqbUe9?(8YO#&L&OSC!*E6 zfmKW|?x%z!b<~Pdz8gM{5d7O#Zt$2XaK7%L7JUYEV2t8`!04BlibUS4uu9qHj* zhx@&*>rVpHYT1_0wFMZ+H@9d;`K}AgK zht$6F-96{$@g0ac`ta*^^6lXvo!(BKuG2p!gV6|OTyjk;XK1$do0K|6Qd-JYIupdC zORi-q3YD8zOUzLoZ z;nA~`&Tw|5h$aQMTo3;t##k+=Jt8?E1uzgIB+VV;XlOJY`Bp|vDXBkRfp2h)PtGHBeiosNrsy-#>OaDM zNVrc&ttjRD(Gfa{P}}FN5_y?9{;0Z8d2PkmhK4Y{0j91QyBCrZ9hb#SNa73LC2L_8 zaZU;~9-uwHz?OxQ5rXBH(-hXtVxE`8HtokC-ZFPSZ5NCeLT$#F@s*$)z@XufoxDD2WBmY5d>ojtxCaA!80Z$Tp&Df|Lwin*3iMed(z|1-Clialm;h_^?CxL z4-rdYdelI?6kmJi;W_U+;FZMVH@{YrTNF>Zi z)M=&1#_!z-t$=^@f2%YM)_2o1LU2|&`=~Gu*~~80?nQSJc@h!}^QuTKf(ZhP&zElv OZ&j+n0hdh72Y&$wH90u| literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_16x64x8_16x64x8_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_16x64x8_16x64x8_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..205314be662dcc11bee39d9033278a5e52a11cdc GIT binary patch literal 1676 zcmbVMZBN@U5dNND;T37xP@rN%2$>EEGS*FFFp)~^TjbhqYBg~zzqFKJzq6C(1r;%^ zA5#0yclVs1$9EtW=-scI>DRlvY<4q!xXS*VMB_2ax#XHy&d_}8HyL$|WVDj&Y%Yk& zR$R+Wl&UbtYU=|;E-TH^hG;2dj;aNs&KAU&=s;lx!B7%`r4X)1k}JbizBnw(x< z3}U{C0y=sOU((pE-Jc8mqhV?s7H$N6u!YVIXR2b*=dZ<+oF#|tN#f5 zA>lq9wW5-5N5|+SMqQsbN)%P@_`T{w<&70%8ydp+8ko9b>{dulbW)XbA&D=T6r@y> z2<`a=o-7oL5iCD{%3$3t7DYvD+js)9tqSK8_F;GlG-iw$Ukl1H?wzgc?&`EOhcf5B zTy3gZ?5qLp@N|uCpDi42^o8*Nkw-GyD!{brfr>kg5lxpE-z&HzV^UE9qBc|QOUpB$ zBh+{)ofx%ph|x=mW7HAX#J8CT7;FCKUXX*Us|8=z4Bm7jo}UX|U+Ml_`}@6Y>VFDM z1KFTO4$N8(!v_WwT33RhlIKiHxIlQ?{yTWDouP+)_n0TWyS@C-Dh*B=>-7XgA0n2) z+-QJ!DZcbB!b9G7z%%dT{m|U!Z_+>ad|gpyfYKHc*bmXB(kr6~EEGS*FFFp)~^TjbhqYBg~zzqFKJzq6C(1r;%^ zA5#0yclVs1$9EtW=-scI>DRlvY<4q!xXS*VMB_2ax#XHy&d_}8HyL$|WVDj&Y%Yk& zR$R+Wl&UbtYU=|;E-TH^hG;2dj;aNs&KAU&=s;lx!B7%`r4X)1k}JbizBnw(x< z3}U{C0y=sOU((pE-Jc8mqhV?s7H$N6u!YVIXR2b*=dZ<+oF#|tN#f5 zA>lq9wW5-5N5|+SMqQsbN)%P@_`T{w<&70%8ydp+8ko9b>{dulbW)XbA&D>ezzdfY zq*Rj#?fC_+EEJ3pEI)tBVBIbjMMZ4ed;-#~3g?sdp?DcIW{eqM3(7I>ovrKc>a5+gz_jXtiaVVVO_vzoE4UHb{%`@L-H ze+o#;DL5;H+}?USS-vnO&;gd+sIjB%~ImRhd}?^8*$iFJ2qn Ms#4JbmrN|8ze5x_djJ3c literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x128x32_64x32x32_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x128x32_64x32x32_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..34a0ceb0b4362ef6b1192b70ec6185dc7d327d1a GIT binary patch literal 1688 zcma)6ZBN@U5dNND;T37xP@rl-2$>EEGFGNBm`Ek|Eplx)wVF7V?ev9Tzq6C(1r@PM zO`JR5-E)2(-;r3LPrvV`-ya{7+1>Q{Ciy!GhC`Hc$u+T@q4~~zB(!8Cp@m#0b3sh9 z;#wvmSD86gI~O2QS!j+nL`xx4R4foJZAOd8PS7-p5EBIU87nAKrCGk`tCBG^ zIC&{$X*fGkM3bCbt_S}SW2_d`o{$WX0vHGpl4d32XkauQx>klwD?=geW&4@9Pv4oK z!X_!tbLic7l58|litAHa3YiUppmf>M1KAa&jWtEz_B~^qc_YR%E={2yqwW36c5;4w z)r9yMGh+Q^J{+)QUoW7(RlsA!>WQQz9$Ul0T^~TwYr-w!SHhZ-K2F#vX*^L`OwF z7m~Pw_wh!UWt5RzO#*b_=NYq5GDNUE8z-=C7K^MPw&^1R0T)^6(ssc(G1O*^8D9&^ zG4AZG>h9|_g!?j=u3TlR_-w5nZGU%#?vTxIu9b#y50OJM+bO`b>VOJcwGmC17(XdE zBx7Qc1EMBV<%{zRAjQ{sE20oJstD0rqC?cuSI0M*dl)Mg=T4fvqpPG})%0Fq^Yu03 z)sY^~b-3T_x;`iqm>yk(XhAZ=fm_RA5W%oQ>q0P;^OQ*mM+n#4J$rYzHFVJLFZQH! zy4PPCt-(%XouYv1W5g1eAvF{y#<$*uzto2|IPP7%8=!~$b^6ziuPw?9klH{3`!U)S zdSw)$yyLJS6A6FvWvrXVU?P>+x5%~K)N0~berYMcerG4m3o2rj znmBj9yXX8oz9X?jAAaA?zTMxa^V`|uP5O5{7>!WICD+7qh88>jky6JlJoc0NF4veX=HiIzfUs9YlIY)*_B94Sq*f}mL(BPIy!GgeTfoLRl)tCBG^ zJb7}`8O}}=(WKy(>*0UI7^?-fCnN`?00u&Yq`6}p4UMKF-^!?IWhA7%Y(G=~89EbG z*firs0lkM#(yb;+aeYdikoj;ha6UV_BfHYsL{s!--!sN}Fk(FC(ve*W?FJUzd@ z>cxB)Idt@PSp58${OX3ySDF*{H81HpSrNs%p&lv5Gk6BqbUe9?PZ z5R&+UaZU;~9iRihz?Fq!5rXB}B!zXeSmq_MO$RYZx6GYS*oEO`P@6Gkd?P5wxU;va zyRXww9m-t#a+RrKvb6@Z{oNJ1L$Y;L>|d}rvTHs11f5DMl@Yv{Gi~Fj7dZR zh?-25FDWj7j!@&Zd?M87AwsVyj!;Wn9p7Z`VXXLDcv1F_t`dD!GkBA&czMZrb)<)L z9q#wKt`C|7rpFf%T9Vvw;MQ^&K`^G!rW6bnJY!PA5yA!c&)%(V4IT9RD?RO;?)9fe zYp~N;uPC7U7_k(lM-9b`@wImuuJfS{o_infN9Q4bo&KfcYl|`iq&ASievG!IUK>Ry z?>H>TM8b?jomP5${MnDt3iwC=+N5EyzMH0zg0srm2ZeFSX7;J}x4DzZlaN@LS4C)@Rx~yZGe>_6}QB5hNkQIQP99hLA6>IQ$bv@ z;8qo)GSZ!zbqo-t(w3tYu}Y{C=^3KIOX6JT$XHTV1dZ|>F+pIT^MWE1-25$Hos6OG z$x~3ladu*eB^CGFcK;*Bc`K+tArg=R7zh!H%D_14I!k-8m0r_IPbh!6`z+#T>P%4K zi;`Cr^qx8?R+bpU?I{gH$!@0;Vs>;#);jpHrRdAHXN+YsVm#r>X?veP|9E;Ho?l<> z#e5eMI(j=Se|{YQYKKkcmJ{|>YPuNDiQ(#jA$1w}gK5L%8!N^>HHGn4VC#mlJE1tSxvr){ zky!AN%aBV_nPCSV_$9tP6wDAT&jtmoo5f6O;+rmVkgt{@CT&BBQrMU=W_&3q$GEk( zuDh+%(4ER$#&Wf(W^-pvX!m#5=nmP^=8euU-a{0TOx6Z4En1+moz{q@bBrGh9FlWm zQ30YRQ|%j97eGm>@mfL|YBZ6d*EDBnN8TpB$-IZL=5QK?xp#E6@avk%J6?&G7s=}* zJ)G-szt@}kpi5x7f03aXk&Xkmp2HY|QH7RTFjVo9DFsIempnfAZtl*|LchJ%!`A6u ze`>S_JDrb;0;-P@D`0|bphPjg_Ri9kKC~fnALHZrJmlY`e`)!4MVSLq8%SV3Mk{R> z&JfC54i7R>Feg!~l|4TGY{zH~{9}AAi!@x{P18srcoY1C!8m1e+f>^d-AWWm7<-sm YRpAj#5LkS^dTW3iZ8}F>F){1>1D0kvwg3PC literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x32x32_64x32x32_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x32x32_64x32x32_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..08312f670998e6bac6ec2acd54f9ef29259dd9a8 GIT binary patch literal 1687 zcma)6VNcsI5dEHC;T37xP@pOxgiMFTGFGNBm`Ek|&2nuwwVF7V?X;9%zq6C32`ge% zn>u&CyLW!icOd8J!>^mkxBGiCy_q~-lRu+qI7FFH!cZqTnr-|GVHKx@m1;$1l3KD9 zMiE))+#c(V50IHEjX-N^lvEii=ZIAb;#CR%{EzN!MeEak~KD)Z? z#eA1Jbo6#u^8A?o?1oJjMo|7WFWE9(P%XNl9x28Xcm~&abaD}+(-Z$|%RW(~-wixJ z`zP*)f+MY%lcjn$d=w-2?pnRkGB2}AJm@Z3(O5Bdp(l*L0$JCb-$^B?Ny=g-74-#g z)3vmVB&UTQM`+I{5ays{j9__sLSWr4=6Ok7+kXQ3E%VB!?Sk=IXv`RMv64(++}T^# z-PURO4rMNUx!P3Ixw8he{oOUXeYUW<5gNulL>|d>qXE;h11jE$jT*MV_(8)VS)0lN z5Ve_VUs{|4DWS$|4aKNcMT}k(9itt6O?;cVhp}dH=9Sqyx?1^l&EN$#UtV%iAL;&F z`}@6W>Vu+z>Ct(N<}|kgxOD>N5X>sHDkVpS$hcB)gmBCKvv+lOh7S7ey&iW?_v%xt zHP~sLR}@fvh&X`}(m?TIeC?fwJH2m%=ibNr`MJ;Eq<`u7c15`bQd>x1KSb-&EUl(Y zbQ}(3qF_*>PAfe=esAY!4g913Tahqb-%Zm>p>n!%4;tf;&2Cd|?{p`TCn0q(vrzJtLUB2d{sOgGIz9jZ literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x32x32_64x32x32_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x32x32_64x32x32_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..62b43ebf9073936a6a890a79c12312c381b3ad6d GIT binary patch literal 1681 zcma)6VNcsI5dEHC;T37xP@pOxgiMD78SADom`Ek|Eplx)wdy#Q?X;9%zq6AjDJx=C zn>u&CyLW!icOd5I!>`-P*ZccydOLZ%&i;&|;Sl9qaYGzuXtwb$8Lb$}XsK4&Oc0wb zxlx%Yw6w>1;{!ylO2g5b7$sDW$~mHylf>HSKpT=51Wl3zF+pITb%G*Y*~MGFIvGQQ zqo+z$ma`*G3@NzdX7C>|))_(F5s`otz(9ylR91|mfi-mKTN$>k425zR-D~DwLuY~t zm*u=Dp!d*8wl+j-ZjNaslpI7+<+GzZvMDQ<8j8Mbd&XD>BgRv%Y-#S3=kHI?>BUW#tq0VR#iZW{eqM3Cc0>$FUV zG8evFZK{dvtO4!r?i$@bTiD!44C5U{9?5j00n@SvD(+-P3|(OSpy80LO+^8S+Dx@C zEzW_CP~)|FV$|v(Mz1N3QAb=8-)7#ySo1gYn%p_MTJv?y;7!-!C(?4@)^V6XFs0C{6buzSXG*~l!u|HoolDypdg!+|dfYqRt52=gV5fCn zQ9$(}Vi^pN28tKsYwtYV=6xGH_decF&VBwS{Y%f+6=fDkZ6SgE5UoqIw3<-fb2yNR zf)R;&t?cmedpkjE;2-_pDhqS<-88KfDyJ*=pfL{F>^9Z*Hun;F5>f}_s>mFI=>dz+ Qmv7B(UFzt7D<~{Kio&FgQMkADQ#SL+sq4_qvq|`H#(n77%xga)O zaida^YiW=5HUx-F6^5e?F-oWm6$?bYlf>G=fi@(|37W<+VuHXv>jXvG+vQunDj7q= zqbIMtuFc2aXm7Z}lw1$pCE2E~Bkx=fUeNDq_*_oii zr5Vq2=)LSD-58=ZH^kS8wyoZ3A&boO2i-->Yb(aC>Ij%++52H;~t`bWVY3SY1IK0wNfL7E-`-4a7flBA_qiG zrplM(=RiqWEX*qD~I7}g!RA^lYhH{=UrQitRj)!OO;K5 zXUhG7F?OkidS3HicPPO(^d; z9LPk$m_(gcdVKueP0EEGFGNBm`Ek|Eplx)wVF7V?ev9Tzq6C(1r@QX zN}N02-E)2(-;r3LPrvV`-ya{7+1>Q{Ciy!GhC`Hc$u+T@q4~~zB(!8Cp@m#0b3sh9 z;#wvmSD86gI~O2QS!j+nL`xx4R4foJZAOd8PS7-p5EBIU87nAKrCGk`tCBG^ zIC&{$X*fGkM3bCbt_S}SW2_d`o{$WX0vHGpl4d32XkauQx>klwD?=geW&4@9Pv4oK z!X_!tbLic7l58|litAHa3YiUppmf>M1KAa&jWtEz_B~^qc_YR%E={2yqwW36c5;4w z)rq3(@Ms zz$&H}_fx`=meh(uei%Lq5&YX$@07@jwB%2!ihOq}BInhy(&xIte z;C;LiW*KE9SCar8_<6!ClnfCp&&CO?o5dn4h;90hK)*#+y0l#|P7AdeW5(Bla*R8B ztGfF-4d1@Zr7KsNDmq)MN88_Bp*v*rn`@zA+(YD$%ytSetvaB>R%}GmCB{z*4#}8U zcy*+Q za~=(`z^&ylhhSErbs-qadCH`OBZOP-p1rHv8an9r_j=Mf-Rm!n z)?lZxPEkPhF=7dfkQ#~;<6G~--|0ge9QQ8X&Cf&rI{juviG)FkI<55h__Lp*74XmQwNCtW{V+`(zS`Too!f;*yC)@DI%IIzs>e literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x64x32_64x32x32_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x64x32_64x32x32_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..7b7f9aa8acc89cac30d5401856d72923aa4e16b3 GIT binary patch literal 1681 zcma)6ZBN@U5dPj@;T37xP@rl-2$>FvWvrXVU?P>+x5%~K)M{c|w$oC6{mxFB7gWTm zDsk?7chC8Gd`Du5KK#C&eY?L;=eM)RoAmE^FdCtZOKync3@vv4Bc&xHDOGZlE(EdZ znj4vlLg)5W?|gvBq%s_BiIGBPNG%a9T~4eW9BD(cf}mL(BPIy!vrbT?OS^i@S0!U; zc=A-r(sFj9i6I4d+zkIC#yTUYJ0UqB1uzgIB+X04(a;(?@~w=TRz^a)%l0$%pP@5B zg-bJD6wrI>9)dOAP{et{|n#UcdDvq=i;X0gl_aZTqjC|BjBPuPXwRZyETW_%+k$GEe%s=Ke# zFdfQV`f`=2BC@pxwEf)`x)skgQEa0f?GR zl`knSfR0e(wR$4d=pjO{DUMJ}TpizJ?qRI>TX;?Oj;_*tRWo>#t$2CKd3B_Ra~tMJY!PA5yJiU&)%hN4IT9R8$Iou?)9feYp~Ng zuPC7U7_k(FM-9b`@wImuZu6lHo_infC+8u5o&KfcYl|`qq&ASievG!ttgR-LcN`96 zB4I?LPAfe={_H1c1^lCbZPGAT-%Zm

(=*4;tf;&F)j}Z*wP+Cn0e#u8Pzlm>#hB ReD&7s)=CeKxMX5E_y-HuH|+ob literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x64x32_64x32x32_relu.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_128x64x32_64x32x32_relu.cu new file mode 100644 index 0000000000000000000000000000000000000000..e48c4f015d7b5c7a2d8656c95b8ba3f043f37046 GIT binary patch literal 1685 zcma)6ZBN@U5dPj@;T37xP@rl-2$>Fvb*!7lU?P>+x5%~K)T-lHerYMcerKo63o2q& zl{k04yXX8oz9X?fAAa9Xzun(wv)k$8P4;)#8w^m+6*t6jhUVMwkx|b`MoYEM=7QL4 z#f{2Dp`|_5+YlgfRT_>q#3-S1R4x$pP7-T-N7|6QAZR+7ASMXxvrbT?y|#$Ce+9B`7`qdS6Ei7`xlkk& zeB{zkBq{W`hYtKAT@DH+2$pA~4A%8xAxq-w?kAw$Qu>gz4J9aHXU3TEwV)j1*50b_ zzD~_{EOQykRi=u}#v0LfcUR~R+2ZD%%rNdC3P@&K4VYFfP)Q>-V(1d%2Mvd0Z7K>t zRA;JuX>kFR#2T*^l%QG@33^R)f*SI6@pa}7#)`vv&}HZ7D&1E#qc`1%mlw&aBR!n! zaKG2P`lHD7@FGDAA}t4Q9fv6dlM1a%!BD|-rW70@-0|@2T-?UcLchP&4pg#Z8m literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_16x64x8_16x64x8_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_16x64x8_16x64x8_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..ee7849988ae5d4ec96724c1af44540f850730d3e GIT binary patch literal 1683 zcmbVMZBN@U5dPj@;T37xP@sY#giMD787tEmOr#R~7P+>YT1_0wFMZ+H@9d;`K}AgK zht$6F-96{$@g0ac`ta*^^6lXvo!(BKuG2p!gV6|OTyjk;XK1$do0K|6Qd-JYIupdC zORi-q3YD8zOUzLoZ z;nA~`&Tw|5h$aQMTo3;t##k+=Jt8?E1uzgIB+VV;XlOJY`Bp|vDXBkRfp2h)PtGHBeiosNrsy-#>OaDM zNVrc&ttjRD(Gfa{P}}FN5_y?9{;0Z8d2PkmhK4Y{0j91QyBCrZ9hb#SNa73LC2L_8 zaZU;~9-uwHz?OxQ5rXBH(-hXtVxE`8HtokC-ZFPSZ5NCeLT$#F@s*$)z@Xuf$TZS4F_s1hZzKO3av`PP{A`MCEOsqaR2Q++t$zlzkAc;&gEWxYNQ4yjrD>8 zrVkNIVSLm`ycS=3=ixo?JK(AJ@qTvh^VjKLI=;3jGr(yB3G9bxUFxM#gz}EVf=VO| zNz`ejN5}8o46T5F^na@~OxAbPG)iz*Is2$E4%y5u)$U1m5_u953j?c2ErJmOi_e#D PO>b4I!2y>{%m;q~GdMYf literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_16x64x8_16x64x8_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_16x64x8_16x64x8_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..878d9843819db36b29d5d1004e98c45317d59fdc GIT binary patch literal 1677 zcmbVMZBN@U5dNND;T37xP@rN%2$>EEGS*FFFp)~^TjbhqYBg~zzqFKJzq6C(1r;%^ zA5#0yclVs1$9EtW=-scI>DRlvY<4q!xXS*VMB_2ax#XHy&d_}8HyL$|WVDj&Y%Yk& zR$R+Wl&UbtYU=|;E-TH^hG;2dj;aNs&KAU&=s;lx!B7%`r4X)1k}JbizBnw(x< z3}U{C0y=sOU((pE-Jc8mqhV?s7H$N6u!YVIXR2b*=dZ<+oF#|tN#f5 zA>lq9wW5-5N5|+SMqQsbN)%P@_`T{w<&70%8ydp+8ko9b>{dulbW)XbA&D=T6r@y> z2<`a=o-7oL5iCD{%3$3t7DYvD+js)9tqSK8_F;GlG-iw$Ukl1H?wzgc?&`EOhcf5B zTy3gZ?5qLp@N|uCpDi42^o8*Nkw-GyD!{brfr>kg5lxpE-z&HzV^UE9qBc|QOUpB$ zBh+{)ofx%ph|x=mW7HAX#J8CT7;FCKUXX*Us|8=z4Bm7jo}UX|U+Ml_`}@6Y>VFDM z1KA5w7!K504$}uF6k1n;p_1oJO1MFI+x|Ovu$`d?e)pOuz01A)&`J$X8tVlGOdlea z!Qg0+crCv4F2YORcfeEcSp>ra79THOo7<{V K(E*oCETX@6uQx6L literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_16x64x8_16x64x8_relu.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_16x64x8_16x64x8_relu.cu new file mode 100644 index 0000000000000000000000000000000000000000..851b5bfdcfc3dd02b447180a4078dec6239a90cc GIT binary patch literal 1681 zcmbVM+fExX5Pi>AxIwB~v=GrEgiMMADNUDRlvY<4q!xXS*V3`QfAbHxpDoT2$PY%=N@$!Mw8*<28t zt+-K{D73W4dK&^nu1dqvh8QJOj>-k1-brHZ;6NLa7X(cw6T}38bJhupw71LGd{r`r zhDVQHdCS?6CWaK;aWnjf80(Cn?ubZ03Sb~aC@MYUXlM-`g;qvQDO!*=d5#o1%}z=>G`& zq2N9}b)r;nMOY&p-3qBz@?u^ zQt0sj?fFHn9286tEI)tBVBIVhvLvo)ege`hr4LEFP=X9P9*>ryaO@SG_HHwf=Le0z_!HFUu5Ui7$gxtAXrsliF>f}nuu zL&P!|9yOAn#h2bie9ij~1nNV4n4J6kb^7OyuPw?faN0lu`ytwtW@R;@yyI}75(Og? zbz14s@q0HxE8y?L-#UwP_02Sm61>yi-D`|vHoHr;d(fRkfrQk-xGFM-V1U5lEEGFH$SOr#R~7P+>YT1{-rc3R4>-#JP1f{LIY zQv1$#_ne={cOVw%%b%O+&xeO(b~AmtO8$+4;Si-RLONR7sMtj zZe${Io!Mi(^#LN4%5bzHMhclCwLr9R8L>7v(1xTrLDMKgOb|F{ouEh;cKM#KO2*LO z=(&)EqP4Mjh8J!71eMvP}%T4f%hm)qx;$?4@q zFXorXpriN0qL-)mcQF?KH`Cni$)Tu9;z z-o_hYmr+J?JqggBUrCsQk|BcS$vA;^vsh$`xTgOI^sBPMr|p9ATByw!Grks-W867g z)!o%;_%6$w`*M}3qO-M@X#1xtbo*@O;aX@I_Yip`v#kb9s}88J6&o>hiSeU`OR_c= zIUs5>RlYbs15(NwZ#5L6Min7?OLT}@`s(;5a}Q(1;@m5cy*=w zbM5cJbp0?*BZb20!aZt?%WQU+YWJo)i989hgQ1lt W4#5n8#rKQ%Cb(8QIN*|rMerZB9y&e% literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x128x32_32x64x32_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x128x32_32x64x32_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..fa14228a3e287a6edebc5ba2efb590b72491c883 GIT binary patch literal 1681 zcma)6ZBN@U5dNND;T37xP@rl-2$>EEGS*FFFp)~^TjbhqYBg~zzx0J)zjKo21r~8vWll&V6!y!t! zNy_sadM`UkHkv5K^(l2iW`iJbK0CT6yTaL6Q}k`$GsanI#CXP~DfC0M{rS9|oL^t{ zVt$AWI(j=S+CIgI)QUpB8$N=vA!=K_Qz9!;#~)P}Ew8N@+p;H&Z-J~E#_omWL`OwF7n1mb zQATn#3DALGNtK0SA%f-EIDvJuSY!pUP3I9Px5%7N*oEO$P@6Gkd@U%)xO29uyRXwQ zU6#4@$8lxz}Xx>MG4wHA`>25ic(pudeiPuEYIa z*Y!cr!1U-ML<^D`4%}J}69}dhS{H($oTp4mxI%c}{@Z)Bt)YW{|Dq?I+r9qMXbnyp z>lFo5A0w8)@Tj49F~0UL%GZ48fal)F`^kC8U#EZR_}Ze(0I3ZmupgsMp;tx`$~z7V zGLbMMQKyw2AAk1~v;zLw|E-g9uD+Y5k%F_z*++$Ona%7|?O$^zktZRxFs|~%BA6bq S_{f*ej<{rE5&Q@A6*uSr literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x128x32_32x64x32_relu.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x128x32_32x64x32_relu.cu new file mode 100644 index 0000000000000000000000000000000000000000..e07d406cf6f9a86cc68a8bd6431051d7e7c7fdb9 GIT binary patch literal 1685 zcma)6ZBN@U5dPj@;T37xP@rl-2$>EEI@V2NFp)~^o8{VWYt?ZqzqFKJzjKnNNmT^> zklJ^?yXX8oz9Tt9pZ?s9zdt;X$=&$rhWzVydOb83T3G4@N7GH*5EeKkEY~YCmDG`? zu$susD0gZ$F+k3BZUtIXtEHZ!e1=%?iaOUhGM3IWipHZ6;*!ES=OsfXxW!w(G8sqR zljop=6a2(bOEckx?S3G}c`KPep$d=!7zmM?slWy5I?H;om0sOSPilX;+mg5~I+IL# zG8b6}y%(L3wWY=gd&+{;s@v&=m>u2IO&)w|8Tz*E8Dmu#F`fwRa{DlP`T6`ZJioqb z#r%*8I(j>7^zxMcZiY=3R#1Mca<)tt)QDziM2hhkzJ+UeHb_u^aG9X9L0$HlTJxd6 zi}P08FAY~3n3uVJH@pvJ6SQmf&PbKdgLpJew4$-Asnj$U zd=e^*6wS=AgAV)(x;zw25G>CI1lILprgG}*?nj{BT!oml2_-6_GGoleN-}|Q<7`=X zTc>8bD03Ohm8O!+owY#QK3$?aWGfC=GQ+rqC?c6`3}9L|KqWh=QOgz>KN`3s=Teyg zqB>LQOS220q^Pm4paj*LNYFmb3EGiY#n+iz7)uVPQJ1Z&D|KJiEWGJjzP>6^Ug_an zhx@&*>Vv3(>HbB6W>h%=+QZh49AXxAky$h6eiWs~$FP_xek% zH8|;fR1{Esj5vV-QbCDg-1p9k7k%hJ3PUsrGIVsc15`ZQfo+HKSt}^E}fxF zG#nmeqG3#;Mk_5o{%)se3H)>XTajY6zMH0&LhvT|M}u*Z&23X{Uvwi;Bq8-MvNGZk VOb}Rny?SeYo7{AcgywSA`48=LIe-8F literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x32x32_32x32x32_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x32x32_32x32x32_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..4daf64bf8cb97eddeaf40aba93125aef3884f2cc GIT binary patch literal 1686 zcmbVMZBN@U5dPj@;T37xP@n=PgiMD787tEmOr#R~X1TVTT1_0wcKX7v-`Pp?f{K_{ zwW)LGyL-;h<2#UZ^x@a-S0&?U zc=TMV(h7d0siC=W!VLc*#yTUJJE9pN1uzgI70XI4(9jw-@~w=TRz^~}i}scH*U*_{ z(vei;IrJVnA!|dm7Ur0hQf0%zp!C_%J>3?iOAJF_cRgdA1tZ2&p=@Cu;?3RjX8h&q zvKRARX3){wVe#fE`PmJdE{vf3CM(!7Sx_yyp&lv56L<#K`0O-7)vu}gOpX4ZxE~5m zv}8^e>fP{@2*J1Q^j6EPNK5gkyI@6a#n^?GFunnCFQ`AjP63*IGbX%}%u zb3GoQJ)gjrgOU+~<=H8Lb+edf1$9mTG03;bN}sk1#!I0#W6Z@$GJ$btZ&i0!r=dHP zx$xyGQ^jU$4QTtjD|Gv8VRNlBjC+VYlId0hrez0I)M||yw!rvN!y#Fl$Q%$gnJQnB zp93kO#%l>hs8L0PUK1UmmcBZ^$=t(Ou{iU>>>XVt{HkW~0-G-{nW&C*f3E%gUe)zM z)xh-0d4%RPvjVtv0>%)GDzqvjN4ZG3QgDQD$^El;b6Z0P{q9{5kB{HGFJwE4A*zlG*T#?F5RQXIApWCRJ%LfN#sdL9L%hoI0Q2U7N0NQ P8sNIng9D+soDcp2^|Cqx literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x32x32_32x32x32_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x32x32_32x32x32_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..58ae9dbdd0a6fc27a3446d4ac9f5459649503c69 GIT binary patch literal 1680 zcmbVMZBN@U5dNND;T37xP@rN=2$>EEGS*FFFp)~^o8{VWYSnQp+i5Ake&;033o2q- z)uzs!@9sH2kMBS((7RtZ)30}TWOg%sxFUZ}qVX7ILJLd1;Ap-LFNBqx5?1InnM>-( zN?1)~Zj?JV+Ylf#U08uO)M}|SR4foHy`s)V2gcGYr)Ziah)W9loR9#0+Y8m>n>ltHJ88My-?FxIBJbizBntZ;z z7{q*&3Oaf{EO~lJfA+&>ODib9Rs~z7OKL0hgG@9`NYra( zz{l_10Ih+)4}WV?jny~Pv{ER&DgC{{xXR{ssdl%ymne{sdYD!@@d%~|EIwYmHo8q= Lq64A1Ttt5XHX1jr literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x32x32_32x32x32_relu.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x32x32_32x32x32_relu.cu new file mode 100644 index 0000000000000000000000000000000000000000..d36b4d313593f357f72901b87a5aa3eb1170f439 GIT binary patch literal 1684 zcmbVMZBN@U5dNND;T37xP@rN=2$>EEGS*FFFp)~^TjbhqYSnQpzqFKJzjKo21r;%^ zYE$RVclVs1$9EtW=-scI>DRlvY<4q!xXS*VMB_2ax#EU6&d_`tUNY(#$!Mw8*<28t zt+-K{D73W4dK&^nu1dqvh8QJOj>-k1-brF@bf68%3xcLef|ww%&pJVo_ICN2uTI9$ z=;+ZaZ#g^C#E^nJZbttQW1SJy9T5pg0Str)MWtsPjjW;L(8{=NWh|6C?_RU;T6HF< za9Pfa0(!4H$u@>)&CN0OLdj7S`H&sml5Oc-YAE`$>ltHN88M!5WlM9HJbizBntZ;z z7{q)N5;}T4EO~lJfA+&>OT!7fmL*-KOQLx{G$6%z3eUZuc@dNceaM)2)Az0pFJx##z~50*Dpj9t|d#@E2r6=SzTabl9PmuLb28_x9FxcXe8_t1{=I zTy3hk?5q{q;qDsUK3lc9Q5nVqL;=Zcs{zxh2P*EAMhsnIe6Qhzip>DR`&7yVn?3+3YUW?nd_#1rkyR6RXG^f(ZhPj~B0v NZ(Zu>fGZ{z(O)i%IYj^f literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x64x32_32x64x32_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x64x32_32x64x32_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..c122b1653e3a81579a64558020f283112d7ea3e9 GIT binary patch literal 1686 zcmbVMZBN@U5dNND;T37xP@v*P2$>EEGFH$SOr#R~X1TVTT6G-Dc3R4>-#JOs1Qju@ zsuJhUclVs1$G0bE=+m#8@%M)ZGPxN)U6DUW(Qt?|p@pSha5P zA*?1cH_9EFbqJ7|F04Q+YPHlEDrSh4UQy?wJ!5H>Q#4Kz#3hA&&P#?&>E`eG>SP=Z z4xUS0I>8SNwKNxA*ug)AEO=Y8m>r=^0~H88My+?F##lyxcy&j7~2v zdNDtwf{xw~OJ1JRpWU#@+zQICRlyeNoEp&$4M;H_!?SXYPL5-Ab{eCTkevc$==I zn^0^=I&m8jcVyd3g42?$*#jzq!_<&gou$X|)DB zoezovs`n8mFhLq9L5y#`v+7Fk+7P%8@nL-K@;B*UJHBmE?ts)564>|As;~=ZC=(rr z2bpM?lc>{5kB{G*FsWx}IlPHjodYD-`@d#!J TEWTd6H^5C{qCKIxoJD^DBh@+$ literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x64x32_32x64x32_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_32x64x32_32x64x32_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..aee4d687ce206bc33edfbdfe3e474d66e2079696 GIT binary patch literal 1680 zcmbVMZEM>w5dNNDp`|dk;x_b!Qq-)_dR;cwwWAJn--IG5j)*M_NzO}u{Z6vumy*)4 z5N!EQclVs0M|U9S=)AB2^h5>}`cnMrEN zQW!;Kt}}bAw?06osxShrsZmm;sF)*Gx{O*oIM9ZsIYpB=MqElvY=XYLp@TAC-4le@!4sFF3ux#cG^^Zrbhoy z+z$mOS~4dK^=|k{gy7$HdZ%Spq@{S&U9h6IV(dao7~cX{H=N%~C8&vud?pq31>=n7 zdOSdTet{_m#UcdDvr_`=W--qS>YC1D5N?r`K4BMz7eQ^tn2VKU0^`o!s_w2%Lv$!} z>C087ipSO((Drv%==Ryd=2~GG_Yip`)2#+f%MPfhRT(vGf$^h;L$WrJIUs5>RlX#@ z06IdA*W!s#qlXB+rZ_?^admu?xredhZ{{W0JGx5pRn6c{*7D^g6V;LK&$Ykb>$*PZ z8JIq~h|rv7Rsgq7zyN|Fg;s^+C>JSL3XTx2w}1BTY-{MC-(Bc&=X9?>HClt6)_Fw% z)rW`^m>o3~FUHs2dAQ8`HhAuRydRwV{B`=5j;}4sEs)wk0{bCa7iMWSWuoJ7AQJ@> z5_MYX@$q{%Kr7%M{cAw5dNNDp`|dk;x_b!Qq-)_dR;cwwWAJn-;5$Dj)*J^y(CS4{Z6*ymypu2 z5N!EQclVs0M|U9R=)=x=H_>3`QfAam5XBoT1q!e5BMflF~x0(wQJO zU2>yRk!xv>^(F*}OcjQsH8D!43>9-ky_3Y+!GSg;%L$sqF=B$iKI;TU+S|ojzA70* z!=q=fyyfgj6GL+DxEcOKjCDp(cSIy01uzgI6qTNFG_;0}LMx-Dm61^Hvi(fMXW5yc z!lfC{bLhS7BwZV#H8;o93nhnxfe+cyJ=qlAC5ECe+nzC&r4i#PSGF(@@yqw;m+|@a zRWIh7kkHZFVe!jT^0ON@T^LT-tt{v=SrE;;p#dqz6L^-c@!4sFF3ux#cG^^ZCPx2H z+z$mO>ZucjdN=$eLhx@pz0*P#ndgtX3zpYbj9u9h#<#%L4P*C0abn^kp9w`m!6z<# zEJ?1%1GMK?vgM#)gkX7gn!>tS%w<7b(|ru$Eu;@gyHJ7AsAF>RS1T1o-w812;qu{XYby&h7S7er5<-q_xe+#HP~rg zP!v#oh*%2qqlOa1xa*yl7kb}@z{tD ReD&7&)`cD%aK*%Y@E2T+IZprp literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x128x32_64x32x32_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x128x32_64x32x32_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..f83c30bff3a3674bc611a8582d3bf74fc99f6d48 GIT binary patch literal 1687 zcma)6ZBN@U5dNND;T37xP@rl-2$>EEGFH$SOr#R~7P+>YT1{-rc3R4>-#JP1f{LIY zQv1$#_ne={cOVw%%b%O+&xeO(b~AmtO8$+4;Si-RLONR7sMtj zZe${Io!Mi(^#LN4%5bzHMhclCwLr9R8L>7v(1xTrLDMKgOb|F{ouEh;cKM#KO2*LO z=(&)EqP4Mjh8J!71eMvP}%T4f%hm)qx;$?4@q zFXorXpriN0qL-)mcQC0iP4`5 zJQ?@m?j&4kL7hF?KH`Cni$)Tu9;z z-o_hYmr+J?JqggBUrCsQk|BcS$vA;^vsh$`xTgOI^sBPMr|p9ATByw!Grks-W867g z)!o%;_%6$w`*M}3qO-M@X#1xtbo*@O;aX@I_Yip`v#kb9s}88J6&o>hiSeU`OR_c= zIUs5>RlYbs15(NwZ#5L6Min7?OLT}@`s(;5a}Q(1;@m5cy*=w zbM5cJbp0?*BZb20!aZt?%WQU+YWJo)i989hgQ1lt W4#5n8#rKQ%Cb(8QIN*|rMerZY;W|SA literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x128x32_64x32x32_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x128x32_64x32x32_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..300018c5f838143989442b77b3522ac8dd33208c GIT binary patch literal 1681 zcma)6ZBN@U5dNND;T37xP@rl-2$>EEGS*FFFp)~^TjbhqYBg~zzx0J)zjKo21r~8vWll&V6!y!t! zNy_sadM`UkHkv5K^(l2iW`iJbK0CT6yTaL6Q}k`$GsanI#CXP~DfC0M{rS9|oL^t{ zVt$AWI(j=S+CIgNv%aZ~o0X!W7M zvvDu(mxL>I)QUpB8$N=vA!=K_Qz9!;#~)P}Ew8N@+p;H&Z-J~E#_omWL`OwF7n1mb zQATn#3DALGNtK0SA%f-EIDvJuSY!pUP3I9Px5%7N*oEO$P@6Gkd@U%)xO29uyRXwQ zU6#4@$8lxz}Xx>MG4wHA`>25ic(pudeiPuEYIa z*Y!b@!1U-ML<^D`4%}J}69}dhS{H($oTp4mxI%c}{@Z)Bt)YW{|Dq?I+r9qMXbnyp z>lFo5A0w8)@Tj49F~0UL%GZ48fal)F`^kC8U#EZR_}Ze(0I3ZmupgsMp;tx`$~z7V zGLbMMQKyw2AAk1~v;zLw|E-g9uD+Y5k%F_z*++$Ona%7|?O$^zktZRxFs|~%BA6bq S_{f*ej<{rE5&Q=W$v5o) literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x128x32_64x32x32_relu.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x128x32_64x32x32_relu.cu new file mode 100644 index 0000000000000000000000000000000000000000..ff10d17e60cad12b8b7e79efe842589d79b9fe0c GIT binary patch literal 1685 zcma)6ZBN@U5dPj@;T37xP@rl-2$>EEI@V2NFp)~^o8{VWYt?ZqzqFKJzjKnNNmT^> zklJ^?yXX8oz9Tt9pZ?s9zdt;X$=&$rhWzVydOb83T3G4@N7GH*5EeKkEY~YCmDG`? zu$susD0gZ$F+k3BZUtIXtEHZ!e1=%?iaOUhGM3IWipHZ6;*!ES=OsfXxW!w(G8sqR zljop=6a2(bOEckx?S3G}c`KPep$d=!7zmM?slWy5I?H;om0sOSPilX;+mg5~I+IL# zG8b6}y%(L3wWY=gd&+{;s@v&=m>u2IO&)w|8Tz*E8Dmu#F`fwRa{DlP`T6`ZJioqb z#r%*8I(j>7^zxMcZiY=3R#1Mca<)tt)QDziM2hhkzJ+Ueah{<5;4(pHgSzZ9wdO;C zXM-Asnj$U zd=e^*6wS=AgAV)(x;zw25G>CI1lILprgG}*?nj{BT!oml2_-6_GGoleN-}|Q<7`=X zTc>8bD03Ohm8O!+owY#QK3$?aWGfC=GQ+rqC?c6`3}9L|KqWh=QOgz>KN`3s=Teyg zqB>LQOS220q^Pm4paj*LNYFmb3EGiY#n+iz7)uVPQJ1Z&D|KJiEWGJjzP>6^Ug_an zhx@&*>VqzU>HbB6W>h%=+QZh49AXxAky$h6eiWs~$FP_xek% zH8|;fR1{Esj5vV-QbCDg-1p9k7k%hJ3PUsrGIVsc15`ZQfo+HKSt}^E}fxF zG#nmeqG3#;Mk_5o{%)se3H)>XTajY6zMH0&LhvT|M}u*Z&23X{Uvwi;Bq8-MvNGZk VOb}Rny?SeYo7{AcgywSA`40sEEGFH$SOr#R~X1TVTT1_0wc3R4>-`Pp?f{K_{ zwW)LGyL-;h}f;OoT5n_BQ7cIvraOkOS^c_S0&?U zc<@}R(h7c{siC=W!VLc*#yTUJJD?dL1uzgI70XI4(9jw-@~w=TRz^~}^Y)ea*U*_{ z(vei;IrJVnA!|dm7UqzZQf0%zp!C_%J>3+gOAJHbwmoB<1tZ2&p=@Cu;+Na!m+|T4 zMK9)u%%G$9!{V2x#ShQWI?s)hI*tJPv99`5- literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x32x32_64x32x32_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x32x32_64x32x32_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..7c1548d56db34d223a655daa4691b4b35f39773d GIT binary patch literal 1680 zcmbVMZEM>w5dNNDp`|dk;x_b!Qq-)_dR;cwwWAJn-;5$Dj)*M@z2v38eka@UOG)Wi zNF4c2clVs0M|U9R=)=x=H_>3`QfAamfvFoT1q^yrk4Kl2RpC=}Zut zF1eAZD0FU*^)>{EOe(|Cniwf$hSVHU?{Z@8;6NLa6$DM<7%@R$pLK#F?d{?%UzLoZ z;nA~~-g0)Ni6I4d+zkIA#yTUYJ0dwC1uzgIB+WhJXlM-`g;qvQDJ_~JZ5XQ$!URDC8!|4-Zx z2`B2Q6H2}tei9-0ww>N-k*mz}N8JU>Yb(aCYzgCA;Od64dm%Y7u_|Ull29Ta;NKwSffoL$p?AX*Hp|<8UAo2@?`^ zTIuoedpAHU;2*=^DlNzAyJ;FJc&EL4)EJl9>@L;rHg^&Q5)uc~sz@Dz=>dz+S8t7O Mt@Pl4OD5)nzhoLWw*UYD literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x32x32_64x32x32_relu.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x32x32_64x32x32_relu.cu new file mode 100644 index 0000000000000000000000000000000000000000..bff2c6a570cc5e2457699077f02e48d41e4115d7 GIT binary patch literal 1684 zcmbVMZBN@U5dPj@;T37xP@v*P2$>EEGS*FFFp)~^TjbhqYSnQpzqFKJzjKo2r7B`t z)uzs!@9sH2kMBUt(T87mldlgC>GW>$bd&x$8H`3KeB&CH~r87Zn zy5vTsBG=L$>rDs{nJNrNYhsj887k(8dMAmsg9B|ymJ>9IW5fi3ebxzzw6}}5d{r`r zhDXm{dCS?6CWhqPaWnjf80(Cn?ubZ03Sb~aC@MYUXlM-`g;qvQD}0#`ST-3!HuiHm$D6bS{Nxb(3k zxgHPDo=?e^gMtx)<=JTp>t->R1#wOHF^IR2J|yiz2|}pN7&E>Slw;i4Th-mxX~-_i zT!wO$sp7J=mT3FCD|Gv8<>p#t821nbB-4!sOv?_as8t#>XVt`>JN?P1fS|Rr2ac_vhN*?{!@t z^bAa&TtsM2q~*Y^<1mC^P@z>J7|MCZl!7CKD;}P`d)pd1=(m@8+&SIrPmR`Kr*%P5 zK=mPFDa?-=N)Y3&cV1rTeH#MzAwCSxef~QAYsc3XWfn+nAc6f5tqZfXno!sIz)80L5jLU3xn`(QbJBb1biGzuirw+jcfyL*m Px5l?F^x%LiCgy{`T(mh) literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x64x32_64x32x32_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x64x32_64x32x32_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..5bd5e833392367490e9204264622fa9c2df7c1b0 GIT binary patch literal 1686 zcma)6ZBN@U5dPj@;T37xP@v*P2$>EEGFH$SOr#R~7P+>YT1_0wFD>QQ@9d;`K}Art zsdMMMd(O|}+Y@v2<lwqY=uu_stcCaR*Y?E3FB+v>WZ;@Avw`;SIdJ%V7+`s6wk!FjVl2NeM>?m)t*lH@7u(&~LBxxO2Lf-x{sK zPGh~Ifa-n3QkWn$6fefN-g&svyEb_4eY_u^yZm+f*N(3($_$X&Kmz+dT9GAP*J4P$uU;W=I4a4=rG>sITRn9&tj6*iFO|`w#okX65#KO!fQj1`Q Tz~cMGdjnjRYOu#86Z64;JCiyR literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x64x32_64x32x32_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x64x32_64x32x32_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..9d4d2759beeaf7f222a005c250c9909b9ddf883a GIT binary patch literal 1680 zcma)6ZBN@U5dPj@;T37xP@v*P2$>EEGS*FFFp)~^o8{VWYBg~z+vy9xerG4m3o3%D zO`SX6-E)2(-+`Q?Pk-(v-ya^x^ltKWL;jr%MkAC8B@A_fquJKK5LR+ZSfN&ACaEP$ zVHATVvbnpGHUJMKpUFo6iwn7aYx^XXh-QEkz(9ypEGxM{Lu=T`w=!y48A;_X+gIXWLuZmn zM^cgJ(0k~FtPRy#m}6E-l??}j(q~8abX$}zF${g%^^9>Aj2KUavW0nwH$R^@itYFJzLAB_HdZZXn;2B)wi}MKi-`QzX^_d#|p}4ct zUfeGQCt5Nm3-xaJNrd3rc6z5}R-~nP)LpQmwqoo;OBmk*S2vvBOC_j@i+m;(^#$XM z=6XCpdp?0F2gM=;%d=Ag>t->}3hJ89V-RkUl|Eq?h8IC?#+ZwhWCG*P-m31dPD6Ak zbLq=fri#bb8qoH4SLpWH!sc3G821o)B-5=1Ov?_as8ty?Y=QBkhC{M8kvSl0GF84L zzW_Qyjo0FdP@{(ky{0%qEpc^xleven;&0|9**m&Q@>R{?P1f?|B@@+=?$5Qq-|Mx^VPQU`}}qKmyWM3$}N!EKmz+AS{G(%HD#jXa3B)} z6B2b=>GAP*H$W@kpZ(v8gt7W=nnntx)1`aV7>8_jmuh#LJBd6AiGyjC6Ng}Wz~bxG PTccYSdT<~Vm-E4Ydy+T2 literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x64x32_64x32x32_relu.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_1x1_64x64x32_64x32x32_relu.cu new file mode 100644 index 0000000000000000000000000000000000000000..c2ec29a2688a6cadfd6c8aad30a99a043c68e8cf GIT binary patch literal 1684 zcma)6ZBN@U5dPj@;T37xP@v*P2$>EEGS*FFFp)~^TjbhqYSnQpzqFKJzjKo2r7D7| zO`SX6-E)2(-+`E;Pk-(v-ya^*>D}b%CjECZ7>!WI6*t6jhGv`al2Xq|N(;40XM)&t z$&E@yuBAQJn-Cx}RTz%e#3-RMRLl|eP7-Se2ilMPzZx?U*s$>ie zkDk5qma`*G49U6UX83^^>x`i8h)6&RU?4;&Dm~+9Xbl~ORz^)LBca@7`ZjPxJN)87DAF`u+vMIbv3`O6zJ!33OBgRv%Y+)Yam!Hos9i}MJD-`QzX^_dv`p}4ct zUfeGQC+evag?cyqBtr0QJH69F7MbUdx(k-qR*YTQ62`Z{)eU3!LUCf^BA*FGLcu34 zeJn|?#{;zIQ?litV1!_KcACPvSgI zvdc1;p&vI8n=l|~F*VEm}zkgQEa4v3me zl`qLJfReJtu7D!cXd*(pG)JfEEGFH$SOr#R~7P+>YT1{-rc3R4>-#JP1f{LIY zQv1$#_ne={cOVw%%b%O+&xeO(b~AmtO8$+4;Si-RLONR7sMtj zZe${Io!Mi(^#LN4%5bzHMhclCwLr9R8L>7v(1xTrLDMKgOb|F{ouEh;cKM#KO2*LO z=(&)EqP4Mjh8J!71eMvP}%T4f%hm)qx;$?4@q zFXorXpriN0qL-)mcQF?KH`Cni$)Tu9;z z-o_hYmr+J?JqggBUrCsQk|BcS$vA;^vsh$`xTgOI^sBPMr|p9ATByw!Grks-W867g z)!o%;_%6$w`*M}3qO-M@X#1xtbo*@O;aX@I_Yip`v#kb9s}88J6&o>hiSeU`OR_c= zIUs5>RlYbs15(NwZ#5L6Min7?OLT}@`s(;5a}Q(1;@m5cy*=w zbM5cq(B4JLVPAfe+{_e(T1^lc3TPNjk{V+|Vgu>~EEGS*FFFp)~^TjbhqYBg~zzx0J)zjKo21r~8vWll&V6!y!t! zNy_sadM`UkHkv5K^(l2iW`iJbK0CT6yTaL6Q}k`$GsanI#CXP~DfC0M{rS9|oL^t{ zVt$AWI(j=S+CIgI)QUpB8$N=vA!=K_Qz9!;#~)P}Ew8N@+p;H&Z-J~E#_omWL`OwF7n1mb zQATn#3DALGNtK0SA%f-EIDvJuSY!pUP3I9Px5%7N*oEO$P@6Gkd@U%)xO29uyRXwQ zU6#4@$8lxz}Xx>MG4wHA`>25ic(pudeiPuEYIa z*Y!cr!1U-ML?A{E)LIS$2!<3|7lNUjr%Xz?L3rN&+k3OEp#y&ZpeLQnz5dcj4Ne;C z1qDnWBbLDIsF8RrzV(=rwt^qAEQm7S4I)aI}Qsf zkuV`qrCn2^lt@6Yo7#^_r RdiB=mR)q?VxMX4x{0GXeH=O_g literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x128x32_32x64x32_relu.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x128x32_32x64x32_relu.cu new file mode 100644 index 0000000000000000000000000000000000000000..edc33c2362a80a10cb1094fdbe6701b4f0d17994 GIT binary patch literal 1684 zcma)6ZBN@U5dNND;T37xP@rl-2$>EEGS*FFFp)~^TjbhqYBg~zzqFKJzjKo2r7D7c zNbNh{-E)2(-;r3LPk-*F-ya^5+1>Q%CiyoChC`Hc$u+T@q50Nt66zR9Xd&0hTo9A2 zxR!~?Rc21r)(41G7Mi0C(Nf416$?b2&4@9NL;p{{aO>%Cz9(*9iSS_eMAsHYAFc2an%^c%sU^E^2R)$S0Lm};DyG{JI>`YK$ zla%K<^j>z7Y&21d>r?84%mzW=e0FqCwuQ5?rs&(QXN&Lu7D|8#}!kgYsi%M9ZlB9COYRe)*L0Ts4VBbqKTepGNt#>65A zL`|m37v~p1Nm*lGK_O~15u$yXL)4O2$2XaK7%L9vUYEVAt8`!0EWPnYyuN0#fj3ShG z92Qg}VM?M-D?K{??uKXu{ImaCC*^2;H%+4iXO**$3ga@H*`?Y&=uRR}LTq7T<%vZw UKw$Cp>aFpu3Kbl2$;2Y~55jagH2?qr literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x32x32_32x32x32_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x32x32_32x32x32_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..d480d5c420b5ed3677dc1800ebbfe60882a48246 GIT binary patch literal 1685 zcmbVMZBN@U5dPj@;T37xP@n=PgiMD787tEmOr#R~7P+>YT1_0wFMZ+H@9d;`K}Aff z+SIx8-96{$@g0ac`ta*^^6lXvo!(BKuG2p!gV6|OTyjk;XK1$dFDZ45q_mW)bS8*N zmt4zK6e>5zYU=|;CQHrHnrJCxhRQjj&gR6J!GY2wD+rpzF=B$iK4S$%%9+JmzA70* z!=q;>o#E_A5lsqixgP#QjIml!dqi?T3Sb~aNSZsw(a>l*@~w=TRz^bFi}p43uc0$R zg-tVF6wrI?NglGvvI801^#&Zq5y@lvSG7&E>Slw;i4Th-mwY3L4R zE_}JlRI%Aw1KR%X3f(?i*j(!j;~pZ9WV%&=Y1si4wOS*ZE--#na7e}^q5woqrplKT z=RiuR@mfL=YE%)S*F;CCrLT@}GWRf6EY7?zdq-CZzp5F$z~;+K&Z{HcpKE`=S9N_* zH86d09wCq<2Wl;cDFl-WtxCaA!80Z$oFLqB|Lk4d*3bdJyVc{);a+`eqy{^U^@0MX z4-rdYfYeC57GHbk;YRP<;HmfVetPcn*Xdt6zP2bcz-a>s?1yMw>ZMVH@{YrTN+gU) z)M=$h$M4+~t$=^@f2%ai)_2o1N^n*=`=~Gu*~~80?n-wOc@h!}BdbU)f)N6X&zEn_ OZ&j+n0hdh72Y&&|FgdsY literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x32x32_32x32x32_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x32x32_32x32x32_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..db532d619f5e5190917b8e4b29485b4a7cba57c4 GIT binary patch literal 1679 zcmbVMZBN@U5dNND;T37xP@rN=2$>EEGS*FFFp)~^o8{VWYBjMf+i5Ake&;033o2q- z)uzs!@9sH2kMBS((7RtZ)30}TWOg%sxFUZ}qVX7ILJ3Q~;Ap-LFNBqx5~kIf%q4YX zC9EQ{Fu6N6+Ylf#rL904YL!$O(hI~&pHt_e17m4cP&7>v#3hA&&P#?&>6Wkg>SP>^ zjvh-@I>C<&wX_gk*wH`4IBzBMM>Ged00u&&VtL608ad0xp_Osl%2+CY-o29WT6HFw z^du8S0lin9kd39r2z$&*sq#@2l_5L2rCVM4)H3vC*E7a>WyE+Ul+*SudHVkNH2Hja zF^KslbLi;xu;l3>{n-zjEv=yZI@fHKE~ydy(0~-R(&+ky`UVaX%EC zXvw_P>do+z7{Rye^v1|sXQj9|eXydjV(hDyFun$^t~kGyN>H2VVlEX81(Tc>W)h)2 zpNc6D#bN}@(@zA}?P8H@>f6o}5U$S4kgyLUh@dfJ%*9$VfpKqdU3XWfCAune9?I3G zn#aysp&jn7(e1NUn;V5;JU|qX%(ezFt$Lv1PG!`xCC2v#4#~Mx7J#VDRQuB64Ctt8 zycAE2T0O+*CB-r7h->28%ma)yfAb*8!O_){uWMG`bR(aib5S4Z{#^U}y=>}(o`LC; zvlxLG1yJh+%paIhXssnjg~+&4aDs5V!*g(DJ3|lr?mka?hkN;EEGS*FFFp)~^o8{VWYBg~zzqFKJzjKo21r;%^ zYE$RVclVs1$9EtX=-scI>DRkEGP{{RT#-K~(Rhq9p@gAMa5UeB7s5QJgq3Pd=8{^n z5=IeO=-eLbZ3vK=DvdxJYLrwNDi?@(ms4w_18rzlP&7>v#3hA&)=7r6x69Xjbux}d zM~_~4EBKM7h8DsJGx~=Z>x^XXh~|J4z(9ypEcaZXku_`_S{b*kjHPnt-75*NRcDe( zM>0_q(0kPh*%+#|FvrYGm5-vxhwSK+<9 zLCiOqLr1TNB~K6O&wki!X$0lhdC6Akl4{Wp4M;Jb!n1NsPCvz{{ zVEW`NMj%K5)H(q(2<8-8my)AGWLzmYLAc@JIk>i+p$C3WBc z*UEs7-@6%F1Aia>)})%OZ>DLL;GOpFUSnKkv%6Hg3*Ac;NJt$Ftb#ZM0|XWyFJ7D8 My42BuP+TsezXQlP`Tzg` literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x64x32_32x64x32_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x64x32_32x64x32_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..18e8bf12314978ffc6056d68f73c43371206bda7 GIT binary patch literal 1685 zcmbVMZBN@U5dNND;T37xP@v*P2$>EEGFH$SOr#R~X1TVTT1_0wc3R4>-`Ppi1Qju@ zsuJhUclVs1$G0bE=+m#8@%M)ZGPxN)U6DUW(Qt?|p@gAMa5P=}55g)=2`kl-OeM8s zA&erj(78R-YabvpRT_a-)F`PkRL&5qTu!Zx_Ozi{LD4u#5SJA8Stl9Nm7TxmtCMjw zIC!p9Wd%Rb)X+jWVFv#YW1W%A9nc(*0vHI9iscm-XkZN+`c{T*D?_Q=`Sz3e&(N7< z(veIQ1@s;|AuB_*7UqyuQssjvs(f~IPuFGTQp3=yQ=|VU z?oPppR?Nv#eHeZeBlvGSz0oo+vr0VbE?Ci6F?OLPjIV*KE6(qw64WGRF_nt?g16~P z+If=GLXRS};}`gHP%=iaJUJ$?ZWpt>q^|8h0r{4B<ot?O>; zv~-6u=e}HRs@dFH1KR%X8r?2i*xcw0;~pZ9WU|(PY0&`{Z?#4Zn`8W_;gGCNWdVrV zOtmj9&VZCq>XV#{JLiF0-LX|xu}nHcdp(2 zUN-eX)xh-8S&TrE0;qKYrVvajv@9h@g~+&4aDs5h{j+y*w}uY*&8;4F4)^j)D>c|@ zofi}^y^lD70n#AxT72uBg&VzVgQwod`{}vM-=u%-__js41x{N?VBbfp(k!f|OmrL$ zRH9%^qE0J4I(~1aXbt?ce=SLvtskaol~6fdxkrt0$YwXGHdnfn$diyd7+D2z2u27j SzFxdHzjdjjJ)yXqMSlVKIyu4s literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x64x32_32x64x32_id.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_32x64x32_32x64x32_id.cu new file mode 100644 index 0000000000000000000000000000000000000000..7a554763630a041c3b986c96d4d365b149111f0a GIT binary patch literal 1679 zcmbVMZEM>w5dNNDp`|dk;x_b!Qq-)_dR;cwwWAJn--IG5j)*M@NzO}u{Z6*ymy*)4 z5N!EQclVs0M|U9S=)#&+YlgArL90~YL!$e(sRTLpHb%q2gcGgr)Uz#h)W9loRBZUCzhcvyPh%5N+ZTop`5l4@#g#UW_*5q z)rFNT&yG$7$*PZ z8JIq~h!BWT0JUDg{DB#TR$6kDi`guw5dNNDp`|dk;x_b!Qq-)_dR;cwwWAJn-;5$Dj)*M@y(CS4{Z6*ymypu2 z5N!EQclVs0M|U9R=)=x=H_>3`QfAamfvFoT1q!e5BMfl2RpC=}Zut zF1eAZD0FU*^(F*}Oe(|Cniwf$hSVHU?{Z@8;6NLa6$DM<7%@R$pLK#F?d{?%UzLoZ z;nA~~-g0)Ni6I4d+zkIA#yTUYJ0dwC1uzgIB+WhJXlM-`g;qvQD) zaX%!SsHaXS`EK}0gy7$HdZ$IMGS44%7c8%>7`w71jBkOf8^-R1)sgPcwZGr% zx;|(cm_E6P5D1b3wT{CKf;oj&N-$LLj7bS62sb=Dd)Kx#bii-#^tf}l*Pj}x!A|Rf zpn&N^#8Ma^HIkskUGKcS&-*q6>O*{(o%{TC`qz%HEy^r#+CT#PAzCZ5w3<-faX3(k zgdvGKt@P;ly`7;I@Q>lOO3TUmZkk33-f8b1HO6H&yG^yd(49nqgv7zXDpH4FfWYGO Q)mzhBD?K>il8O1?FEPG31ONa4 literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x128x32_64x32x32_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x128x32_64x32x32_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..a97080ac623a34ea224d11b66d3d0d5cf352e1a2 GIT binary patch literal 1686 zcma)6ZBN@U5dNND;T37xP@rl-2$>EEGFH$SOr#R~7P+>YT1{-rc3R4>-#JP1f{LIY zQv1$#_ne={cOVw%%b%O+&xeO(b~AmtO8$+4;Si-RLONR7sMtj zZe${Io!Mi(^#LN4%5bzHMhclCwLr9R8L>7v(1xTrLDMKgOb|F{ouEh;cKM#KO2*LO z=(&)EqP4Mjh8J!71eMvP}%T4f%hm)qx;$?4@q zFXorXpriN0qL-)mcQC0iP4`5 zJQ?@m?j&4kL7hF?KH`Cni$)Tu9;z z-o_hYmr+J?JqggBUrCsQk|BcS$vA;^vsh$`xTgOI^sBPMr|p9ATByw!Grks-W867g z)!o%;_%6$w`*M}3qO-M@X#1xtbo*@O;aX@I_Yip`v#kb9s}88J6&o>hiSeU`OR_c= zIUs5>RlYbs15(NwZ#5L6Min7?OLT}@`s(;5a}Q(1;@m5cy*=w zbM5cq(B4JLVPAfe+{_e(T1^lc3TPNjk{V+|Vgu>~EEGS*FFFp)~^TjbhqYBg~zzx0J)zjKo21r~8vWll&V6!y!t! zNy_sadM`UkHkv5K^(l2iW`iJbK0CT6yTaL6Q}k`$GsanI#CXP~DfC0M{rS9|oL^t{ zVt$AWI(j=S+CIgNv%aZ~o0X!W7M zvvDu(mxL>I)QUpB8$N=vA!=K_Qz9!;#~)P}Ew8N@+p;H&Z-J~E#_omWL`OwF7n1mb zQATn#3DALGNtK0SA%f-EIDvJuSY!pUP3I9Px5%7N*oEO$P@6Gkd@U%)xO29uyRXwQ zU6#4@$8lxz}Xx>MG4wHA`>25ic(pudeiPuEYIa z*Y!b@!1U-ML?A{E)LIS$2!<3|7lNUjr%Xz?L3rN&+k3OEp#y&ZpeLQnz5dcj4Ne;C z1qDnWBbLDIsF8RrzV(=rwt^qAEQm7S4I)aI}Qsf zkuV`qrCn2^lt@6Yo7#^_r RdiB=mR)q?VxMX4x{0HJrH=+Ol literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x128x32_64x32x32_relu.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x128x32_64x32x32_relu.cu new file mode 100644 index 0000000000000000000000000000000000000000..608d5af475f076b2b21bb603aad490fd46fee202 GIT binary patch literal 1684 zcma)6ZBN@U5dNND;T37xP@rl-2$>EEGS*FFFp)~^TjbhqYBg~zzqFKJzjKo2r7D7c zNbNh{-E)2(-;r3LPk-*F-ya^5+1>Q%CiyoChC`Hc$u+T@q50Nt66zR9Xd&0hTo9A2 zxR!~?Rc21r)(41G7Mi0C(Nf416$?b2&4@9NL;p{{aO>%Cz9(*9iSS_eMAsHYAFc2an%^c%sU^E^2R)$S0Lm};DyG{JI>`YK$ zla%K<^j>z7Y&21d>r?84%mzW=e0FqCwuQ5?rs&(QXN&Lu7D|8#}!kgYsi%M9ZlB9COYRe)*L0Ts4VBbqKTepGNt#>65A zL`|m37v~p1Nm*lGK_O~15u$yXL)4O2$2XaK7%L9vUYEVAt8`!0EWPnYyuN0#fj3ShG z92Qg}VM?M-D?K{??uKXu{ImaCC*^2;H%+4iXO**$3ga@H*`?Y&=uRR}LTq7T<%vZw UKw$Cp>aFpu3Kbl2$;2Y~585a>IsgCw literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x32x32_64x32x32_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x32x32_64x32x32_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..bf0add0c2d066e6ca3dad228a6712075f932b2ac GIT binary patch literal 1685 zcmbVMZBN@U5dPj@;T37xP@v*P2$>EEGFH$SOr#R~X1TVTT1_0wFD>QQ@0_H0K}Aff z+SIx8-96{$@$Jbu`t<8&^8Mj~Om8MnSLDypU^GIhP{L3rIGSz33t^s9!V0w_Gf6F3 z3Zsb3b!HFsCIrY-6-J;nHA<=!6?4SA%c!-3J#A>3Q#6TV#3hA&)=7r6w~P0DRWgo- z2hU!4EBJw?hUUTvGyI1b>x^XXfM$Rcz(9ypEc0BTp*3t2S{XI1jHGhs?JEhdWoME} zM^cgJ(0kblSsSXgFo(=bl??|2AF`u+x+%O%3`5_xJ!71eMvSLI*}^=;FSpMxEYyeLM-hT=+v$y#S&@42sJmcAZN=D?En$2OTwQT~FO{GsF7laFG!(o|*3vHG zjOKbgKs!DqUk*w}2$m`;Ht4tM}t+hnk-(8{GWh*z=I>We!C?J_`G+uV;eBi)^AcfXf) zeNZ$oeRLKfkfZ==oq#C>lM1a0$x$v+t`wXg-0|@2UEJ2t0l&S~w5dNNDp`|dk;x_b!Qq-)_dR;cwwWAJn-;5$Dj)*M@z2v38eka@UOG)Wi zNF4c2clVs0M|U9R=)=x=H_>3`QfAamfvFoT1q^yrk4Kl2RpC=}Zut zF1eAZD0FU*^)>{EOe(|Cniwf$hSVHU?{Z@8;6NLa6$DM<7%@R$pLK#F?d{?%UzLoZ z;nA~~-g0)Ni6I4d+zkIA#yTUYJ0dwC1uzgIB+WhJXlM-`g;qvQDJ_~JZ5XQ$!URDC8!|4-Zx z2`B2Q6H2}tei9-0ww>N-k*mz}N8JU>Yb(aCYzgCA;Od64dm%Y7u_|Ull29-)ej>G(c8HH9#FjVl2NeL$iw>vz0SGF~D!0+z!xO2GIpBkybPV0i8faycT zQWzaIlAy)c-g$YK_iYH&hxjlz_xbDeFCAZ7lv&`kfduwLv{q(mHKDxYaG(+i0}^#w z>Cy3fH$N-jAH&}&EvM?cX&NPXr@edB7?;`XF4gWbcM=5>5(mSoNF9RV0gKO9Z%uBk L^x%L?Cgy{`I^;KO literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x32x32_64x32x32_relu.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x32x32_64x32x32_relu.cu new file mode 100644 index 0000000000000000000000000000000000000000..e893e101df919889b2bf00d373f30dac0a41fce8 GIT binary patch literal 1683 zcmbVMZBN@U5dPj@;T37xP@v*P2$>EEGS*FFFp)~^TjbhqYBjMfzqFKJzjKo2r7B`t z)uzs!@9sH2kMBUt(T87mldlgC>GW>$bd&x$8H`3KeB&ABO(wQJO zU2-E+QRv(r>rDs{nN)_OH8E1i45>My-sQyF!GSg;D+rpzF=B$iKI;TU+S|ojzA70* z!=q;}z2)pk6GIB_xEcOKjCDp(cSLeP3Sb~aNSb@b(a;(?3ayNqRz^a)%l0)5uVrU~ z3YTWQD4_SUlXPu}*4!LZFJwL(41CCr?#V`Zml%q^YB4ZrZgWMK$%1I!4Gl;!p1`wojW5n4baonkP1R>&^#8>D zkZ_`&I-%sd;U^J-Z`Bdp;#w4hlvHmS?9ateeF=SHv~l#~@yn`;fE?B?zH5W6bzUP>ykDZ&i0&ry;v6 za~aB2ri#nfTB7amuF&nXm78moVcbI$kW4okFfBWvqE>0d&;`bi8VhE~8ohQC!>PS$tRG)nMJd-td@F0{%m;q~G3Gf0 literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x64x32_64x32x32_hswish.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x64x32_64x32x32_hswish.cu new file mode 100644 index 0000000000000000000000000000000000000000..fa81c504b59015e343108ad29c667cce73de38df GIT binary patch literal 1685 zcma)6ZBN@U5dPj@;T37xP@v*P2$>EEGFH$SOr#R~7P+>YT1{-rc3R4>-`Pp?f{LJO zQ|Hci_ne={wie z51va|TFwqMF{I#*o8c#7tTTeT1Cj$$00SXH(!69G4XvRg-^!?IWhA6KZ(mdY8afkH zxHRKM0lkM#(zPL4b8|>bA@kv2Q2OlXo@`X<5<}6CZO<6z!HDscORLO7{BryJGCsY$ z=*9dJIdt@XSp4#o{O*QL7lspdoh!Ob7DV%Is7H$N1fIb)K0A$&|D7B+RiBB`pNcy< z?#10nIMI?iq2!0*M-hT=+v$xKxynlZsJmc!ZN=DymN32suC5rn7m^bbt70Z3@da;_ zwXlmgCxspl(2h^w%R$Kq!Sdudg>|!-=Zd(d{}|+}^3td6g7H$Q%@{Mj5|m@y*<01! z)@kStWzK!M%2cu0S_9ht?h4&5Ti9Id4C5Xmk7T;hfN9wQ6}4I;hAuFE)Nn}FCZYgD zO{U716lXw6sPR@p5o%Nsp|?awsHLxtZ!-5VRxHlEFndQ=3BRftyujw`YtE}9-JNT9 zzn67=P$n>abQU3yBnN68hbaV;3ayl2sNfls5>62AxPSI8Zfod(-`?tR=Ws8-HBy6} z)_Fkz)BA{}FhFV~UW;$N^KhegZSd6lct1UN`Rnwr9ba3NS>UvR1onNjR%U56p}ga8 zpb`mV5_MYX(eZaXMJwQ6{og7Lv-QI?jS@EEGS*FFFp)~^TjbhqYBjMf+vy9xerG4m3o3%D zO`SX6-E)2(-+`E;Pk-(v-ya^*>D}b%CjECZ7>!WIB{#%zhGtv;lG2iqlq$JOXM)&t z$&E}!p>unzw?05*QW=ic#7H4Cq~?g0E+^Iw4zwXzLC_?Q5fcRVStlscrCq$`tCBG^ zJbEr=X*oO6#E^nJZiXL-vCatUjz|tj0Str)N%N9%G_;0}d@G}-m64F{vVBecYv@c+ z;nIv31@s;|N!NyG&CM|_h0KS8LFu!jd$LufOAJNdc0FU92P4K)F0C>T@#g3AW_*5q z)rR>e$6;tR$( zDfD=N_Iv_U4vIwxmS?9ateeF=SHv})#~@slmp)+^h8IC?#+dPypd91Q-m31dPD6Ak zbLq=fri#bb8qoH4SLpWH!sc3G821o)B-5=1Ov?_as8ty;bb;}shC{M85d|P>GF85$ zxBxmrjo0FdP@{(ky{0%qEpc^xleven;&0|9**m&Q@>R{?P1fS&CFj+V?$5Qq-|M%5?V z=|jX)7#%eduf^BidAQ5_HhAiNyq}x<{B`=5j;}4sEO6RD0{bCaE3>qkP~LGkP>F;A zi8`(H==i&vpB3=W{%@6rsrqi3MhT_UrF+yEhirD2YIm7Ci9893gJD&q4#Dt%#n-F1 OCbw34aKI%K^TB^oS2uA0 literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x64x32_64x32x32_relu.cu b/dnn/src/cuda/conv_bias/int8/kimpl/conv_bias_int8_implicit_gemm_dp4a_ncdiv4hw4_64x64x32_64x32x32_relu.cu new file mode 100644 index 0000000000000000000000000000000000000000..2d661c10c189f5835aeb8f13073e459c2c828727 GIT binary patch literal 1683 zcma)6ZBN@U5dPj@;T37xP@v*P2$>EEGS*FFFp)~^TjbhqYBjMfzqFKJzjKo2r7D7| zO`SX6-E)2(-+`E;Pk-(v-ya^*>D}b%CjECZ7>!WIB{#%zhGv`al2Xq|N|jutGeK;+ zA`lt&EyhMnbyF_B9Q!WoLp4 zmu9>up!c$qbZv;%+#FLcWIh}We8`UO$wqmX7>d4ad&W2~jTle4w8}ihFF&7O#^={p zy_g>&hmPJ3i(j6S-`%k3!f?WFb48cQf@t0i4M;Jbz_WCXFU}(rerKmm)n{V#hvLpo zdvU)coT#TxDEV&qNrd3rc6z5pt}@Rbbr&qJtr)wqC5&%@s~g7dh2+Gbo*@O=2~SK_Yegn(~Sm9%MPfhRT?pLf$^h;L$Wpz1t4lN zRlcOS07}Xly8?<(qlpOZ(j1|dygI(g+{0LLI194u9bF~+s%Gg;*5dUw=hcz!&$Ykb z>$*PZ5|}=@h!6;p1GSFB41zg@R!T5b@Qg_bCkQt@JbTx+HFUsl@ASBHxYu7AsliU` zf}nuuL&Q=TA2pJo#a-{bywCeK1nNV4n4SClb^6ziuPw?faN0lu`ypB@v$UE}-f=ik ziG(4EI<55R_`98<74XmDZyiJ!*{0Y<8P!d!ajt0ttzOfmNgq!2p59 R*Q>Xtw^n*^z$Fv&!GB3@ISBv& literal 0 HcmV?d00001 diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_128x128x64_64x64x64_hswish.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_128x128x64_64x64x64_hswish.cu index 73c7b13a27abb8c07de223b6294cbbaaac70fc04..de60503ae217820451e4b262ad47a4b027991215 100644 GIT binary patch delta 80 zcmeC?ozFYrgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$C#1pxigA2Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqJ1pxXHA0_|* delta 35 qcmbQq+sZrP1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CasjL9Yk_z$w diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_128x128x64_64x64x64_relu.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_128x128x64_64x64x64_relu.cu index 8b7fffa483af20cdc1e54b3773ca0490e278eb90..f18a6ddb964bcdf34ac1efc2d781c2e80d0779b4 100644 GIT binary patch delta 80 zcmeC=oy$AngG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cz1pxe!A2I*{ delta 35 qcmbQs+sQlO1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CanXCZJstW!9 diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_128x256x64_64x64x64_hswish.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_128x256x64_64x64x64_hswish.cu index f8eec15f48d8739088d8c695bd0e48a0edbe0ebc..6326c4c36a40646475af4a714a0bc4f61f4a1531 100644 GIT binary patch delta 80 zcmeC?ozFYrgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$C#1pxigA2Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqJ1pxXHA0_|* delta 35 qcmbQq+sZrP1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CasjL9Yk_z$w diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_128x256x64_64x64x64_relu.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_128x256x64_64x64x64_relu.cu index 09309517424c75fb1cea595fe9fb08816c3712ad..2eb13965480ca37169e662a8828f62a5e236161f 100644 GIT binary patch delta 80 zcmeC=oy$AngG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cz1pxe!A2I*{ delta 35 qcmbQs+sQlO1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CanXCZJstW!9 diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_128x64x64_64x32x64_hswish.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_128x64x64_64x32x64_hswish.cu index 88314309ea4014a7ec433179b4d41ee3fdd1fc26..6eaaa06cdc665cf7c0d270c5012d31f1bfc00e21 100644 GIT binary patch delta 80 zcmeC;oyR-jgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cx1pxgqA2k2~ delta 35 qcmbQo+r>NK1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaS*!re@CyL| diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_128x64x64_64x32x64_id.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_128x64x64_64x32x64_id.cu index 04802d4b6e8a914c98284075ad28f93bb19bebf3..622b4076b8555b64dc8a1382d0d267220567714b 100644 GIT binary patch delta 80 zcmZqSoxwZdgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqF1pxVRA0q$& delta 35 qcmbQi+rm5H1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaDXaj?ObYJ+ diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_128x64x64_64x32x64_relu.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_128x64x64_64x32x64_relu.cu index 45261b6a28a2804cf512a72838d67e7eb2b9317c..138b2448f74a8986e190c5708f50282f29337f0b 100644 GIT binary patch delta 80 zcmeC+ox?lfgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cv1pxc;A1?p^ delta 35 qcmbQk+rc~G1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=Ca8LR-zWD5HL diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_128x128x64_64x64x64_hswish.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_128x128x64_64x64x64_hswish.cu index 9d39f7d39503912a3a30e12ce4cda9906826725c..b15fb04b7f0169d352a6956ac21788fe9600a2d8 100644 GIT binary patch delta 80 zcmeC-UBElxgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cw1pxkWA3Fd5 delta 35 qcmZ3$+rvBI1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaIjjK9dKs@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqH1pxZ7A1MF; delta 35 qcmbQm+r~TL1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaX{-Rt*b4Ok diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_128x128x64_64x64x64_relu.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_128x128x64_64x64x64_relu.cu index 108fcb4114ef0ee0e1ca7e7010336eba6f9f24c8..ec643d8faccb95a6280979cac66255c0555f9b03 100644 GIT binary patch delta 80 zcmeC;oyR-jgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cx1pxgqA2k2~ delta 35 qcmbQo+r>NK1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaS*!re@CyL| diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_128x256x64_64x64x64_hswish.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_128x256x64_64x64x64_hswish.cu index 17f1e4377341b46cc17ce5a4082b53d19f067d53..f9e4e4ee12fa9ae13696b05c37e297129ee43031 100644 GIT binary patch delta 80 zcmeC-UBElxgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cw1pxkWA3Fd5 delta 35 qcmZ3$+rvBI1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaIjjK9dKs@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqH1pxZ7A1MF; delta 35 qcmbQm+r~TL1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaX{-Rt*b4Ok diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_128x256x64_64x64x64_relu.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_128x256x64_64x64x64_relu.cu index 00f9d4635fbefe4f8e79e6a67d9690c23aac98e8..110aad932cdd68eaed9c0091b4060b62e0a7e756 100644 GIT binary patch delta 80 zcmeC;oyR-jgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cx1pxgqA2k2~ delta 35 qcmbQo+r>NK1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaS*!re@CyL| diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_128x64x64_64x32x64_hswish.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_128x64x64_64x32x64_hswish.cu index b19470b7327d173115838e7dd3eb46c9bceb704b..7cc97c6969d92b73faf39eb526a9cb02bb9332fb 100644 GIT binary patch delta 80 zcmeC?ozFYrgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$C#1pxigA2Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqJ1pxXHA0_|* delta 35 qcmbQq+sZrP1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CasjL9Yk_z$w diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_128x64x64_64x32x64_relu.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_128x64x64_64x32x64_relu.cu index 627d40249dc3a1f3e87a8d11ac876640037c377d..7f8ef9cf0b1360bc599b9285734f9f2429a2f456 100644 GIT binary patch delta 80 zcmeC=oy$AngG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cz1pxe!A2I*{ delta 35 qcmbQs+sQlO1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CanXCZJstW!9 diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_256x128x64_64x64x64_hswish.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_256x128x64_64x64x64_hswish.cu index 079f5160d35ced08e0fcb46797ee41f73fbd38a3..adbb4fee5cc937583e63a7ea75f216aef93b92ce 100644 GIT binary patch delta 80 zcmeC-UBElxgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cw1pxkWA3Fd5 delta 35 qcmZ3$+rvBI1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaIjjK9dKs@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqH1pxZ7A1MF; delta 35 qcmbQm+r~TL1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaX{-Rt*b4Ok diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_256x128x64_64x64x64_relu.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_256x128x64_64x64x64_relu.cu index e7e97dabf6bffc93c8b75758b052b5b921e4ec13..853352752ff8701777dcc465179eb5336b4609bd 100644 GIT binary patch delta 80 zcmeC;oyR-jgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cx1pxgqA2k2~ delta 35 qcmbQo+r>NK1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaS*!re@CyL| diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_32x64x64_32x16x64_hswish.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_32x64x64_32x16x64_hswish.cu index 191c8dc08da9af2aad9811ab0c4a01f9e6181028..a52c6a2339d772f6d6ca9ab4c06461c8d8330686 100644 GIT binary patch delta 80 zcmeC;oyR-jgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cx1pxgqA2k2~ delta 35 qcmbQo+r>NK1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaS*!re@CyL| diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_32x64x64_32x16x64_id.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_32x64x64_32x16x64_id.cu index 44d6e8a16afc9bb7a57fd562647e52fd3db81797..b017b2888708fbe200d5001aa3b73dd1ca20e975 100644 GIT binary patch delta 80 zcmZqSoxwZdgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqF1pxVRA0q$& delta 35 qcmbQi+rm5H1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaDXaj?ObYJ+ diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_32x64x64_32x16x64_relu.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_32x64x64_32x16x64_relu.cu index 01c928f0fd69353dfdc647c40a240ce2749f47ea..fb982a3224a780cbf816dd001ca3509242eab844 100644 GIT binary patch delta 80 zcmeC+ox?lfgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cv1pxc;A1?p^ delta 35 qcmbQk+rc~G1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=Ca8LR-zWD5HL diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_64x128x64_32x64x64_hswish.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_64x128x64_32x64x64_hswish.cu index e5ba9d050236f3b25ba56dd563c9f9691a498957..1599ee0187b163fd3688c6b7e0a063b9d92e9222 100644 GIT binary patch delta 80 zcmeC?ozFYrgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$C#1pxigA2Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqJ1pxXHA0_|* delta 35 qcmbQq+sZrP1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CasjL9Yk_z$w diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_64x128x64_32x64x64_relu.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_64x128x64_32x64x64_relu.cu index 92ff2ce412cf396bb4ee06889742b13fbcae7ef4..5fbd49e16bd139a28f9709fe5cd011e95fd6f994 100644 GIT binary patch delta 80 zcmeC=oy$AngG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cz1pxe!A2I*{ delta 35 qcmbQs+sQlO1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CanXCZJstW!9 diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_64x64x64_32x32x64_hswish.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_64x64x64_32x32x64_hswish.cu index 843d8d3885a934786f04513444e1258c98d91e00..3aab172c51ab39d5279edc9d1dd8458c471b8651 100644 GIT binary patch delta 80 zcmeC;oyR-jgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cx1pxgqA2k2~ delta 35 qcmbQo+r>NK1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaS*!re@CyL| diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_64x64x64_32x32x64_id.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_64x64x64_32x32x64_id.cu index 9c7aebc25cacca00b3edc74cb9001e96a9558095..8db95857fd372f6e9e503585f12a169065fbd033 100644 GIT binary patch delta 80 zcmZqSoxwZdgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqF1pxVRA0q$& delta 35 qcmbQi+rm5H1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaDXaj?ObYJ+ diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_64x64x64_32x32x64_relu.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_1x1_64x64x64_32x32x64_relu.cu index cd22a31e1579b0051392bb296d1d097f79686caa..ccf7790f88458ef7f73c0545afe4749af9f542f8 100644 GIT binary patch delta 80 zcmeC+ox?lfgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cv1pxc;A1?p^ delta 35 qcmbQk+rc~G1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=Ca8LR-zWD5HL diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_256x128x64_64x64x64_hswish.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_256x128x64_64x64x64_hswish.cu index 522e568f49818ed23742fb4981729c10ab26fae2..6d37a375656d980db6e5172326c2d6dbe9a36d41 100644 GIT binary patch delta 80 zcmeC?ozFYrgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$C#1pxigA2Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqJ1pxXHA0_|* delta 35 qcmbQq+sZrP1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CasjL9Yk_z$w diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_256x128x64_64x64x64_relu.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_256x128x64_64x64x64_relu.cu index a17bafd4aeaa6d348e3210789562a38aa0849b5c..445b6529f96134929acdd9059cac387d5c7ec8a9 100644 GIT binary patch delta 80 zcmeC=oy$AngG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cz1pxe!A2I*{ delta 35 qcmbQs+sQlO1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CanXCZJstW!9 diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_32x64x64_32x16x64_hswish.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_32x64x64_32x16x64_hswish.cu index adc33220084b8a8b67b833425e6f0252afacae1c..0299ac329f60c82e21900c7ba4e04fb6499b982f 100644 GIT binary patch delta 80 zcmeC=oy$AngG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cz1pxe!A2I*{ delta 35 qcmbQs+sQlO1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CanXCZJstW!9 diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_32x64x64_32x16x64_id.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_32x64x64_32x16x64_id.cu index 433becc0c0a401e8b764eb6e8db8797aabc1c38c..9cc576d2ad67d2c85d01005c42398fa79c67489f 100644 GIT binary patch delta 80 zcmZqXoz6SqgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqK1pxTbA0Pk# delta 35 qcmbQv+sr%R1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=Ca$*cg&1`6x| diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_32x64x64_32x16x64_relu.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_32x64x64_32x16x64_relu.cu index 752b2a5c369a1bdb173b0247806cb70c496fd7b6..7e528493fa71f938f96631434ecd1447d2fc67f2 100644 GIT binary patch delta 80 zcmZqYoy|MpgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqL1pxa|A1nX> delta 35 qcmbQu+s-@T1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=Ca>8t?E9t!vX diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_64x128x64_32x64x64_hswish.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_64x128x64_32x64x64_hswish.cu index 671eb7115f593d0bad6653b3e216e14bcd241370..ec9f4d3654990e686c69c829ed09cf2521541a49 100644 GIT binary patch delta 80 zcmeC;oyR-jgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cx1pxgqA2k2~ delta 35 qcmbQo+r>NK1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaS*!re@CyL| diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_64x128x64_32x64x64_id.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_64x128x64_32x64x64_id.cu index e62e4d4f14aa4799076fc5c97ba98277bd100211..e3d3e9ebe61a44cd2c3a2a34c058d12b054a8c57 100644 GIT binary patch delta 80 zcmZqSoxwZdgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqF1pxVRA0q$& delta 35 qcmbQi+rm5H1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CaDXaj?ObYJ+ diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_64x128x64_32x64x64_relu.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_64x128x64_32x64x64_relu.cu index 74decadf9f42d1ec5b52e651bebb3b759dd4e902..6d47926c2580ccab3a7b6ccd753aa33eef277d7b 100644 GIT binary patch delta 80 zcmeC+ox?lfgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cv1pxc;A1?p^ delta 35 qcmbQk+rc~G1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=Ca8LR-zWD5HL diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_64x64x64_32x32x64_hswish.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_64x64x64_32x32x64_hswish.cu index 74003cdde1cd183ce73d645f8b4eb57155f17f4e..deea9c4c6ff52a1ac0fd6859d98076b3d6836d54 100644 GIT binary patch delta 80 zcmeC=oy$AngG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$$Cz1pxe!A2I*{ delta 35 qcmbQs+sQlO1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=CanXCZJstW!9 diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_64x64x64_32x32x64_id.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_64x64x64_32x32x64_id.cu index 30530fc0de8e7200fb1eb52f17c18b0d17a7c4a6..6bb39d1484cd1a4a8f3080e3ad0abbc455c2bf65 100644 GIT binary patch delta 80 zcmZqXoz6SqgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqK1pxTbA0Pk# delta 35 qcmbQv+sr%R1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=Ca$*cg&1`6x| diff --git a/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_64x64x64_32x32x64_relu.cu b/dnn/src/cuda/conv_bias/int8_imma/kimpl/conv_bias_int8_implicit_gemm_imma_ncdiv32hw32_64x64x64_32x32x64_relu.cu index 60ece24b2476564520fbb998e586cee56cdeae63..d7ce6666c70094a57c231a498335c05ecf2be4ab 100644 GIT binary patch delta 80 zcmZqYoy|MpgG+HyvVL-DN}_&peqLF8Qf6YYer8^Y1%ew7;>Ks@7UX0mXO_gLr{?Cy ZCzqDwBo-IPmlq`#6r>hyR$xqL1pxa|A1nX> delta 35 qcmbQu+s-@T1CyTKWOhb5fy~_8#Q41Al*}??ql|K6qs=Ca>8t?E9t!vX diff --git a/dnn/test/common/conv_bias.cpp b/dnn/test/common/conv_bias.cpp index 31e71aa5..030bf12c 100644 --- a/dnn/test/common/conv_bias.cpp +++ b/dnn/test/common/conv_bias.cpp @@ -748,7 +748,7 @@ void check_conv_bias(DType src_dtype, DType filter_dtype, DType bias_dtype, bias_rng = std::make_unique(-50, 50); checker.set_epsilon(1 + 1e-3) .set_max_avg_error(1e-1) - .set_max_avg_biased_error(1e-1); + .set_max_avg_biased_error(1e-3); } else if (src_dtype.enumv() == DTypeEnum::Float16) { rng = std::make_unique(2.f); megdnn_assert(bias_dtype.enumv() == DTypeEnum::Float16); diff --git a/dnn/test/cuda/conv_bias_int8.cpp b/dnn/test/cuda/conv_bias_int8.cpp index cbc475e2..256cf15f 100644 --- a/dnn/test/cuda/conv_bias_int8.cpp +++ b/dnn/test/cuda/conv_bias_int8.cpp @@ -18,8 +18,6 @@ #include "test/cuda/fixture.h" #include "test/cuda/utils.h" - -#define MEGDNN_WITH_BENCHMARK 1 #define V1(x) #x #define V(x) V1(x) @@ -1228,8 +1226,17 @@ TEST_F(CUDA, BENCHMARK_CUTLASS_CONV_BIAS_INT8_NCHW32) { param::ConvBias::Format::NCHW32); } #endif -#endif +TEST_F(CUDA, BENCHMARK_CUTLASS_CONV_BIAS_INT8_NCHW4) { + require_compute_capability(6, 1); + benchmark_target_algo( + handle_cuda(), get_resnet50_bench_args(64), + dtype::QuantizedS8{1.2f}, dtype::QuantizedS8{1.3f}, + dtype::QuantizedS32{1.2f * 1.3f}, dtype::QuantizedS8{1.0f}, + "INT8_NCHW4_DOTPROD_IMPLICIT_GEMM", + param::ConvBias::Format::NCHW4); +} +#endif } // namespace test } // namespace megdnn diff --git a/src/opr/test/dnn/convolution.cpp b/src/opr/test/dnn/convolution.cpp index 5c6c76f8..973977ee 100644 --- a/src/opr/test/dnn/convolution.cpp +++ b/src/opr/test/dnn/convolution.cpp @@ -2031,4 +2031,96 @@ TEST(TestOprDNN, HeuristicReproducible) { #undef get_shp } +#if MGB_CUDA +TEST(TestOprDNN, ConvolutionMultiCompNode) { + REQUIRE_GPU(2); + auto cn0 = CompNode::load("gpu0:0"), cn1 = CompNode::load("gpu0:1"); + cn0.activate(); + auto&& prop = CompNodeEnv::from_comp_node(cn0).cuda_env().device_prop; + auto sm_ver = prop.major * 10 + prop.minor; + if (sm_ver < 61) { + printf("This testcast ignored due to insufficient cuda cap(got: %d, " + "expected: %d)\n", + sm_ver, 61); + return; + } + + HostTensorGenerator gen; + auto mkvar = [&gen](const char* name, const TensorShape& shp, + const DType& dtype, + std::shared_ptr graph, + const CompNode& cn) { + return opr::TypeCvt::make( + opr::Host2DeviceCopy::make(*graph, gen(shp, cn)).rename(name), + dtype); + }; + auto mkcvar = [&gen](const char* name, const TensorShape& shp, + const DType& dtype, + std::shared_ptr graph, + const CompNode& cn) { + return opr::TypeCvt::make( + opr::SharedDeviceTensor::make(*graph, *gen(shp, cn)) + .rename(name), + dtype); + }; + + auto graph0 = ComputingGraph::make(); + graph0->options().graph_opt_level = 0; + auto graph1 = ComputingGraph::make(); + graph1->options().graph_opt_level = 0; + auto make_func = [&gen, &mkvar, &mkcvar]( + std::shared_ptr graph, + const CompNode& cn) { + using Policy = opr::ConvBias::ExecutionPolicy; + using S = Policy::Strategy; + auto x = mkvar("x", {64, 32, 28, 28, 4}, dtype::QuantizedS8(2.5f), + graph, cn), + w1 = mkcvar("w1", {256, 32, 5, 5, 4}, dtype::QuantizedS8(2.5f), + graph, cn), + b1 = mkcvar("b1", {1, 64, 1, 1, 4}, dtype::QuantizedS32(6.25f), + graph, cn), + w2 = mkcvar("w2", {256, 64, 3, 3, 4}, dtype::QuantizedS8(2.5f), + graph, cn), + b2 = mkcvar("b2", {1, 64, 1, 1, 4}, dtype::QuantizedS32(6.25f), + graph, cn); + opr::ConvBias::Param param; + param.format = opr::ConvBias::Param::Format::NCHW4; + param.nonlineMode = opr::ConvBias::Param::NonlineMode::RELU; + param.stride_h = param.stride_w = 2; + param.pad_h = param.pad_w = 2; + Policy policy; + policy.strategy = S::PROFILE; + + auto y = opr::ConvBias::make( + x, w1, b1, param, policy, + OperatorNodeConfig{dtype::QuantizedS8(2.5f)}); + param.stride_h = param.stride_w = 1; + param.pad_h = param.pad_w = 1; + y = opr::ConvBias::make(y, w2, b2, param, policy, + OperatorNodeConfig{dtype::QuantizedS8(2.5f)}); + return y; + }; + auto y0 = make_func(graph0, cn0); + auto y1 = make_func(graph1, cn1); + HostTensorND host_y0, host_y1; + auto func0 = graph0->compile({make_callback_copy(y0, host_y0)}); + auto func1 = graph1->compile({make_callback_copy(y1, host_y1)}); + + auto worker = [&func0, &func1](int wid) { + static int const iter_num = 1000; + if (wid == 0) { + for (int i = 0; i < iter_num; ++i) + func0->execute(); + } else { + for (int i = 0; i < iter_num; ++i) + func1->execute(); + } + }; + std::thread worker0(worker, 0); + std::thread worker1(worker, 1); + worker0.join(); + worker1.join(); +} +#endif + // vim: syntax=cpp.doxygen foldmethod=marker foldmarker=f{{{,f}}} -- GitLab