NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
gpunetio_dma_common.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2024 NVIDIA CORPORATION AND AFFILIATES. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without modification, are permitted
5  * provided that the following conditions are met:
6  * * Redistributions of source code must retain the above copyright notice, this list of
7  * conditions and the following disclaimer.
8  * * Redistributions in binary form must reproduce the above copyright notice, this list of
9  * conditions and the following disclaimer in the documentation and/or other materials
10  * provided with the distribution.
11  * * Neither the name of the NVIDIA CORPORATION nor the names of its contributors may be used
12  * to endorse or promote products derived from this software without specific prior written
13  * permission.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
16  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
17  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE
18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
19  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
20  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
21  * STRICT LIABILITY, OR TOR (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23  *
24  */
25 
26 #ifndef GPUNETIO_DMA_COMMON_H_
27 #define GPUNETIO_DMA_COMMON_H_
28 
29 #include <stdio.h>
30 #include <stdint.h>
31 
32 #include <cuda.h>
33 #include <cuda_runtime.h>
34 
35 #include <doca_dev.h>
36 #include <doca_gpunetio.h>
37 #include <doca_error.h>
38 #include <doca_buf_array.h>
39 #include <doca_dma.h>
40 
41 #include "common.h"
42 
43 #define DMA_MEMCPY_SIZE 1024
44 
45 /* Sample configuration structure */
47  char nic_pcie_addr[DOCA_DEVINFO_PCI_ADDR_SIZE]; /* NIC PCIe address */
48  char gpu_pcie_addr[DOCA_DEVINFO_PCI_ADDR_SIZE]; /* GPU PCIe address */
49 };
50 
51 /*
52  * GPUNetIO DMA Memcpy sample functionality
53  *
54  * @gpu_dma_cfg [in]: Sample config parameters
55  * @return: DOCA_SUCCESS on success and DOCA_ERROR otherwise
56  */
58 
59 #if __cplusplus
60 extern "C" {
61 #endif
62 
63 /*
64  * Launch a CUDA kernel to read the GPU destination buffer.
65  *
66  * @stream [in]: CUDA stream to launch the kernel
67  * @gpu_buffer_addr [in]: GPU destination buffer address
68  * @dma_gpu [in]: DMA GPU exported object
69  * @src_gpu_buf_arr [in]: DOCA GPU src buffer array for DMA copy
70  * @dst_gpu_buf_arr [in]: DOCA GPU dst buffer array for DMA copy
71  * @return: DOCA_SUCCESS on success and DOCA_ERROR otherwise
72  */
74  uintptr_t gpu_buffer_addr,
75  struct doca_gpu_dma *dma_gpu,
76  struct doca_gpu_buf_arr *src_gpu_buf_arr,
77  struct doca_gpu_buf_arr *dst_gpu_buf_arr);
78 
79 #if __cplusplus
80 }
81 #endif
82 
83 #endif /* GPUNETIO_DMA_COMMON_H_ */
doca_error_t gpunetio_dma_memcpy_common_launch_kernel(cudaStream_t stream, uintptr_t gpu_buffer_addr, struct doca_gpu_dma *dma_gpu, struct doca_gpu_buf_arr *src_gpu_buf_arr, struct doca_gpu_buf_arr *dst_gpu_buf_arr)
doca_error_t gpunetio_dma_memcpy(struct gpu_dma_config *gpu_dma_cfg)
#define DOCA_DEVINFO_PCI_ADDR_SIZE
Buffer size to hold PCI BDF format: "XXXX:XX:XX.X". Including a null terminator.
Definition: doca_dev.h:313
enum doca_error doca_error_t
DOCA API return codes.
__UINTPTR_TYPE__ uintptr_t
Definition: stdint.h:298
char nic_pcie_addr[DOCA_DEVINFO_PCI_ADDR_SIZE]
char gpu_pcie_addr[DOCA_DEVINFO_PCI_ADDR_SIZE]