From patchwork Thu Nov 9 08:13:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Chen, Wenbin" X-Patchwork-Id: 44580 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4fa4:b0:181:818d:5e7f with SMTP id gh36csp332728pzb; Thu, 9 Nov 2023 00:13:34 -0800 (PST) X-Google-Smtp-Source: AGHT+IFdUo70nA9A4sNlEC4WbpIJ+YZEdrQ8YNQJEDfK5oT/0dLMdxVL4qYfNAumQDUZNMucC9qG X-Received: by 2002:a17:906:410e:b0:9e4:f83a:340 with SMTP id j14-20020a170906410e00b009e4f83a0340mr557902ejk.52.1699517614626; Thu, 09 Nov 2023 00:13:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699517614; cv=none; d=google.com; s=arc-20160816; b=cXX7R2YM85cnbLue8JBNBCRwnG1lN4vVgOGHT5+SS9xUvuIkBm/rz3yxQ3p8oY5yuX pOVwAvdg4wkwXiK+Se/HhE4RtRFYtBzFz8S98nkr2u5stDV6sAkA4BDvqECZ48MCoC1+ j6V692snbfasWXODRJddVAIneXum1WaLEf093n0gCBdiDAFLQsWgbT2w5JfViYbWQ9vT dp6MOexuKV8bRkvpmMldwWmgeRHRG2hHI+zn+IAH97yCMqhEHMBcV7Pgc+va05pHZf3d 9hlN26laim+q8LCNFXYQhxMWghKgdLQiMG2/XPQ5wjiV6o4bu6clBnEWSH0XYjNSLI5L A28g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=EYymTqGHZ5VtVZ3Y6xYiuZarp0LTPPnTGL4jxZxOV3s=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=LWRUujOg6iCIjCPFoLKxVmR4dX1+G0Ferk3fc6i+yOmOldTGG1cBOwrAZZaO3OhCSo HBa9UWwEfyLNRG1gkT3ImTlUtqBBg53SbrmPxrc405BEhKEBnOPz5a8TpTvusESIRdxU ULcB07itQfmtGFN4SzLNr9jJHOYE4vghKTA5Seaj//ZVkYhpKpvnVRujwvZJGoYwskiZ E/gP9zHVpXao22w2QXjTixh1svmH1NTjqGwFWDJO4Z8YTKqFxRBFlxqC+veo/6CPV0HH RsXdvu0c2KdhOyBfXA4fzTJJXKRNfC6OB+bsLWk3bQr/mqyQdShKm93yQNoLvp3WKlhE qDaw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=MwD9u4Pz; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id jg41-20020a170907972900b0099d977a31fdsi3332297ejc.899.2023.11.09.00.13.26; Thu, 09 Nov 2023 00:13:34 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=MwD9u4Pz; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 389E768CAF4; Thu, 9 Nov 2023 10:13:22 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.9]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0739E68C5D4 for ; Thu, 9 Nov 2023 10:13:14 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1699517601; x=1731053601; h=from:to:subject:date:message-id:mime-version: content-transfer-encoding; bh=jS1Qew/h+tHZYtRNWJJ3RRks6mRekSq9aP82zvZZOcM=; b=MwD9u4Pz1C0/jVejlx4vAU1dJreGePO9JaUxglFRe0plfcQGsyjI4suz KNYwBel4LDHKtMl23Bf9mBuqSBYjZ9cSRsXI4egqKbMVoXeKqEYZi8T1I h99nkA8hCvQqVem7AiylsvTBDzQjZmEEuVxBDIS/DXCSyFe21O7VafkZH OHi8IrFT0LITb2XFqY/6AM2o+1WsBCT3T2SaK9G7pRi3IxFqZpBFDCo3a 64mYxJSgwLhRF+CgP31TpjvdxvxJxUo7KpYcgwaXa4msdTIx9ZpqREh8H T9FX0G4qS4yUnUKM3cISSdyQyDubN/1UbvrxGwbEmYKGRdHzQuJMHUc8f g==; X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="8587967" X-IronPort-AV: E=Sophos;i="6.03,288,1694761200"; d="scan'208";a="8587967" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orvoesa101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Nov 2023 00:13:13 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="766916398" X-IronPort-AV: E=Sophos;i="6.03,288,1694761200"; d="scan'208";a="766916398" Received: from wenbin-z390-aorus-ultra.sh.intel.com ([10.239.156.43]) by fmsmga007.fm.intel.com with ESMTP; 09 Nov 2023 00:13:11 -0800 From: wenbin.chen-at-intel.com@ffmpeg.org To: ffmpeg-devel@ffmpeg.org Date: Thu, 9 Nov 2023 16:13:10 +0800 Message-Id: <20231109081310.192517-1-wenbin.chen@intel.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] libavfilter/dnn/openvino: Reduce redundant memory allocation X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: JRgbvOuGYsS3 From: Wenbin Chen We can directly get data ptr from tensor, so that extral memory allocation can be removed. Signed-off-by: Wenbin Chen --- libavfilter/dnn/dnn_backend_openvino.c | 42 +++++++++++++------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/libavfilter/dnn/dnn_backend_openvino.c b/libavfilter/dnn/dnn_backend_openvino.c index 10520cd765..d3af8c34ce 100644 --- a/libavfilter/dnn/dnn_backend_openvino.c +++ b/libavfilter/dnn/dnn_backend_openvino.c @@ -204,7 +204,6 @@ static int fill_model_input_ov(OVModel *ov_model, OVRequestItem *request) ov_tensor_t* tensor = NULL; ov_shape_t input_shape = {0}; ov_element_type_e precision; - void *input_data_ptr = NULL; #else dimensions_t dims; precision_e precision; @@ -249,12 +248,6 @@ static int fill_model_input_ov(OVModel *ov_model, OVRequestItem *request) input.width = dims[2]; input.channels = dims[3]; input.dt = precision_to_datatype(precision); - input.data = av_malloc(input.height * input.width * input.channels * get_datatype_size(input.dt)); - if (!input.data) { - ov_shape_free(&input_shape); - return AVERROR(ENOMEM); - } - input_data_ptr = input.data; #else status = ie_infer_request_get_blob(request->infer_request, task->input_name, &input_blob); if (status != OK) { @@ -297,6 +290,26 @@ static int fill_model_input_ov(OVModel *ov_model, OVRequestItem *request) request->lltasks[i] = lltask; request->lltask_count = i + 1; task = lltask->task; +#if HAVE_OPENVINO2 + if (tensor) + ov_tensor_free(tensor); + status = ov_tensor_create(precision, input_shape, &tensor); + ov_shape_free(&input_shape); + if (status != OK) { + av_log(ctx, AV_LOG_ERROR, "Failed to create tensor from host prt.\n"); + return ov2_map_error(status, NULL); + } + status = ov_tensor_data(tensor, &input.data); + if (status != OK) { + av_log(ctx, AV_LOG_ERROR, "Failed to get input data.\n"); + return ov2_map_error(status, NULL); + } + status = ov_infer_request_set_input_tensor(request->infer_request, tensor); + if (status != OK) { + av_log(ctx, AV_LOG_ERROR, "Failed to Set an input tensor for the model.\n"); + return ov2_map_error(status, NULL); + } +#endif switch (ov_model->model->func_type) { case DFT_PROCESS_FRAME: if (task->do_ioproc) { @@ -317,24 +330,11 @@ static int fill_model_input_ov(OVModel *ov_model, OVRequestItem *request) av_assert0(!"should not reach here"); break; } -#if HAVE_OPENVINO2 - status = ov_tensor_create_from_host_ptr(precision, input_shape, input.data, &tensor); - ov_shape_free(&input_shape); - if (status != OK) { - av_log(ctx, AV_LOG_ERROR, "Failed to create tensor from host prt.\n"); - return ov2_map_error(status, NULL); - } - status = ov_infer_request_set_input_tensor(request->infer_request, tensor); - if (status != OK) { - av_log(ctx, AV_LOG_ERROR, "Failed to Set an input tensor for the model.\n"); - return ov2_map_error(status, NULL); - } -#endif input.data = (uint8_t *)input.data + input.width * input.height * input.channels * get_datatype_size(input.dt); } #if HAVE_OPENVINO2 - av_freep(&input_data_ptr); + ov_tensor_free(tensor); #else ie_blob_free(&input_blob); #endif