Skip to content

Commit

Permalink
[NNAdapter] part of qnn (#9106)
Browse files Browse the repository at this point in the history
  • Loading branch information
zhupengyang committed Jun 9, 2022
1 parent ef8d53c commit b3e73d4
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 56 deletions.
3 changes: 3 additions & 0 deletions cmake/configure.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,9 @@ if (LITE_WITH_NNADAPTER)
if (NNADAPTER_WITH_NVIDIA_TENSORRT)
add_definitions("-DNNADAPTER_WITH_NVIDIA_TENSORRT")
endif()
if (NNADAPTER_WITH_QUALCOMM_QNN)
add_definitions("-DNNADAPTER_WITH_QUALCOMM_QNN")
endif()
if (NNADAPTER_WITH_KUNLUNXIN_XTCL)
add_definitions("-DNNADAPTER_WITH_KUNLUNXIN_XTCL")
endif()
Expand Down
4 changes: 4 additions & 0 deletions lite/backends/nnadapter/nnadapter/src/driver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ if(NNADAPTER_WITH_NVIDIA_TENSORRT)
add_subdirectory(nvidia_tensorrt)
endif()

if(NNADAPTER_WITH_QUALCOMM_QNN)
add_subdirectory(qualcomm_qnn)
endif()

if(NNADAPTER_WITH_KUNLUNXIN_XTCL)
add_subdirectory(kunlunxin_xtcl)
endif()
Expand Down
2 changes: 2 additions & 0 deletions lite/core/test/arena/framework.cc
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ std::shared_ptr<lite::OpLite> TestCase::CreateSubgraphOp() {
#elif defined(NNADAPTER_WITH_NVIDIA_TENSORRT)
ctx_->As<NNAdapterContext>().SetNNAdapterDeviceNames(scope,
{"nvidia_tensorrt"});
#elif defined(DNNADAPTER_WITH_QUALCOMM_QNN)
ctx_->As<NNAdapterContext>().SetNNAdapterDeviceNames(scope, {"qualcomm_qnn"});
#elif defined(NNADAPTER_WITH_KUNLUNXIN_XTCL)
ctx_->As<NNAdapterContext>().SetNNAdapterDeviceNames(scope,
{"kunlunxin_xtcl"});
Expand Down
106 changes: 50 additions & 56 deletions lite/kernels/nnadapter/converter/all.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,10 @@
#ifndef __NNADAPTER_CONVERTER_ALL_H__ // NOLINT
#define __NNADAPTER_CONVERTER_ALL_H__

REGISTER_CONVERTER(
batch_norm,
ConvertBatchNorm,
"huawei_ascend_npu,verisilicon_"
"timvx,cambricon_mlu,huawei_kirin_npu,intel_openvino,nvidia_tensorrt,"
"eeasytech_npu");
REGISTER_CONVERTER(batch_norm,
ConvertBatchNorm,
"huawei_ascend_npu,verisilicon_timvx,cambricon_mlu,huawei_"
"kirin_npu,intel_openvino,nvidia_tensorrt,eeasytech_npu");
REGISTER_CONVERTER(cast,
ConvertCast,
"huawei_ascend_npu,cambricon_mlu,huawei_kirin_npu,nvidia_"
Expand All @@ -29,34 +27,31 @@ REGISTER_CONVERTER(clip,
ConvertClip,
"huawei_ascend_npu,cambricon_mlu,verisilicon_timvx,huawei_"
"kirin_npu,nvidia_tensorrt,intel_openvino");
REGISTER_CONVERTER(
conv2d,
ConvertConv2D,
"builtin_device,rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,imagination_nna,cambricon_mlu,verisilicon_"
"timvx,kunlunxin_xtcl,android_nnapi,nvidia_tensorrt,intel_openvino,"
"eeasytech_npu");
REGISTER_CONVERTER(
depthwise_conv2d,
ConvertConv2D,
"builtin_device,rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,imagination_nna,verisilicon_timvx,"
"kunlunxin_xtcl,android_nnapi,nvidia_tensorrt,intel_openvino,eeasytech_"
"npu");
REGISTER_CONVERTER(conv2d,
ConvertConv2D,
"builtin_device,rockchip_npu,mediatek_apu,huawei_kirin_npu,"
"huawei_ascend_npu,amlogic_npu,imagination_nna,cambricon_"
"mlu,verisilicon_timvx,kunlunxin_xtcl,android_nnapi,nvidia_"
"tensorrt,intel_openvino,qualcomm_qnn,eeasytech_npu");
REGISTER_CONVERTER(depthwise_conv2d,
ConvertConv2D,
"builtin_device,rockchip_npu,mediatek_apu,huawei_kirin_npu,"
"huawei_ascend_npu,amlogic_npu,imagination_nna,verisilicon_"
"timvx,kunlunxin_xtcl,android_nnapi,nvidia_tensorrt,intel_"
"openvino,qualcomm_qnn,eeasytech_npu");
REGISTER_CONVERTER(deformable_conv,
ConvertDeformableConv,
"huawei_ascend_npu,cambricon_mlu,intel_openvino");
REGISTER_CONVERTER(dropout,
ConvertDropout,
"huawei_ascend_npu,huawei_kirin_npu,verisilicon_timvx,"
"nvidia_tensorrt,cambricon_mlu,intel_openvino");
REGISTER_CONVERTER(
pool2d,
ConvertPool,
"builtin_device,rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,imagination_nna,cambricon_mlu,verisilicon_"
"timvx,kunlunxin_xtcl,android_nnapi,nvidia_tensorrt,intel_openvino,"
"eeasytech_npu");
REGISTER_CONVERTER(pool2d,
ConvertPool,
"builtin_device,rockchip_npu,mediatek_apu,huawei_kirin_npu,"
"huawei_ascend_npu,amlogic_npu,imagination_nna,cambricon_"
"mlu,verisilicon_timvx,kunlunxin_xtcl,android_nnapi,nvidia_"
"tensorrt,intel_openvino,qualcomm_qnn,eeasytech_npu");
REGISTER_CONVERTER(matmul,
ConvertMatmul,
"huawei_ascend_npu,huawei_kirin_npu,imagination_nna,"
Expand All @@ -65,13 +60,12 @@ REGISTER_CONVERTER(matmul_v2,
ConvertMatmulV2,
"huawei_ascend_npu,huawei_kirin_npu,imagination_nna,intel_"
"openvino,android_nnapi,nvidia_tensorrt,intel_openvino");
REGISTER_CONVERTER(
softmax,
ConvertSoftmax,
"builtin_device,rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,imagination_nna,cambricon_mlu,verisilicon_"
"timvx,kunlunxin_xtcl,android_nnapi,nvidia_tensorrt,intel_"
"openvino,google_xnnpack");
REGISTER_CONVERTER(softmax,
ConvertSoftmax,
"builtin_device,rockchip_npu,mediatek_apu,huawei_kirin_npu,"
"huawei_ascend_npu,amlogic_npu,imagination_nna,cambricon_"
"mlu,verisilicon_timvx,kunlunxin_xtcl,android_nnapi,nvidia_"
"tensorrt,intel_openvino,qualcomm_qnn,google_xnnpack");
REGISTER_CONVERTER(cumsum, ConvertCumsum, "huawei_ascend_npu,intel_openvino");
REGISTER_CONVERTER(conv2d_transpose,
ConvertConv2dTranspose,
Expand All @@ -83,13 +77,13 @@ REGISTER_CONVERTER(reshape,
"rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,imagination_nna,verisilicon_timvx,"
"kunlunxin_xtcl,cambricon_mlu,android_nnapi,nvidia_tensorrt,"
"intel_openvino,google_xnnpack");
"intel_openvino,qualcomm_qnn,google_xnnpack");
REGISTER_CONVERTER(reshape2,
ConvertReshape,
"rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,imagination_nna,verisilicon_timvx,"
"kunlunxin_xtcl,cambricon_mlu,android_nnapi,nvidia_tensorrt,"
"intel_openvino,google_xnnpack");
"intel_openvino,qualcomm_qnn,google_xnnpack");
REGISTER_CONVERTER(
unsqueeze,
ConvertUnsqueeze,
Expand All @@ -107,7 +101,7 @@ REGISTER_CONVERTER(elementwise_add,
"rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,imagination_nna,cambricon_mlu,verisilicon_"
"timvx,kunlunxin_xtcl,android_nnapi,nvidia_tensorrt,intel_"
"openvino,google_xnnpack,eeasytech_npu");
"openvino,qualcomm_qnn,google_xnnpack,eeasytech_npu");
REGISTER_CONVERTER(elementwise_sub,
ConvertElementwise,
"rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
Expand Down Expand Up @@ -180,13 +174,12 @@ REGISTER_CONVERTER(sigmoid,
"npu,amlogic_npu,cambricon_mlu,verisilicon_timvx,kunlunxin_"
"xtcl,android_nnapi,nvidia_tensorrt,intel_openvino,"
"eeasytech_npu");
REGISTER_CONVERTER(
relu,
ConvertUnaryActivations,
"rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,imagination_nna,cambricon_mlu,verisilicon_"
"timvx,kunlunxin_xtcl,android_nnapi,nvidia_tensorrt,intel_openvino,"
"eeasytech_npu");
REGISTER_CONVERTER(relu,
ConvertUnaryActivations,
"rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,imagination_nna,cambricon_mlu,verisilicon_"
"timvx,kunlunxin_xtcl,android_nnapi,nvidia_tensorrt,intel_"
"openvino,qualcomm_qnn,eeasytech_npu");
REGISTER_CONVERTER(
relu6,
ConvertUnaryActivations,
Expand Down Expand Up @@ -295,12 +288,12 @@ REGISTER_CONVERTER(transpose,
ConvertTranspose,
"rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,verisilicon_timvx,kunlunxin_xtcl,android_"
"nnapi,nvidia_tensorrt,intel_openvino");
"nnapi,nvidia_tensorrt,intel_openvino,qualcomm_qnn");
REGISTER_CONVERTER(transpose2,
ConvertTranspose,
"rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,verisilicon_timvx,kunlunxin_xtcl,android_"
"nnapi,nvidia_tensorrt,intel_openvino");
"nnapi,nvidia_tensorrt,intel_openvino,qualcomm_qnn");
REGISTER_CONVERTER(
shape,
ConvertShape,
Expand Down Expand Up @@ -375,17 +368,18 @@ REGISTER_CONVERTER(flatten2,
"rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,verisilicon_timvx,kunlunxin_xtcl,cambricon_"
"mlu,android_nnapi,nvidia_tensorrt,intel_openvino");
REGISTER_CONVERTER(flatten_contiguous_range,
ConvertFlattenContiguousRange,
"rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,verisilicon_timvx,kunlunxin_xtcl,cambricon_"
"mlu,android_nnapi,nvidia_tensorrt,intel_openvino");
REGISTER_CONVERTER(
fc,
ConvertFC,
"builtin_device,rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,imagination_nna,cambricon_mlu,verisilicon_"
"timvx,kunlunxin_xtcl,android_nnapi,nvidia_tensorrt,intel_openvino");
flatten_contiguous_range,
ConvertFlattenContiguousRange,
"rockchip_npu,mediatek_apu,huawei_kirin_npu,huawei_ascend_"
"npu,amlogic_npu,verisilicon_timvx,kunlunxin_xtcl,cambricon_"
"mlu,android_nnapi,nvidia_tensorrt,intel_openvino,qualcomm_qnn");
REGISTER_CONVERTER(fc,
ConvertFC,
"builtin_device,rockchip_npu,mediatek_apu,huawei_kirin_npu,"
"huawei_ascend_npu,amlogic_npu,imagination_nna,cambricon_"
"mlu,verisilicon_timvx,kunlunxin_xtcl,android_nnapi,nvidia_"
"tensorrt,intel_openvino,qualcomm_qnn");
REGISTER_CONVERTER(norm,
ConvertNorm,
"huawei_ascend_npu,cambricon_mlu,huawei_kirin_npu");
Expand Down
12 changes: 12 additions & 0 deletions lite/tools/build_linux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ NNADAPTER_VERISILICON_TIMVX_VIV_SDK_URL="http://paddlelite-demo.bj.bcebos.com/de
NNADAPTER_WITH_NVIDIA_TENSORRT=OFF
NNADAPTER_NVIDIA_CUDA_ROOT="/usr/local/cuda"
NNADAPTER_NVIDIA_TENSORRT_ROOT="/usr/local/tensorrt"
NNADAPTER_WITH_QUALCOMM_QNN=OFF
NNADAPTER_QUALCOMM_QNN_SDK_ROOT="/usr/local/qnn"
NNADAPTER_WITH_KUNLUNXIN_XTCL=OFF
NNADAPTER_KUNLUNXIN_XTCL_SDK_ROOT=""
NNADAPTER_KUNLUNXIN_XTCL_SDK_URL=""
Expand Down Expand Up @@ -232,6 +234,8 @@ function init_cmake_mutable_options {
-DNNADAPTER_WITH_NVIDIA_TENSORRT=$NNADAPTER_WITH_NVIDIA_TENSORRT \
-DNNADAPTER_NVIDIA_CUDA_ROOT=$NNADAPTER_NVIDIA_CUDA_ROOT \
-DNNADAPTER_NVIDIA_TENSORRT_ROOT=$NNADAPTER_NVIDIA_TENSORRT_ROOT \
-DNNADAPTER_WITH_QUALCOMM_QNN=$NNADAPTER_WITH_QUALCOMM_QNN \
-DNNADAPTER_QUALCOMM_QNN_SDK_ROOT=$NNADAPTER_QUALCOMM_QNN_SDK_ROOT \
-DNNADAPTER_WITH_KUNLUNXIN_XTCL=$NNADAPTER_WITH_KUNLUNXIN_XTCL \
-DNNADAPTER_KUNLUNXIN_XTCL_SDK_ROOT=$NNADAPTER_KUNLUNXIN_XTCL_SDK_ROOT \
-DNNADAPTER_KUNLUNXIN_XTCL_SDK_URL=$NNADAPTER_KUNLUNXIN_XTCL_SDK_URL \
Expand Down Expand Up @@ -618,6 +622,14 @@ function main {
NNADAPTER_NVIDIA_TENSORRT_ROOT="${i#*=}"
shift
;;
--nnadapter_with_qualcomm_qnn=*)
NNADAPTER_WITH_QUALCOMM_QNN="${i#*=}"
shift
;;
--nnadapter_qualcomm_qnn_sdk_root=*)
NNADAPTER_QUALCOMM_QNN_SDK_ROOT="${i#*=}"
shift
;;
--nnadapter_with_kunlunxin_xtcl=*)
NNADAPTER_WITH_KUNLUNXIN_XTCL="${i#*=}"
shift
Expand Down

0 comments on commit b3e73d4

Please sign in to comment.