<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:10.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang="en-IT" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt">> From: Wang, Haiyue <haiyue.wang@intel.com><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> Date: Thursday, 27 January 2022 at 07:56<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> To: Elena Agostini <eagostini@nvidia.com>, dev@dpdk.org <dev@dpdk.org><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> Subject: RE: [PATCH v4 1/2] gpudev: expose GPU memory to CPU<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> External email: Use caution opening links or attachments<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > -----Original Message-----<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > From: eagostini@nvidia.com <eagostini@nvidia.com><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > Sent: Thursday, January 27, 2022 11:47<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > To: dev@dpdk.org<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > Cc: Elena Agostini <eagostini@nvidia.com><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > Subject: [PATCH v4 1/2] gpudev: expose GPU memory to CPU<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > From: Elena Agostini <eagostini@nvidia.com><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > Enable the possibility to expose a GPU memory area and make it<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > accessible from the CPU.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > GPU memory has to be allocated via rte_gpu_mem_alloc().<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > This patch allows the gpudev library to map (and unmap),<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > through the GPU driver, a chunk of GPU memory and to return<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > a memory pointer usable by the CPU to access the GPU memory area.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > Signed-off-by: Elena Agostini <eagostini@nvidia.com><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > ---<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > doc/guides/prog_guide/gpudev.rst | 9 +++++<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > drivers/gpu/cuda/cuda.c | 2 ++<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > lib/gpudev/gpudev.c | 61 ++++++++++++++++++++++++++++++++<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > lib/gpudev/gpudev_driver.h | 6 ++++<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > lib/gpudev/rte_gpudev.h | 49 +++++++++++++++++++++++++<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > lib/gpudev/version.map | 2 ++<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > 6 files changed, 129 insertions(+)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> ><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +__rte_experimental<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +void *rte_gpu_mem_cpu_map(int16_t dev_id, size_t size, void *ptr);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> How about add some direction words like "to/from" to make it straightforward ?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> For this: rte_gpu_mem_map_to_cpu ?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +__rte_experimental<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +int rte_gpu_mem_cpu_unmap(int16_t dev_id, void *ptr);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > +<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> And rte_gpu_mem_unmap_to_cpu ?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > };<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > --<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">> > 2.17.1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Motivation behind the name is to be compliant with
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">rte_*_dma_map/unmap</span><span lang="EN-US" style="font-size:11.0pt">()</span><span style="font-size:11.0pt"> functions where the entity come</span><span lang="EN-US" style="font-size:11.0pt">s</span><span style="font-size:11.0pt">
first<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">(DMA) and the action later (map/unmap).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I think your proposal is more readable but it's also too<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">verbose for an API (map_to_cpu/unmap_from_cpu).<o:p></o:p></span></p>
</div>
</div>
</body>
</html>