26 #ifndef GPURDMA_COMMON_H_
27 #define GPURDMA_COMMON_H_
33 #include <sys/socket.h>
34 #include <arpa/inet.h>
37 #include <cuda_runtime.h>
42 #include <doca_gpunetio.h>
48 #define MAX_PCI_ADDRESS_LEN 32U
49 #define MAX_IP_ADDRESS_LEN 128
50 #define GPU_BUF_SIZE_A 256
51 #define GPU_BUF_SIZE_B 128
52 #define GPU_BUF_SIZE_C 128
53 #define GPU_BUF_SIZE_F sizeof(uint8_t)
55 #define GPU_NUM_OP_X_BUF 2
56 #define RDMA_SEND_QUEUE_SIZE 8192
57 #define RDMA_RECV_QUEUE_SIZE 8192
58 #define ROUND_UP(unaligned_mapping_size, align_val) ((unaligned_mapping_size) + (align_val)-1) & (~((align_val)-1))
59 #define MAX(a, b) (((a) > (b)) ? (a) : (b))
60 #define SERVER_ADDR_LEN (MAX(MAX(DOCA_DEVINFO_IPV4_ADDR_SIZE, DOCA_DEVINFO_IPV6_ADDR_SIZE), DOCA_GID_BYTE_LENGTH))
61 #define SERVER_ADDR_TYPE_LEN 6
62 #define DEFAULT_CM_PORT 13579
173 const uint32_t rdma_permissions,
232 struct doca_gpu_dev_rdma *rdma_gpu,
237 uint32_t connection_index,
238 uint32_t *exit_flag);
250 struct doca_gpu_dev_rdma *rdma_gpu,
253 uint32_t connection_index);
269 struct doca_gpu_dev_rdma *rdma_gpu,
272 int num_threads_per_cta,
274 struct doca_gpu_buf_arr *server_local_buf_arr,
275 struct doca_gpu_buf_arr *server_remote_buf_arr);
doca_error_t kernel_write_server(cudaStream_t stream, struct doca_gpu_dev_rdma *rdma_gpu, struct doca_gpu_buf_arr *server_local_buf_arr_A, struct doca_gpu_buf_arr *server_remote_buf_arr_F, uint32_t connection_index)
doca_error_t wrapper_doca_rdma_cap_task_write_is_supported(struct doca_devinfo *devinfo)
doca_error_t create_buf_arr_on_gpu(struct buf_arr_obj *buf_arr_obj)
doca_error_t destroy_rdma_resources(struct rdma_resources *resources)
doca_error_t kernel_write_client(cudaStream_t stream, struct doca_gpu_dev_rdma *rdma_gpu, struct doca_gpu_buf_arr *client_local_buf_arr_B, struct doca_gpu_buf_arr *client_local_buf_arr_C, struct doca_gpu_buf_arr *client_local_buf_arr_F, struct doca_gpu_buf_arr *client_remote_buf_arr_A, uint32_t connection_index, uint32_t *exit_flag)
int oob_connection_client_setup(const char *server_ip, int *oob_sock_fd)
doca_error_t rdma_write_client(struct rdma_config *cfg)
doca_error_t create_mmap(struct rdma_mmap_obj *mmap_obj)
#define MAX_IP_ADDRESS_LEN
void oob_connection_server_close(int oob_sock_fd, int oob_client_sock)
int oob_connection_server_setup(int *oob_sock_fd, int *oob_client_sock)
doca_error_t create_rdma_resources(struct rdma_config *cfg, const uint32_t rdma_permissions, struct rdma_resources *resources)
doca_error_t gpunetio_rdma_write_bw(cudaStream_t stream, struct doca_gpu_dev_rdma *rdma_gpu, int num_iter, int num_cta, int num_threads_per_cta, size_t msg_size, struct doca_gpu_buf_arr *server_local_buf_arr, struct doca_gpu_buf_arr *server_remote_buf_arr)
doca_error_t rdma_write_server(struct rdma_config *cfg)
#define MAX_PCI_ADDRESS_LEN
void oob_connection_client_close(int oob_sock_fd)
struct buf_arr_obj client_local_buf_arr_B[NUM_CONN]
struct buf_arr_obj server_local_buf_arr_A[NUM_CONN]
struct buf_arr_obj client_remote_buf_arr_A[NUM_CONN]
struct buf_arr_obj server_remote_buf_arr_F[NUM_CONN]
struct rdma_resources resources
struct buf_arr_obj client_local_buf_arr_C[NUM_CONN]
struct buf_arr_obj client_local_buf_arr_F[NUM_CONN]
#define DOCA_DEVINFO_IBDEV_NAME_SIZE
Buffer size to hold Infiniband/RoCE device name. Including a null terminator.
enum doca_error doca_error_t
DOCA API return codes.
const struct ip_frag_config * cfg
struct doca_gpu_buf_arr * gpu_buf_arr
struct doca_buf_arr * buf_arr
enum doca_rdma_addr_type cm_addr_type
char device_name[DOCA_DEVINFO_IBDEV_NAME_SIZE]
char cm_addr[SERVER_ADDR_LEN+1]
char gpu_pcie_addr[MAX_PCI_ADDRESS_LEN]
char server_ip_addr[MAX_IP_ADDRESS_LEN]
struct doca_dev * doca_device
bool server_listen_active
struct doca_rdma_connection * connection2
struct doca_rdma_connection * connection
struct doca_ctx * rdma_ctx
const void * connection_details
bool connection2_established
struct doca_rdma_addr * cm_addr
struct doca_gpu_dev_rdma * gpu_rdma
struct doca_dev * doca_device
bool connection_established