From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A5A2AA034F; Mon, 11 Oct 2021 15:30:51 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 398CD40E01; Mon, 11 Oct 2021 15:30:51 +0200 (CEST) Received: from mail-io1-f46.google.com (mail-io1-f46.google.com [209.85.166.46]) by mails.dpdk.org (Postfix) with ESMTP id F2E1840142; Mon, 11 Oct 2021 15:30:49 +0200 (CEST) Received: by mail-io1-f46.google.com with SMTP id r134so8632433iod.11; Mon, 11 Oct 2021 06:30:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=g/lQDUxCNSulktkjAcX3ASBfAXzDgPYlF1atTYBW25M=; b=MSyaP8DXWPo4epGgyIt9bor/wEyubmptGXglSv7FbI7k+JYMWVPhfESnw+sQKBSjs0 ikFi0N7xxCuiCs2u+rluH4HhE9wdUo0uXeNyF6EBsksnwxeGJWD1oKj+HV8hgNdYkOyA Ld5aMhXoPNUazMyr37uZ9+PskvWkk+4q8kJ3z3a1KJfmN3Va37r1ZKMh2YwxK+Vum9EK 4ex+4gdymNEUoPD+Ri/jI3fBBelssCmJDQreqzDUdux17CTzIA+88/u7KeR+7apitd9X oW9nNVloxZmWzpLwa9VHEA1fgTZUKTP/AzkUfjag5woQZ20KOJwAyOrLenVGKJvP9udc FJmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=g/lQDUxCNSulktkjAcX3ASBfAXzDgPYlF1atTYBW25M=; b=i0y7UX5B9xLjLudZB54Yr0T58QdqnSIXI4t0boENhIVfLXBNwQQRi4Cvnm+mwJRRZR rnKkECEQrIbjryPLiEI6MVzd38yZjB1Pegq6FZoSkZyn3jrySu9DCkE59nYMLKpZyLFh HugGYgXe+AkKJLAeofgDKM08HcU+p6IIO7WRdy56VHwfpEGrB2KoTKuJmnnf/UoEE9oE LGQZzD5uplng/7gtaRNxnsaUoIW3s+6MjAQLt7uxpyxaRXcN3hpUoTDjN4+m0QOrY5EQ Kd1pJh79OKM8EgWsUbLDJKc+hjmy5tvPo/55IcQv5bHMQrCQf+ke2ug8KckUhE8ro1xh K6fQ== X-Gm-Message-State: AOAM5338ob4sC9P2h+0Sr0/BTjcZ5b8X6EIW+TneZoGk+ByKdcz07Cqe 5FIMNkTPFWdGlT2O3J4rsQLf95igM5nNI2ocJGvYGY25Hi4= X-Google-Smtp-Source: ABdhPJzZVRgG0yNLQPs47PESt8so2F/W5CBlquHgc2VUMbVn+3SV10ZU3bSYt/8aws0WbYEQvJo0i5Zl33bFfzlSBCE= X-Received: by 2002:a02:1d02:: with SMTP id 2mr9852883jaj.15.1633959048815; Mon, 11 Oct 2021 06:30:48 -0700 (PDT) MIME-Version: 1.0 References: <20210602203531.2288645-1-thomas@monjalon.net> <68083401.ybZ649KAnY@thomas> <8296426.PREcJboN3U@thomas> In-Reply-To: <8296426.PREcJboN3U@thomas> From: Jerin Jacob Date: Mon, 11 Oct 2021 19:00:22 +0530 Message-ID: To: Thomas Monjalon Cc: techboard@dpdk.org, Elena Agostini , dpdk-dev Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [PATCH v3 0/9] GPU library X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Mon, Oct 11, 2021 at 6:14 PM Thomas Monjalon wrote: > > 11/10/2021 13:41, Jerin Jacob: > > On Mon, Oct 11, 2021 at 3:57 PM Thomas Monjalon wrote: > > > 11/10/2021 11:29, Jerin Jacob: > > > > On Mon, Oct 11, 2021 at 2:42 PM Thomas Monjalon wrote: > > > > > 11/10/2021 10:43, Jerin Jacob: > > > > > > On Mon, Oct 11, 2021 at 1:48 PM Thomas Monjalon wrote: > > > > > > > 10/10/2021 12:16, Jerin Jacob: > > > > > > > > On Fri, Oct 8, 2021 at 11:13 PM wrote: > > > > > > > > > > > > > > > > > > From: eagostini > > > > > > > > > > > > > > > > > > In heterogeneous computing system, processing is not only in the CPU. > > > > > > > > > Some tasks can be delegated to devices working in parallel. > > > > > > > > > > > > > > > > > > The goal of this new library is to enhance the collaboration between > > > > > > > > > DPDK, that's primarily a CPU framework, and GPU devices. > > > > > > > > > > > > > > > > > > When mixing network activity with task processing on a non-CPU device, > > > > > > > > > there may be the need to put in communication the CPU with the device > > > > > > > > > in order to manage the memory, synchronize operations, exchange info, etc.. > > > > > > > > > > > > > > > > > > This library provides a number of new features: > > > > > > > > > - Interoperability with GPU-specific library with generic handlers > > > > > > > > > - Possibility to allocate and free memory on the GPU > > > > > > > > > - Possibility to allocate and free memory on the CPU but visible from the GPU > > > > > > > > > - Communication functions to enhance the dialog between the CPU and the GPU > > > > > > > > > > > > > > > > In the RFC thread, There was one outstanding non technical issues on this, > > > > > > > > > > > > > > > > i.e > > > > > > > > The above features are driver specific details. Does the DPDK > > > > > > > > _application_ need to be aware of this? > > > > > > > > > > > > > > I don't see these features as driver-specific. > > > > > > > > > > > > That is the disconnect. I see this as more driver-specific details > > > > > > which are not required to implement an "application" facing API. > > > > > > > > > > Indeed this is the disconnect. > > > > > I already answered but it seems you don't accept the answer. > > > > > > > > Same with you. That is why I requested, we need to get opinions from others. > > > > Some of them already provided opinions in RFC. > > > > > > This is why I Cc'ed techboard. > > > > Yes. Indeed. > > > > > > > > > > First, this is not driver-specific. It is a low-level API. > > > > > > > > What is the difference between low-level API and driver-level API. > > > > > > The low-level API provides tools to build a feature, > > > but no specific feature. > > > > > > > > > For example, If we need to implement application facing" subsystems like bbdev, > > > > > > If we make all this driver interface, you can still implement the > > > > > > bbdev API as a driver without > > > > > > exposing HW specific details like how devices communicate to CPU, how > > > > > > memory is allocated etc > > > > > > to "application". > > > > > > > > > > There are 2 things to understand here. > > > > > > > > > > First we want to allow the application using the GPU for needs which are > > > > > not exposed by any other DPDK API. > > > > > > > > > > Second, if we want to implement another DPDK API like bbdev, > > > > > then the GPU implementation would be exposed as a vdev in bbdev, > > > > > using the HW GPU device being a PCI in gpudev. > > > > > They are two different levels, got it? > > > > > > > > Exactly. So what is the point of exposing low-level driver API to > > > > "application", > > > > why not it is part of the internal driver API. My point is, why the > > > > application needs to worry > > > > about, How the CPU <-> Device communicated? CPU < -> Device memory > > > > visibility etc. > > > > > > There are two reasons. > > > > > > 1/ The application may want to use the GPU for some application-specific > > > needs which are not abstracted in DPDK API. > > > > Yes. Exactly, That's where my concern, If we take this path, What is > > the motivation to contribute to DPDK abstracted subsystem APIs which > > make sense for multiple vendors and every > > Similar stuff applicable for DPU, > > A feature-specific API is better of course, there is no lose of motivation. > But you cannot forbid applications to have their own features on GPU. it still can use it. We don't need DPDK APIs for that. > > > Otherway to put, if GPU is doing some ethdev offload, why not making > > as ethdev offload in ethdev spec so that > > another type of device can be used and make sense for application writters. > > If we do ethdev offload, yes we'll implement it. > And we'll do it on top of gpudev, which is the only way to share the CPU. > > > For example, In the future, If someone needs to add ML(Machine > > learning) subsystem and enable a proper subsystem > > interface that is good for DPDK. If this path is open, there is no > > motivation for contribution and the application > > will not have a standard interface doing the ML job across multiple vendors. > > Wrong. It does remove the motivation, it is a first step to build on top of it. IMO, No need to make driver API to the public to feature API. > > > That's is the only reason why saying it should not APPLICATION > > interface it can be DRIVER interface. > > > > > > > > 2/ This API may also be used by some feature implementation internally > > > in some DPDK libs or drivers. > > > We cannot skip the gpudev layer because this is what allows generic probing > > > of the HW, and gpudev allows to share the GPU with multiple features > > > implemented in different libs or drivers, thanks to the "child" concept. > > > > Again, why do applications need to know it? It is similar to `bus` > > kind of this where it sharing the physical resouces. > > No it's not a bus, it is a device that we need to share. > > > > > > > > > aka DPDK device class has a fixed personality and it has API to deal > > > > > > > > with abstracting specific application specific > > > > > > > > end user functionality like ethdev, cryptodev, eventdev irrespective > > > > > > > > of underlying bus/device properties. > > > > > > > > > > > > > > The goal of the lib is to allow anyone to invent any feature > > > > > > > which is not already available in DPDK. > > > > > > > > > > > > > > > Even similar semantics are required for DPU(Smart NIC) > > > > > > > > communitication. I am planning to > > > > > > > > send RFC in coming days to address the issue without the application > > > > > > > > knowing the Bus/HW/Driver details. > > > > > > > > > > > > > > gpudev is not exposing bus/hw/driver details. > > > > > > > I don't understand what you mean. > > > > > > > > > > > > See above. > > We are going into circles. Yes. > In short, Jerin wants to forbid the generic use of GPU in DPDK. See below. > He wants only feature-specific API. To re-reiterate, feature-specific "application" API. A device-specific bit can be driver API and accessible to the out-of-tree driver if needed. IMO, if we take this path, DPU, XPU, GPU, etc we need N different libraries to get the job done for a specific feature for the dataplane. Instead, Enabling public feature APIs will make the application portable and does not need to worry about which type of *PU it runs. > It is like restricting the functions we can run on a CPU. > > And anyway we need this layer to share the GPU between multiple features. No disagreement there. Is that layer public application API or not is the question. it is like PCI device API calls over of the application and makes the application device specific. > > Techboard please vote. Yes. > >