From e328cc9ae3c60b94a821b828bb0459e7ff0aa427 Mon Sep 17 00:00:00 2001 From: "Wang, Hao3" Date: Thu, 27 Apr 2023 14:41:04 +0800 Subject: [PATCH] fix Signed-off-by: Wang, Hao3 --- clang/lib/DPCT/APINamesCUDNN.inc | 12 +++++++++++ clang/lib/DPCT/APINames_cuDNN.inc | 3 +++ clang/lib/DPCT/DNNAPIMigration.cpp | 5 ++++- clang/test/dpct/dnn/convolution_v7.cu | 29 +++++++++++++++++++++++++++ 4 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 clang/test/dpct/dnn/convolution_v7.cu diff --git a/clang/lib/DPCT/APINamesCUDNN.inc b/clang/lib/DPCT/APINamesCUDNN.inc index 6bd7d1e06d19..cc7539064df6 100644 --- a/clang/lib/DPCT/APINamesCUDNN.inc +++ b/clang/lib/DPCT/APINamesCUDNN.inc @@ -615,6 +615,18 @@ ASSIGNABLE_FACTORY(ASSIGN_FACTORY_ENTRY( ASSIGNABLE_FACTORY(ASSIGN_FACTORY_ENTRY( "cudnnGetConvolutionBackwardFilterWorkspaceSize", DEREF(ARG_WC(6)), ARG("0"))) +ASSIGNABLE_FACTORY(ASSIGN_FACTORY_ENTRY( + "cudnnGetConvolutionBackwardFilterAlgorithm", DEREF(ARG_WC(7)), + ARG("dnnl::algorithm::convolution_auto"))) + +ASSIGNABLE_FACTORY(ASSIGN_FACTORY_ENTRY( + "cudnnGetConvolutionBackwardDataAlgorithm", DEREF(ARG_WC(7)), + ARG("dnnl::algorithm::convolution_auto"))) + +ASSIGNABLE_FACTORY(ASSIGN_FACTORY_ENTRY( + "cudnnGetConvolutionForwardAlgorithm", DEREF(ARG_WC(7)), + ARG("dnnl::algorithm::convolution_auto"))) + // RNN Layer REMOVE_API_FACTORY_ENTRY("cudnnCreateRNNDescriptor") diff --git a/clang/lib/DPCT/APINames_cuDNN.inc b/clang/lib/DPCT/APINames_cuDNN.inc index f323a5ecc87c..99814aa4f959 100644 --- a/clang/lib/DPCT/APINames_cuDNN.inc +++ b/clang/lib/DPCT/APINames_cuDNN.inc @@ -175,9 +175,11 @@ ENTRY(cudnnGetConvolution2dDescriptor, cudnnGetConvolution2dDescriptor, true, NO ENTRY(cudnnGetConvolution2dForwardOutputDim, cudnnGetConvolution2dForwardOutputDim, true, NO_FLAG, P4, "comment") ENTRY(cudnnGetConvolutionBackwardDataAlgorithmMaxCount, cudnnGetConvolutionBackwardDataAlgorithmMaxCount, false, NO_FLAG, P4, "comment") ENTRY(cudnnGetConvolutionBackwardDataAlgorithm_v7, cudnnGetConvolutionBackwardDataAlgorithm_v7, false, NO_FLAG, P4, "comment") +ENTRY(cudnnGetConvolutionBackwardDataAlgorithm, cudnnGetConvolutionBackwardDataAlgorithm, true, NO_FLAG, P4, "comment") ENTRY(cudnnGetConvolutionBackwardDataWorkspaceSize, cudnnGetConvolutionBackwardDataWorkspaceSize, true, NO_FLAG, P4, "comment") ENTRY(cudnnGetConvolutionForwardAlgorithmMaxCount, cudnnGetConvolutionForwardAlgorithmMaxCount, false, NO_FLAG, P4, "comment") ENTRY(cudnnGetConvolutionForwardAlgorithm_v7, cudnnGetConvolutionForwardAlgorithm_v7, false, NO_FLAG, P4, "comment") +ENTRY(cudnnGetConvolutionForwardAlgorithm, cudnnGetConvolutionForwardAlgorithm, true, NO_FLAG, P4, "comment") ENTRY(cudnnGetConvolutionForwardWorkspaceSize, cudnnGetConvolutionForwardWorkspaceSize, true, NO_FLAG, P4, "comment") ENTRY(cudnnGetConvolutionGroupCount, cudnnGetConvolutionGroupCount, true, NO_FLAG, P4, "comment") ENTRY(cudnnGetConvolutionMathType, cudnnGetConvolutionMathType, false, NO_FLAG, P4, "comment") @@ -205,6 +207,7 @@ ENTRY(cudnnFindConvolutionBackwardFilterAlgorithmEx, cudnnFindConvolutionBackwar ENTRY(cudnnFusedOpsExecute, cudnnFusedOpsExecute, false, NO_FLAG, P4, "comment") ENTRY(cudnnGetConvolutionBackwardFilterAlgorithmMaxCount, cudnnGetConvolutionBackwardFilterAlgorithmMaxCount, false, NO_FLAG, P4, "comment") ENTRY(cudnnGetConvolutionBackwardFilterAlgorithm_v7, cudnnGetConvolutionBackwardFilterAlgorithm_v7, false, NO_FLAG, P4, "comment") +ENTRY(cudnnGetConvolutionBackwardFilterAlgorithm, cudnnGetConvolutionBackwardFilterAlgorithm, true, NO_FLAG, P4, "comment") ENTRY(cudnnGetConvolutionBackwardFilterWorkspaceSize, cudnnGetConvolutionBackwardFilterWorkspaceSize, true, NO_FLAG, P4, "comment") ENTRY(cudnnGetFusedOpsConstParamPackAttribute, cudnnGetFusedOpsConstParamPackAttribute, false, NO_FLAG, P4, "comment") ENTRY(cudnnGetFusedOpsVariantParamPackAttribute, cudnnGetFusedOpsVariantParamPackAttribute, false, NO_FLAG, P4, "comment") diff --git a/clang/lib/DPCT/DNNAPIMigration.cpp b/clang/lib/DPCT/DNNAPIMigration.cpp index 088d2be04e55..0be774f079ae 100644 --- a/clang/lib/DPCT/DNNAPIMigration.cpp +++ b/clang/lib/DPCT/DNNAPIMigration.cpp @@ -192,7 +192,10 @@ void CuDNNAPIRule::registerMatcher(ast_matchers::MatchFinder &MF) { "cudnnCreateDropoutDescriptor", "cudnnSetDropoutDescriptor", "cudnnGetDropoutDescriptor", "cudnnDropoutGetReserveSpaceSize", "cudnnRestoreDropoutDescriptor", "cudnnDropoutForward", "cudnnDropoutBackward", - "cudnnDestroyDropoutDescriptor", "cudnnGetVersion"); + "cudnnDestroyDropoutDescriptor", "cudnnGetVersion", + "cudnnGetConvolutionBackwardFilterAlgorithm", + "cudnnGetConvolutionBackwardDataAlgorithm", + "cudnnGetConvolutionForwardAlgorithm"); }; MF.addMatcher( diff --git a/clang/test/dpct/dnn/convolution_v7.cu b/clang/test/dpct/dnn/convolution_v7.cu new file mode 100644 index 000000000000..314b25ae1fdc --- /dev/null +++ b/clang/test/dpct/dnn/convolution_v7.cu @@ -0,0 +1,29 @@ +// UNSUPPORTED: cuda-11.0, cuda-11.1, cuda-11.2, cuda-11.3, cuda-11.4, cuda-11.5, cuda-11.6, cuda-11.7, cuda-11.8, cuda-12.0, cuda-12.1 +// UNSUPPORTED: v11.0, v11.1, v11.2, v11.3, v11.4, v11.5, v11.6, v11.7, v11.8, v12.0, v12.1 +// RUN: dpct -in-root %S -out-root %T/convolution_v7 %S/convolution_v7.cu --cuda-include-path="%cuda-path/include" -- -std=c++14 -x cuda --cuda-host-only +// RUN: FileCheck --input-file %T/convolution_v7/convolution_v7.dp.cpp --match-full-lines %s +#include +#include +#include +#include + +int main() { + cudnnHandle_t handle; + cudnnTensorDescriptor_t dataTensor; + cudnnFilterDescriptor_t filterTensor; + cudnnConvolutionDescriptor_t covdes; + // CHECK: dnnl::algorithm bwd_filter_a; + // CHECK: dnnl::algorithm bwd_data_a; + // CHECK: dnnl::algorithm fwd_a; + cudnnConvolutionBwdFilterAlgo_t bwd_filter_a; + cudnnConvolutionBwdDataAlgo_t bwd_data_a; + cudnnConvolutionFwdAlgo_t fwd_a; + // CHECK: bwd_filter_a = dnnl::algorithm::convolution_auto; + cudnnGetConvolutionBackwardFilterAlgorithm(handle, dataTensor, dataTensor, covdes, filterTensor, CUDNN_CONVOLUTION_BWD_FILTER_PREFER_FASTEST, 10, &bwd_filter_a); + // CHECK: bwd_data_a = dnnl::algorithm::convolution_auto; + cudnnGetConvolutionBackwardDataAlgorithm(handle, filterTensor, dataTensor, covdes, dataTensor, CUDNN_CONVOLUTION_BWD_DATA_PREFER_FASTEST, 10, &bwd_data_a); + // CHECK: fwd_a = dnnl::algorithm::convolution_auto; + cudnnGetConvolutionForwardAlgorithm(handle, dataTensor, filterTensor, covdes, dataTensor, CUDNN_CONVOLUTION_FWD_PREFER_FASTEST, 10, &fwd_a); + + return 0; +}