已合并
分离cann相关代码使用g++编译 #10
分离cann相关代码使用g++编译 #10
已合并
zengxiong创建于 4月10日
37 个文件变更+1508-6995
@@ -1,41 +1,81 @@
1# rdma-perftest1# rdma-perftest
2 2 
3-rdma-perftest测试昇腾环境的带宽和时延3+rdma-perftest 测试昇腾环境的带宽和时延
4 4 
5+## 编译说明
6+ 
7+### 依赖安装
5源码放到环境上后,转换一下格式:8源码放到环境上后,转换一下格式:
9+```bash
6dos2unix *10dos2unix *
11+```
7 12 
8-编译依赖verbs,需要提前在环境上安装verbs13+编译依赖 verbs,需要提前在环境上安装 verbs
14+```bash
9yum install -y libibverbs rdma-core15yum install -y libibverbs rdma-core
10yum install -y libibverbs-devel rdma-core-devel16yum install -y libibverbs-devel rdma-core-devel
11yum install libibverbs-utils17yum install libibverbs-utils
12 18 
13-编译相关内容生成:19+# 编译相关内容生成:
14yum install -y libtool20yum install -y libtool
21+```
15 22 
16-注:路径依赖CANN的散包,需要装一下CANN的散包23+### 基础编译(无CANN支持)
17-# 这里先执行这2个指令, 修改Makefile内的/home/zdy 相关路径为 cann包路径, 直接执行make24+如果需要CANN支持,可以仅编译基础功能:
25+```bash
18bash autogen.sh26bash autogen.sh
19- ./configure --enable-acl --with-acl=/usr/local/Ascend/latest27+./configure
20make28make
29+```
21 30 
22-注:环境上安装的verbs版本比较低,有些变量或者接口还未定义,如果不上,可以暂时先屏蔽,也可以升级一下verbs版本31+### 启CANN支持的编译
32+如果要在有CANN环境的系统上启用CANN支持,按如下步骤操作:
23 33 
34+```bash
35+# 导入cann环境变量
36+source /usr/local/Ascend/ascend-toolkit/set_env.sh
37+source /usr/local/Ascend/cann-9.0.0/set_env.sh
24 38 
25-# 测试指令:39+# 配置和编译项目(支持NDA功能)
40+bash autogen.sh
41+./configure --enable-cann --with-cann=$ASCEND_TOOLKIT_HOME --with-cust-opapi=/usr/local/Ascend/cann-9.0.0/opp/vendors/customize
42+make
43+```
26 44 
27-Write 带宽测试:NPU2 -> NPU645+## 测试指令示例
28-Server: ib_write_bw -d xscale_0 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely
29-Client: ib_write_bw -d xscale_1 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely 192.168.100.100
30 46 
31-Read 带宽测试:NPU2 -> NPU647+Write 带宽测试:
32-Server: ib_read_bw -d xscale_0 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely48+```bash
33-Client: ib_read_bw -d xscale_1 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely 192.168.100.10049+# Server
50+ib_write_bw -d xscale_0 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely
34 51 
35-Read 时延测试:NPU2 -> NPU652+# Client
36-Server: ib_read_lat -d xscale_0 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely53+ib_write_bw -d xscale_1 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely 192.168.100.100
37-Client: ib_read_lat -d xscale_1 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely 192.168.100.10054+```
38 55 
39-Send 时延测试:NPU2 -> NPU656+Read 带宽测试:
40-Server: ib_send_lat -d xscale_0 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely57+```bash
41-Client: ib_send_lat -d xscale_1 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely 192.168.100.10058+# Server
59+ib_read_bw -d xscale_0 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely
60+ 
61+# Client
62+ib_read_bw -d xscale_1 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely 192.168.100.100
63+```
64+ 
65+Read 时延测试:
66+```bash
67+# Server
68+ib_read_lat -d xscale_0 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely
69+ 
70+# Client
71+ib_read_lat -d xscale_1 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely 192.168.100.100
72+```
73+ 
74+Send 时延测试:
75+```bash
76+# Server
77+ib_send_lat -d xscale_0 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely
78+ 
79+# Client
80+ib_send_lat -d xscale_1 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely 192.168.100.100
81+```
@@ -17,7 +17,6 @@
17.deps17.deps
18 18 
19# Automake19# Automake
20-Makefile
21Makefile.in20Makefile.in
22aclocal.m421aclocal.m4
23autom4te.cache/22autom4te.cache/
@@ -33,6 +33,9 @@
33ACLOCAL_AMFLAGS= -I m433ACLOCAL_AMFLAGS= -I m4
34AUTOMAKE_OPTIONS= subdir-objects34AUTOMAKE_OPTIONS= subdir-objects
35 35 
36+# 设置包含路径,确保能找到canninterface目录下的头文件
37+AM_CPPFLAGS = -I$(top_srcdir)/src/canninterface
38+ 
36noinst_LIBRARIES = libperftest.a39noinst_LIBRARIES = libperftest.a
37libperftest_a_SOURCES = src/get_clock.c src/perftest_communication.c src/perftest_parameters.c src/perftest_resources.c src/perftest_counters.c src/host_memory.c src/mmap_memory.c40libperftest_a_SOURCES = src/get_clock.c src/perftest_communication.c src/perftest_parameters.c src/perftest_resources.c src/perftest_counters.c src/host_memory.c src/mmap_memory.c
38noinst_HEADERS = src/get_clock.h src/perftest_communication.h src/perftest_parameters.h src/perftest_resources.h src/perftest_counters.h src/memory.h src/host_memory.h src/mmap_memory.h src/cuda_memory.h src/rocm_memory.h src/neuron_memory.h src/hl_memory.h src/mlu_memory.h41noinst_HEADERS = src/get_clock.h src/perftest_communication.h src/perftest_parameters.h src/perftest_resources.h src/perftest_counters.h src/memory.h src/host_memory.h src/mmap_memory.h src/cuda_memory.h src/rocm_memory.h src/neuron_memory.h src/hl_memory.h src/mlu_memory.h
@@ -45,8 +48,8 @@ if ROCM
45libperftest_a_SOURCES += src/rocm_memory.c48libperftest_a_SOURCES += src/rocm_memory.c
46endif49endif
47 50 
48-if CANN51+if CANN_ENABLED
49-libperftest_a_SOURCES += src/acl_memory.c src/nda_op.c 52+SUBDIRS = src/canninterface
50endif53endif
51 54 
52if NEURON55if NEURON
@@ -68,6 +71,36 @@ endif
68bin_PROGRAMS = ib_send_bw ib_send_lat ib_write_lat ib_write_bw ib_read_lat ib_read_bw ib_atomic_lat ib_atomic_bw71bin_PROGRAMS = ib_send_bw ib_send_lat ib_write_lat ib_write_bw ib_read_lat ib_read_bw ib_atomic_lat ib_atomic_bw
69bin_SCRIPTS = run_perftest_loopback run_perftest_multi_devices72bin_SCRIPTS = run_perftest_loopback run_perftest_multi_devices
70 73 
74+# Define LDFLAGS for CANN
75+if CANN_ENABLED
76+ib_send_bw_LDFLAGS = -L/usr/local/Ascend/cann-9.0.0/lib64 -L/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64
77+ib_send_lat_LDFLAGS = -L/usr/local/Ascend/cann-9.0.0/lib64 -L/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64
78+ib_write_lat_LDFLAGS = -L/usr/local/Ascend/cann-9.0.0/lib64 -L/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64
79+ib_write_bw_LDFLAGS = -L/usr/local/Ascend/cann-9.0.0/lib64 -L/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64
80+ib_read_lat_LDFLAGS = -L/usr/local/Ascend/cann-9.0.0/lib64 -L/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64
81+ib_read_bw_LDFLAGS = -L/usr/local/Ascend/cann-9.0.0/lib64 -L/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64
82+ib_atomic_lat_LDFLAGS = -L/usr/local/Ascend/cann-9.0.0/lib64 -L/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64
83+ib_atomic_bw_LDFLAGS = -L/usr/local/Ascend/cann-9.0.0/lib64 -L/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/lib64 -Wl,-rpath,/usr/local/Ascend/cann-9.0.0/x86_64-linux/lib64
84+ 
85+ib_send_bw_LDADD = libperftest.a src/canninterface/libcanninterface.a -lstdc++ -lm -ldl -lacl_rt -lascendcl -lnnopbase -lrdmacm -libverbs -lpci -lpthread
86+ib_send_lat_LDADD = libperftest.a src/canninterface/libcanninterface.a -lstdc++ -lm -ldl -lacl_rt -lascendcl -lnnopbase -lrdmacm -libverbs -lpci -lpthread
87+ib_write_lat_LDADD = libperftest.a src/canninterface/libcanninterface.a -lstdc++ -lm -ldl -lacl_rt -lascendcl -lnnopbase -lrdmacm -libverbs -lpci -lpthread
88+ib_write_bw_LDADD = libperftest.a src/canninterface/libcanninterface.a -lstdc++ -lm -ldl -lacl_rt -lascendcl -lnnopbase -lrdmacm -libverbs -lpci -lpthread
89+ib_read_lat_LDADD = libperftest.a src/canninterface/libcanninterface.a -lstdc++ -lm -ldl -lacl_rt -lascendcl -lnnopbase -lrdmacm -libverbs -lpci -lpthread
90+ib_read_bw_LDADD = libperftest.a src/canninterface/libcanninterface.a -lstdc++ -lm -ldl -lacl_rt -lascendcl -lnnopbase -lrdmacm -libverbs -lpci -lpthread
91+ib_atomic_lat_LDADD = libperftest.a src/canninterface/libcanninterface.a -lstdc++ -lm -ldl -lacl_rt -lascendcl -lnnopbase -lrdmacm -libverbs -lpci -lpthread
92+ib_atomic_bw_LDADD = libperftest.a src/canninterface/libcanninterface.a -lstdc++ -lm -ldl -lacl_rt -lascendcl -lnnopbase -lrdmacm -libverbs -lpci -lpthread
93+else
94+ib_send_bw_LDADD = libperftest.a -lrdmacm -libverbs -lpci -ldl -lpthread -lm
95+ib_send_lat_LDADD = libperftest.a -lrdmacm -libverbs -lpci -ldl -lpthread -lm
96+ib_write_lat_LDADD = libperftest.a -lrdmacm -libverbs -lpci -ldl -lpthread -lm
97+ib_write_bw_LDADD = libperftest.a -lrdmacm -libverbs -lpci -ldl -lpthread -lm
98+ib_read_lat_LDADD = libperftest.a -lrdmacm -libverbs -lpci -ldl -lpthread -lm
99+ib_read_bw_LDADD = libperftest.a -lrdmacm -libverbs -lpci -ldl -lpthread -lm
100+ib_atomic_lat_LDADD = libperftest.a -lrdmacm -libverbs -lpci -ldl -lpthread -lm
101+ib_atomic_bw_LDADD = libperftest.a -lrdmacm -libverbs -lpci -ldl -lpthread -lm
102+endif
103+ 
71# Non-source man pages:104# Non-source man pages:
72man1_MANS = \105man1_MANS = \
73 $(top_builddir)/man/ib_write_bw.1 \106 $(top_builddir)/man/ib_write_bw.1 \
@@ -125,43 +158,39 @@ SUFFIXES= .cu
125 $(NVCC) -DHAVE_CONFIG_H $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) -o $@ -c $< $(NVCCFLAGS)158 $(NVCC) -DHAVE_CONFIG_H $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) -o $@ -c $< $(NVCCFLAGS)
126endif159endif
127 160 
128- 
129ib_send_bw_SOURCES = src/send_bw.c src/multicast_resources.c src/multicast_resources.h161ib_send_bw_SOURCES = src/send_bw.c src/multicast_resources.c src/multicast_resources.h
130-ib_send_bw_LDADD = libperftest.a $(LIBUMAD) $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
131 162 
132ib_send_lat_SOURCES = src/send_lat.c src/multicast_resources.c src/multicast_resources.h163ib_send_lat_SOURCES = src/send_lat.c src/multicast_resources.c src/multicast_resources.h
133-ib_send_lat_LDADD = libperftest.a $(LIBUMAD) $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
134 164 
135ib_write_lat_SOURCES = src/write_lat.c165ib_write_lat_SOURCES = src/write_lat.c
136-ib_write_lat_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
137 166 
138ib_write_bw_SOURCES = src/write_bw.c167ib_write_bw_SOURCES = src/write_bw.c
139-ib_write_bw_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
140 168 
141ib_read_lat_SOURCES = src/read_lat.c169ib_read_lat_SOURCES = src/read_lat.c
142-ib_read_lat_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
143 170 
144ib_read_bw_SOURCES = src/read_bw.c171ib_read_bw_SOURCES = src/read_bw.c
145-ib_read_bw_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
146 172 
147ib_atomic_lat_SOURCES = src/atomic_lat.c173ib_atomic_lat_SOURCES = src/atomic_lat.c
148-ib_atomic_lat_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
149 174 
150ib_atomic_bw_SOURCES = src/atomic_bw.c175ib_atomic_bw_SOURCES = src/atomic_bw.c
151-ib_atomic_bw_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
152 176 
153if HAVE_RAW_ETH177if HAVE_RAW_ETH
154raw_ethernet_bw_SOURCES = src/raw_ethernet_send_bw.c178raw_ethernet_bw_SOURCES = src/raw_ethernet_send_bw.c
155-raw_ethernet_bw_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
156- 
157raw_ethernet_lat_SOURCES = src/raw_ethernet_send_lat.c179raw_ethernet_lat_SOURCES = src/raw_ethernet_send_lat.c
158-raw_ethernet_lat_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
159- 
160raw_ethernet_burst_lat_SOURCES = src/raw_ethernet_send_burst_lat.c180raw_ethernet_burst_lat_SOURCES = src/raw_ethernet_send_burst_lat.c
161-raw_ethernet_burst_lat_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
162- 
163raw_ethernet_fs_rate_SOURCES = src/raw_ethernet_fs_rate.c181raw_ethernet_fs_rate_SOURCES = src/raw_ethernet_fs_rate.c
182+ 
183+if CANN_ENABLED
184+raw_ethernet_bw_LDADD = libperftest.a src/canninterface/libcanninterface.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
185+raw_ethernet_lat_LDADD = libperftest.a src/canninterface/libcanninterface.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
186+raw_ethernet_burst_lat_LDADD = libperftest.a src/canninterface/libcanninterface.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
187+raw_ethernet_fs_rate_LDADD = libperftest.a src/canninterface/libcanninterface.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
188+else
189+raw_ethernet_bw_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
190+raw_ethernet_lat_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
191+raw_ethernet_burst_lat_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
164raw_ethernet_fs_rate_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)192raw_ethernet_fs_rate_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS)
193+endif
165 194 
166else195else
167raw_ethernet_bw_SOURCES =196raw_ethernet_bw_SOURCES =
@@ -0,0 +1,718 @@
1+# Copyright (C) 2001-2011 Mellanox Technologies Ltd. All rights reserved.
2+#
3+# This software is available to you under a choice of one of two
4+# licenses. You may choose to be licensed under the terms of the GNU
5+# General Public License (GPL) Version 2, available from the file
6+# COPYING in the main directory of this source tree, or the
7+# OpenIB.org BSD license below:
8+#
9+# Redistribution and use in source and binary forms, with or
10+# without modification, are permitted provided that the following
11+# conditions are met:
12+#
13+# - Redistributions of source code must retain the above
14+# copyright notice, this list of conditions and the following
15+# disclaimer.
16+#
17+# - Redistributions in binary form must reproduce the above
18+# copyright notice, this list of conditions and the following
19+# disclaimer in the documentation and/or other materials
20+# provided with the distribution.
21+#
22+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
26+# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
27+# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
28+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29+# SOFTWARE.
30+dnl Process this file with autoconf to produce a configure script.
31+ 
32+AC_PREREQ([2.69])
33+AC_INIT([perftest],[6.26],[linux-rdma@vger.kernel.org])
34+AC_CONFIG_AUX_DIR([config])
35+AC_CONFIG_MACRO_DIRS([m4])
36+ 
37+# Initialize Automake with dependencies tracking
38+AM_INIT_AUTOMAKE([subdir-objects foreign])
39+AC_CONFIG_HEADERS([config.h])
40+ 
41+# Initialize Automake dependency tracking
42+AM_MAINTAINER_MODE([disable])
43+ 
44+# Checks for programs.
45+AC_PROG_CC
46+AC_PROG_CXX
47+AC_PROG_INSTALL
48+AC_PROG_MAKE_SET
49+AM_PROG_AR
50+LT_INIT
51+ 
52+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
53+ 
54+# 检查是否启用 CANN 支持
55+AC_ARG_ENABLE([cann],
56+ AS_HELP_STRING([--enable-cann], [Enable CANN support]),
57+ [use_cann=$enableval], [use_cann=no])
58+ 
59+if test "x$use_cann" = "xyes"; then
60+ AC_DEFINE([CANN], [1], [Enable CANN support])
61+ AC_DEFINE([ENABLE_CANN], [1], [Enable CANN support])
62+ AM_CONDITIONAL([CANN_ENABLED], [true])
63+
64+ # 设置 CANN 路径
65+ AC_ARG_WITH([cann],
66+ AS_HELP_STRING([--with-cann=CANN_PATH], [Path to CANN installation]),
67+ [CANN_PATH=$withval], [CANN_PATH=/usr/local/Ascend/cann-9.0.0])
68+ AC_SUBST([CANN_PATH])
69+
70+ # 设置自定义 op_api 路径
71+ AC_ARG_WITH([cust-opapi],
72+ AS_HELP_STRING([--with-cust-opapi=CUST_OPAPI_PATH], [Path to custom op_api library]),
73+ [CUST_OPAPI_PATH=$withval], [CUST_OPAPI_PATH=/home/y00698405/vendors/customize])
74+ AC_SUBST([CUST_OPAPI_PATH])
75+ 
76+ # 将CANN路径添加到编译和链接选项
77+ CANN_CFLAGS="-I${CANN_PATH}/x86_64-linux/include -I${CANN_PATH}/x86_64-linux/include/aclnn"
78+ CANN_LDFLAGS="-L${CANN_PATH}/x86_64-linux/lib64 -L${CANN_PATH}/lib64 -Wl,-rpath,${CANN_PATH}/x86_64-linux/lib64 -Wl,-rpath,${CANN_PATH}/lib64"
79+
80+ # 添加自定义 op_api 路径
81+ CUST_OPAPI_LDFLAGS="-L${CUST_OPAPI_PATH}/op_api/lib -Wl,-rpath,${CUST_OPAPI_PATH}/op_api/lib"
82+ LDFLAGS="$LDFLAGS $CANN_LDFLAGS $CUST_OPAPI_LDFLAGS"
83+ 
84+ # 先检测 ascendcl 库
85+ AC_SEARCH_LIBS([aclrtFree], [ascendcl], [],
86+ [AC_MSG_ERROR([cannot link with -lascendcl])])
87+ # 检测 aclmdl 库 (用于 aclCreateTensor) 并保存结果
88+ # 注意: aclCreateTensor 和 aclDestroyTensor 在 libnnopbase.so 中
89+ AC_SEARCH_LIBS([aclCreateTensor], [nnopbase], [LIBACLMDL=-lnnopbase], [LIBACLMDL=])
90+ # 检测自定义 op_api 库
91+ AC_SEARCH_LIBS([aclnnHbmStressTestPiGetWorkspaceSize], [cust_opapi], [LIBCUSTOPAPI=-lcust_opapi], [LIBCUSTOPAPI=])
92+ # 将 CANN 库添加到最终链接选项
93+ LDFLAGS="$LDFLAGS $CANN_LDFLAGS $CUST_OPAPI_LDFLAGS"
94+ CANN_LIBS="-lascendcl $LIBACLMDL $LIBCUSTOPAPI"
95+
96+ # 将CANN的编译和链接选项添加到全局选项
97+ CPPFLAGS="$CPPFLAGS $CANN_CFLAGS"
98+else
99+ AM_CONDITIONAL([CANN_ENABLED], [false])
100+fi
101+ 
102+AC_SUBST(MAJOR_VERSION)
103+AC_SUBST(MINOR_VERSION)
104+ 
105+AC_ARG_VAR(HAVE_OPENCL, opencl support)
106+AC_ARG_VAR(CUDA_H_PATH, help-string)
107+AC_ARG_ENABLE([cudart],
108+ [AS_HELP_STRING([--enable-cudart],
109+ [Enable CUDA runtime support])
110+ ],
111+ [],
112+ [enable_cudart=no])
113+AC_ARG_VAR(RANLIB, ranlib tool)
114+ 
115+AC_ARG_ENABLE([ibv_wr_api],
116+ [AS_HELP_STRING([--disable-ibv_wr_api],
117+ [Disable new post send API])])
118+ 
119+AS_IF([test "x$enable_ibv_wr_api" = "xno"],
120+ [USE_IBV_WR_API=no],
121+ [USE_IBV_WR_API=yes])
122+ 
123+AC_PREFIX_DEFAULT("/usr")
124+ 
125+AC_PROG_CXX
126+AC_PROG_CC
127+AM_PROG_AS
128+AC_PROG_INSTALL
129+LT_INIT
130+AC_PROG_RANLIB
131+m4_warn([obsolete],
132+[The preprocessor macro `STDC_HEADERS' is obsolete.
133+ Except in unusual embedded environments, you can safely include all
134+ ISO C90 headers unconditionally.])dnl
135+# Autoupdate added the next two lines to ensure that your configure
136+# script's behavior did not change. They are probably safe to remove.
137+AC_CHECK_INCLUDES_DEFAULT
138+AC_PROG_EGREP
139+ 
140+AC_CHECK_HEADERS([infiniband/verbs.h],,[AC_MSG_ERROR([ibverbs header files not found])])
141+AC_CHECK_LIB([ibverbs], [ibv_get_device_list], [], [AC_MSG_ERROR([libibverbs not found])])
142+AC_CHECK_LIB([rdmacm], [rdma_create_event_channel], [], AC_MSG_ERROR([librdmacm-devel not found]))
143+AC_CHECK_LIB([ibumad], [umad_init], [LIBUMAD=-libumad], AC_MSG_ERROR([libibumad not found]))
144+AC_CHECK_LIB([m], [log], [LIBMATH=-lm], AC_MSG_ERROR([libm not found]))
145+ 
146+AC_CHECK_LIB([ibverbs], [ibv_reg_dmabuf_mr], [HAVE_REG_DMABUF_MR=yes], [HAVE_REG_DMABUF_MR=no])
147+if test $HAVE_REG_DMABUF_MR = yes; then
148+ AC_DEFINE([HAVE_REG_DMABUF_MR], [1], [Enable HAVE_REG_DMABUF_MR])
149+fi
150+ 
151+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <infiniband/verbs.h>]], [[struct ibv_flow *t = ibv_create_flow(NULL,NULL);]])],[HAVE_RAW_ETH_REG=yes],[HAVE_RAW_ETH_REG=no])
152+ 
153+AM_CONDITIONAL([HAVE_RAW_ETH_REG],[test "x$HAVE_RAW_ETH_REG" = "xyes"])
154+if test $HAVE_RAW_ETH_REG = yes; then
155+ AC_DEFINE([HAVE_RAW_ETH_REG], [1], [Enable RAW_ETH_TEST_REG])
156+fi
157+ 
158+AM_CONDITIONAL([HAVE_RAW_ETH],true)
159+if [test $HAVE_RAW_ETH_REG = yes]; then
160+ AC_DEFINE([HAVE_RAW_ETH], [1], [Enable RAW_ETH_TEST])
161+else
162+ AM_CONDITIONAL([HAVE_RAW_ETH],false)
163+fi
164+ 
165+ 
166+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <infiniband/verbs.h>]], [[struct ibv_xrcd *t = ibv_open_xrcd(NULL,NULL);]])],[HAVE_XRCD=yes],[HAVE_XRCD=no])
167+ 
168+AM_CONDITIONAL([HAVE_XRCD],[test "x$HAVE_XRCD" = "xyes"])
169+if test $HAVE_XRCD = yes; then
170+ AC_DEFINE([HAVE_XRCD], [1], [Enable XRCD feature])
171+fi
172+ 
173+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
174+#if !defined(__FreeBSD__)
175+#include <endian.h>
176+#else
177+#include <sys/endian.h>
178+#endif]], [[int x = htobe32(0);]])],[HAVE_ENDIAN=yes],[HAVE_ENDIAN=no])
179+ 
180+AM_CONDITIONAL([HAVE_ENDIAN],[test "x$HAVE_ENDIAN" = "xyes"])
181+if test $HAVE_ENDIAN = yes; then
182+ AC_DEFINE([HAVE_ENDIAN], [1], [Enable endian conversion])
183+fi
184+ 
185+AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[#if !defined(__FreeBSD__)
186+ #error nope
187+ #endif]])],[IS_FREEBSD=yes],[IS_FREEBSD=no])
188+ 
189+AM_CONDITIONAL([IS_FREEBSD],[test "x$IS_FREEBSD" = "xyes"])
190+if test $IS_FREEBSD = yes; then
191+ AC_DEFINE([IS_FREEBSD], [1], [OS is FreeBSD])
192+ LIBMLX5=-lmlx5
193+fi
194+ 
195+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <infiniband/verbs.h>]], [[char *c = IBV_LINK_LAYER_SCIF;]])],[HAVE_SCIF=yes],[HAVE_SCIF=no])
196+ 
197+AM_CONDITIONAL([HAVE_SCIF],[test "x$HAVE_SCIF" = "xyes"])
198+if test $HAVE_SCIF = yes; then
199+ AC_DEFINE([HAVE_SCIF], [1], [Enable SCIF link Layer])
200+fi
201+ 
202+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
203+#include <infiniband/verbs.h>]], [[int x = IBV_QP_INIT_ATTR_SEND_OPS_FLAGS;]])],[HAVE_IBV_WR_API=yes],[HAVE_IBV_WR_API=no])
204+AM_CONDITIONAL([HAVE_IBV_WR_API],[test "x$HAVE_IBV_WR_API" = "xyes"])
205+# TODO: Add appropriate check. Currently we consider that if rdma-core
206+# has new post send, it also has ibv_query_gid_type
207+if [test $HAVE_IBV_WR_API = yes]; then
208+ AC_DEFINE([HAVE_GID_TYPE], [1], [Have a way to check gid type])
209+fi
210+if [test $HAVE_IBV_WR_API = yes] && [test $USE_IBV_WR_API = yes]; then
211+ AC_DEFINE([HAVE_IBV_WR_API], [1], [Have new post send API support])
212+else
213+ HAVE_IBV_WR_API=no
214+fi
215+ 
216+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
217+#include <infiniband/mlx5dv.h>]], [[int x = MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS;]])],[HAVE_MLX5DV=yes],[HAVE_MLX5DV=no])
218+AM_CONDITIONAL([HAVE_MLX5DV],[test "x$HAVE_MLX5DV" = "xyes"])
219+ 
220+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
221+#include <infiniband/mlx5dv.h>]], [[int x = __devx_dw_off(32);]])],[HAVE_MLX5_DEVX=yes],[HAVE_MLX5_DEVX=no])
222+AM_CONDITIONAL([HAVE_MLX5_DEVX],[test "x$HAVE_MLX5_DEVX" = "xyes"])
223+if [test $HAVE_MLX5_DEVX = yes] && [test $HAVE_MLX5DV = yes]; then
224+ AC_DEFINE([HAVE_MLX5_DEVX], [1], [Have MLX5 DEVX support])
225+fi
226+ 
227+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
228+#include <infiniband/mlx5dv.h>]], [[int x = MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS;]])],[HAVE_DCS=yes],[HAVE_DCS=no])
229+AM_CONDITIONAL([HAVE_DCS],[test "x$HAVE_DCS" = "xyes"])
230+if [test $HAVE_DCS = yes] && [test $HAVE_MLX5DV = yes]; then
231+ AC_DEFINE([HAVE_DCS], [1], [Have DCS support])
232+fi
233+ 
234+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
235+#include <infiniband/mlx5dv.h>]], [[int x = MLX5DV_CONTEXT_FLAGS_BLUEFLAME;]])],[HAVE_MLX5DV_BF_FLAG=yes],[HAVE_MLX5DV_BF_FLAG=no])
236+AM_CONDITIONAL([HAVE_MLX5DV_BF_FLAG],[test "x$HAVE_MLX5DV_BF_FLAG" = "xyes"])
237+if [test $HAVE_MLX5DV_BF_FLAG = yes] && [test $HAVE_MLX5DV = yes]; then
238+ AC_DEFINE([HAVE_MLX5DV_BF_FLAG], [1], [Have BF indication support])
239+fi
240+ 
241+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
242+#include <infiniband/mlx5dv.h>]], [[int x = MLX5DV_CONTEXT_MASK_OOO_RECV_WRS;]])],[HAVE_OOO_RECV_WRS=yes],[HAVE_OOO_RECV_WRS=no])
243+AM_CONDITIONAL([HAVE_OOO_RECV_WRS],[test "x$HAVE_OOO_RECV_WRS" = "xyes"])
244+if [test $HAVE_OOO_RECV_WRS = yes] && [test $HAVE_MLX5DV = yes]; then
245+ AC_DEFINE([HAVE_OOO_RECV_WRS], [1], [Have DDP support])
246+fi
247+ 
248+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
249+#include <infiniband/mlx5dv.h>]], [[int x = MLX5DV_REG_DMABUF_ACCESS_DATA_DIRECT;]])],[HAVE_DATA_DIRECT=yes],[HAVE_DATA_DIRECT=no])
250+AM_CONDITIONAL([HAVE_DATA_DIRECT],[test "x$HAVE_DATA_DIRECT" = "xyes"])
251+if [test $HAVE_DATA_DIRECT = yes] && [test $HAVE_MLX5DV = yes]; then
252+ AC_DEFINE([HAVE_DATA_DIRECT], [1], [Have Data Direct support])
253+fi
254+ 
255+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
256+#include <infiniband/mlx5dv.h>]], [[int x = MLX5DV_CRYPTO_STANDARD_AES_XTS;]])],[HAVE_AES_XTS=yes],[HAVE_AES_XTS=no])
257+AM_CONDITIONAL([HAVE_AES_XTS],[test "x$HAVE_AES_XTS" = "xyes"])
258+if [test $HAVE_AES_XTS = yes] && [test $HAVE_MLX5DV = yes]; then
259+ AC_DEFINE([HAVE_AES_XTS], [1], [Have AES XTS support])
260+fi
261+ 
262+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <infiniband/verbs.h>]], [[int c = IBV_GID_TYPE_ROCE_V1;]])],[HAVE_GID_TYPE_DECLARED=yes],[HAVE_GID_TYPE_DECLARED=no])
263+AM_CONDITIONAL([HAVE_GID_TYPE_DECLARED],[test "x$HAVE_GID_TYPE_DECLARED" = "xyes"])
264+if [test $HAVE_GID_TYPE_DECLARED = yes]; then
265+ AC_DEFINE([HAVE_GID_TYPE_DECLARED], [1], [API GID compatibility])
266+fi
267+ 
268+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
269+#include <infiniband/verbs.h>]], [[int x = IBV_FLOW_SPEC_IPV6;]])],[HAVE_IPV6=yes],[HAVE_IPV6=no])
270+AM_CONDITIONAL([HAVE_IPV6],[test "x$HAVE_IPV6" = "xyes"])
271+if [test $HAVE_IPV6 = yes]; then
272+ AC_DEFINE([HAVE_IPV6], [1], [Enable IPv6 Flow Specification])
273+fi
274+ 
275+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
276+#include <infiniband/verbs.h>]], [[int x = IBV_FLOW_SPEC_IPV4_EXT;]])],[HAVE_IPV4_EXT=yes],[HAVE_IPV4_EXT=no])
277+AM_CONDITIONAL([HAVE_IPV4_EXT],[test "x$HAVE_IPV4_EXT" = "xyes"])
278+if [test $HAVE_IPV4_EXT = yes]; then
279+ AC_DEFINE([HAVE_IPV4_EXT], [1], [Enable IPv4 Extended Flow Specification])
280+fi
281+ 
282+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
283+#include <infiniband/verbs.h>]], [[int x = IBV_FLOW_ATTR_SNIFFER;]])],[HAVE_SNIFFER=yes],[HAVE_SNIFFER=no])
284+AM_CONDITIONAL([HAVE_SNIFFER],[test "x$HAVE_SNIFFER" = "xyes"])
285+if [test $HAVE_SNIFFER = yes]; then
286+ AC_DEFINE([HAVE_SNIFFER], [1], [Enable Sniffer Flow Specification])
287+fi
288+ 
289+if [test $IS_FREEBSD = no]; then
290+ AC_CHECK_HEADERS([pci/pci.h],,[AC_MSG_ERROR([pciutils header files not found, consider installing pciutils-devel])])
291+ AC_CHECK_LIB([pci], [pci_init], [LIBPCI=-lpci], AC_MSG_ERROR([libpci not found]))
292+ CPU_IS_RO_COMPLIANT=yes
293+fi
294+ 
295+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
296+#include <infiniband/verbs.h>]], [[int x = IBV_ACCESS_RELAXED_ORDERING;]])],[HAVE_RO=yes],[HAVE_RO=no])
297+AM_CONDITIONAL([HAVE_RO],[test "x$HAVE_RO" = "xyes"])
298+if [test $HAVE_RO = yes] && [test "x$CPU_IS_RO_COMPLIANT" = "xyes"]; then
299+ AC_DEFINE([HAVE_RO], [1], [Enable Relaxed Ordering])
300+ LIBS=$LIBS" -lpci"
301+fi
302+ 
303+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <infiniband/verbs.h>]], [[struct ibv_device_attr_ex *attr_ex; int x = attr_ex->comp_mask;]])],[HAVE_EX=yes],[HAVE_EX=no])
304+AM_CONDITIONAL([HAVE_EX],[test "x$HAVE_EX" = "xyes"])
305+if [test $HAVE_EX = yes]; then
306+ AC_DEFINE([HAVE_EX], [1], [Have EX support])
307+fi
308+ 
309+dnl ACL start
310+AC_ARG_ENABLE([acl],
311+ [AS_HELP_STRING([--enable-acl],
312+ [Enable Huawei ACL benchmarks])
313+ ],
314+ [],
315+ [enable_acl=no])
316+AC_ARG_WITH([acl],
317+ [AS_HELP_STRING([--with-acl=@<:@acl installation path@:>@],
318+ [Provide path to acl installation])
319+ ],
320+ [AS_CASE([$with_acl],
321+ [yes|no], [],
322+ [CPPFLAGS="-I/home/zdy/cann-9.0.T501/x86_64-linux/include $CPPFLAGS"
323+ CPPFLAGS="-I/home/zdy/cann-9.0.T501/x86_64-linux/include/aclnn $CPPFLAGS"
324+ LDFLAGS="$LDFLAGS -L/home/zdy/cann-9.0.T501/x86_64-linux/lib64 -lascendcl -Wl,-rpath,/home/zdy/cann-9.0.T501/x86_64-linux/lib64"])
325+ ])
326+ 
327+AS_IF([test "x$enable_acl" = xyes], [
328+ AC_DEFINE([ACL], [1], [Enable ACL])
329+ AC_CHECK_HEADERS([acl/acl.h], [],
330+ [AC_MSG_ERROR([cannot include acl/acl.h 1])])
331+ AC_SEARCH_LIBS([aclrtFree], [ascendcl], [],
332+ [AC_MSG_ERROR([cannot link with -lascendcl])])
333+ AC_DEFINE([HAVE_ACL], [1], [Enable ACL])
334+ ])
335+ 
336+AM_CONDITIONAL([ACL], [test x$enable_acl = xyes])
337+dnl ACL done
338+ 
339+dnl MOCKER start
340+AC_ARG_ENABLE([mocker],
341+ [AS_HELP_STRING([--enable-mocker],
342+ [Enable Huawei MOCKER benchmarks])
343+ ],
344+ [],
345+ [enable_mocker=no])
346+AC_ARG_WITH([mocker],
347+ [AS_HELP_STRING([--with-mocker=@<:@mocker installation path@:>@],
348+ [Provide path to mocker installation])
349+ ],
350+ [AS_CASE([$with_mocker],
351+ [yes|no], [],
352+ [LDFLAGS="$LDFLAGS -L/root/GPU-0320/NDA/output/lib -libv_extend"])
353+ ])
354+ 
355+AS_IF([test "x$enable_mocker" = xyes], [
356+ AC_DEFINE([MOCKER], [1], [Enable MOCKER])
357+ AC_SEARCH_LIBS([ibv_open_extend], [ibv_extend], [],
358+ [AC_MSG_ERROR([cannot link with -libv_extend])])
359+ AC_DEFINE([HAVE_MOCKER], [1], [Enable MOCKER])
360+ ])
361+ 
362+AM_CONDITIONAL([MOCKER], [test x$enable_mocker = xyes])
363+dnl MOCKER done
364+ 
365+dnl NNOPBASE start
366+AC_ARG_ENABLE([nnopbase],
367+ [AS_HELP_STRING([--enable-nnopbase],
368+ [Enable Huawei NNOPBASE benchmarks])
369+ ],
370+ [],
371+ [enable_nnopbase=no])
372+AC_ARG_WITH([nnopbase],
373+ [AS_HELP_STRING([--with-nnopbase=@<:@nnopbase installation path@:>@],
374+ [Provide path to nnopbase installation])
375+ ],
376+ [AS_CASE([$with_nnopbase],
377+ [yes|no], [],
378+ [LDFLAGS="$LDFLAGS -lnnopbase"])
379+ ])
380+ 
381+ 
382+ 
383+AM_CONDITIONAL([NNOPBASE], [test x$enable_nnopbase = xyes])
384+dnl NNOPBASE done
385+ 
386+dnl CUSTOPAPI start
387+AC_ARG_ENABLE([cust_opapi],
388+ [AS_HELP_STRING([--enable-cust_opapi],
389+ [Enable Huawei CUSTOPAPI benchmarks])
390+ ],
391+ [],
392+ [enable_cust_opapi=no])
393+AC_ARG_WITH([cust_opapi],
394+ [AS_HELP_STRING([--with-cust_opapi=@<:@cust_opapi installation path@:>@],
395+ [Provide path to cust_opapi installation])
396+ ],
397+ [AS_CASE([$with_cust_opapi],
398+ [yes|no], [],
399+ [LDFLAGS="$LDFLAGS -L/home/zdy/vendors/customize/op_api/lib -lcust_opapi"])
400+ ])
401+ 
402+ 
403+ 
404+AM_CONDITIONAL([CUSTOPAPI], [test x$enable_cust_opapi = xyes])
405+dnl CUSTOPAPI done
406+ 
407+AC_ARG_ENABLE([rocm],
408+ [AS_HELP_STRING([--enable-rocm],
409+ [Enable ROCm benchmarks])
410+ ],
411+ [],
412+ [enable_rocm=no])
413+ 
414+AC_ARG_ENABLE([rocm_dmabuf],
415+ [AS_HELP_STRING([--enable-rocm-dmabuf],
416+ [Enable ROCm DMABUF feature])
417+ ],
418+ [],
419+ [enable_rocm_dmabuf=no])
420+ 
421+AC_ARG_WITH([rocm],
422+ [AS_HELP_STRING([--with-rocm=@<:@ROCm installation path@:>@],
423+ [Provide path to ROCm installation])
424+ ],
425+ [AS_CASE([$with_rocm],
426+ [yes|no], [],
427+ [CPPFLAGS="-I$with_rocm/include -I$with_rocm/include/hsa $CPPFLAGS"
428+ LDFLAGS="-L$with_rocm/lib64 -Wl,-rpath=$with_rocm/lib64 -L$with_rocm/lib -Wl,-rpath=$with_rocm/lib -lamdhip64 -lhsa-runtime64 $LDFLAGS"])
429+ ])
430+ 
431+AS_IF([test "x$enable_rocm" = xyes], [
432+ AC_DEFINE([__HIP_PLATFORM_AMD__], [1], [Enable ROCm])
433+ AC_CHECK_HEADERS([hip/hip_runtime_api.h], [],
434+ [AC_MSG_ERROR([cannot include hip/hip_runtime_api.h])])
435+ AC_CHECK_HEADERS([hip/hip_version.h], [],
436+ [AC_MSG_ERROR([cannot include hip_version.h])])
437+ AC_SEARCH_LIBS([hipFree], [amdhip64], [],
438+ [AC_MSG_ERROR([cannot link with -lamdhip64])])
439+ AC_DEFINE([HAVE_ROCM], [1], [Enable ROCm])
440+ ])
441+ 
442+AM_CONDITIONAL([ROCM], [test x$enable_rocm = xyes])
443+ 
444+AS_IF([test "x$enable_rocm_dmabuf" = xyes], [
445+ AS_IF([test "x$HAVE_REG_DMABUF_MR" = "xno"],
446+ [AC_MSG_ERROR([rdma-core doesn't support dmabuf mr registration])])
447+ AS_IF([test "x$enable_rocm" = "xno"],
448+ [AC_MSG_ERROR([rocm not enabled/supported])])
449+ AC_CHECK_HEADERS([hsa/hsa_ext_amd.h], [],
450+ [AC_MSG_ERROR([cannot include hsa/hsa_ext_amd.h])])
451+ AC_SEARCH_LIBS([hsa_amd_portable_export_dmabuf], [hsa-runtime64], [],
452+ [AC_MSG_ERROR([cannot link with -lhsa-runtime64])])
453+ AC_DEFINE([HAVE_ROCM_DMABUF], [1], [Enable ROCm DMABUF feature])
454+ ])
455+ 
456+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
457+#include <infiniband/verbs.h>]], [[int x = IBV_ACCESS_ON_DEMAND;]])],[HAVE_EX_ODP=yes],[HAVE_EX_ODP=no])
458+AM_CONDITIONAL([HAVE_EX_ODP],[test "x$HAVE_EX_ODP" = "xyes"])
459+if [test $HAVE_EX_ODP = yes] && [test $HAVE_EX = yes]; then
460+ AC_DEFINE([HAVE_EX_ODP], [1], [Have Extended ODP support])
461+fi
462+ 
463+AC_CHECK_LIB([dl], [dlclose],
464+ [AC_MSG_RESULT([libdl found])
465+ LIBS="$LIBS -ldl"],
466+ [AC_MSG_ERROR([libdl not found. You need to install libdl for dynamic loading support])])
467+ 
468+ 
469+# Check for CUDA header file in common location
470+AC_MSG_CHECKING([for CUDA header file])
471+cuda_found=no
472+cuda_h_path=""
473+ 
474+if test -f "/usr/local/cuda/include/cuda.h"; then
475+ cuda_h_path="/usr/local/cuda/include/cuda.h"
476+ cuda_found=yes
477+ AC_MSG_RESULT([found at $cuda_h_path])
478+fi
479+ 
480+# User defined cuda header path
481+if test -f "$CUDA_H_PATH"; then
482+ cuda_h_path="$CUDA_H_PATH"
483+ cuda_found=yes
484+ AC_MSG_RESULT([found at $cuda_h_path])
485+fi
486+ 
487+if test "$cuda_found" = "yes"; then
488+ AC_DEFINE([HAVE_CUDA], [1], [Enable CUDA feature])
489+ AC_DEFINE_UNQUOTED([CUDA_PATH], "$cuda_h_path" , [Enable CUDA feature])
490+ AC_CHECK_LIB([cuda], [cuMemGetHandleForAddressRange], [HAVE_CUDA_CUMEMGETHANDLEFORADDRESSRANGE=yes], [HAVE_CUDA_CUMEMGETHANDLEFORADDRESSRANGE=no])
491+ cuda_toolkit_version=`grep "define CUDA_VERSION" $cuda_h_path | cut -d' ' -f3`
492+ AC_DEFINE_UNQUOTED([CUDA_VER], [$cuda_toolkit_version], [Define CUDA_VER])
493+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
494+ #include <$cuda_h_path>]], [[int x = CU_MEM_RANGE_HANDLE_TYPE_DMA_BUF_FD|CU_DEVICE_ATTRIBUTE_DMA_BUF_SUPPORTED;]])],[CUDA_DMA_BUF_PARAMETERS_SUPPORT=yes],[CUDA_DMA_BUF_PARAMETERS_SUPPORT=no])
495+ if [test "x$HAVE_REG_DMABUF_MR" = "xyes"] && [test "x$HAVE_CUDA_CUMEMGETHANDLEFORADDRESSRANGE" = "xyes"] && [test "x$CUDA_DMA_BUF_PARAMETERS_SUPPORT" = "xyes"]; then
496+ HAVE_CUDA_DMABUF=yes
497+ AC_DEFINE([HAVE_CUDA_DMABUF], [1], [Enable CUDA DMABUF feature])
498+ fi
499+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
500+ #include <$cuda_h_path>]], [[int x = CU_MEM_RANGE_FLAG_DMA_BUF_MAPPING_TYPE_PCIE;]])],[CUDA_DMA_BUF_MAPPING_TYPE_PCIE_SUPPORT=yes],[CUDA_DMA_BUF_MAPPING_TYPE_PCIE_SUPPORT=no])
501+ if [test "x$CUDA_DMA_BUF_MAPPING_TYPE_PCIE_SUPPORT" = "xyes"] && [test "x$HAVE_REG_DMABUF_MR" = "xyes"]; then
502+ AC_DEFINE([HAVE_DMABUF_MAPPING_TYPE_PCIE], [1], [Enable CUDA DMABUF handle mapping via PCIe BAR1])
503+ fi
504+ 
505+ if [test "x$enable_cudart" = "xyes"]; then
506+ AC_DEFINE([HAVE_CUDART], [1], [Enable CUDART features])
507+ LIBS=$LIBS" -lcudart -lstdc++"
508+ CPPFLAGS="-I$(dirname $cuda_h_path)/include $CPPFLAGS"
509+ LDFLAGS="-L$(dirname $(dirname $cuda_h_path))/lib -L$(dirname $(dirname $cuda_h_path))/lib64 $LDFLAGS"
510+ 
511+ if [test "x${gpu_arch}" != "x"]; then
512+ NVCCFLAGS="${NVCCFLAGS} -arch compute_${gpu_arch} -code compute_${gpu_arch},sm_${gpu_arch}"
513+ AC_MSG_NOTICE([Setting GPU_ARCH = ${gpu_arch}])
514+ fi
515+ NVCCFLAGS="${NVCCFLAGS} -Xcompiler -fpermissive"
516+ AC_CHECK_DECLS([CUDA_VERSION], [HAVE_CUDA_VERSION=yes], [HAVE_CUDA_VERSION=no], [[#include "$cuda_h_path"]])
517+ if [test "x$HAVE_CUDA_VERSION" = "xyes"]; then
518+ AS_VERSION_COMPARE([$cuda_toolkit_version], [11070], [HAVE_CUDA_DIAGSUPPRESS=no], [HAVE_CUDA_DIAGSUPPRESS=yes], [HAVE_CUDA_DIAGSUPPRESS=yes])
519+ if [test "x$HAVE_CUDA_DIAGSUPPRESS" = "xyes"]; then
520+ NVCCFLAGS="${NVCCFLAGS} -Xcompiler -fpermissive -diag-suppress 2464 -diag-suppress 815"
521+ else
522+ NVCCFLAGS="${NVCCFLAGS} -Xcompiler -fpermissive"
523+ fi
524+ fi
525+ 
526+ CUDA_TOOLKIT_PATH=$(dirname $(dirname $cuda_h_path))
527+ AC_DEFINE_UNQUOTED([CUDA_TOOLKIT_PATH], "$CUDA_TOOLKIT_PATH", [Path to the CUDA Toolkit])
528+ AC_SUBST([NVCCFLAGS], ["${NVCCFLAGS}"])
529+ AC_SUBST([NVCC], ["$CUDA_TOOLKIT_PATH/bin/nvcc"])
530+ 
531+ AC_CHECK_LIB([cudart], [cudaMalloc], [], [AC_MSG_ERROR([libcudart not found])])
532+ fi
533+fi
534+AM_CONDITIONAL([CUDA_DMA_BUF_PARAMETERS_SUPPORT],[test "x$CUDA_DMA_BUF_PARAMETERS_SUPPORT" = "xyes"])
535+AM_CONDITIONAL([CUDA_DMA_BUF_MAPPING_TYPE_PCIE_SUPPORT],[test "x$CUDA_DMA_BUF_MAPPING_TYPE_PCIE_SUPPORT" = "xyes"])
536+ 
537+AM_CONDITIONAL([CUDA], [test "$cuda_h_path"])
538+AM_CONDITIONAL([HAVE_CUDA], [test "$cuda_h_path"])
539+AM_CONDITIONAL([HAVE_CUDART], [test "x$enable_cudart" = "xyes"])
540+ 
541+AC_ARG_ENABLE([neuron],
542+ [AS_HELP_STRING([--enable-neuron],
543+ [Enable Neuron benchmarks])
544+ ],
545+ [],
546+ [enable_neuron=no])
547+ 
548+AC_ARG_WITH([neuron],
549+ [AS_HELP_STRING([--with-neuron=@<:@NRT installation path@:>@],
550+ [Provide path to NRT installation])
551+ ],
552+ [AS_CASE([$with_neuron],
553+ [yes|no], [],
554+ [CPPFLAGS="-I$with_neuron/include $CPPFLAGS"
555+ LDFLAGS="-L$with_neuron/lib -Wl,-rpath=$with_neuron/lib $LDFLAGS"])
556+ ])
557+ 
558+AS_IF([test "x$enable_neuron" = xyes], [
559+ AC_DEFINE([HAVE_NEURON], [1], [Enable Neuron benchmarks])
560+ AC_CHECK_HEADERS([nrt/nrt.h], [],
561+ [AC_MSG_ERROR([could not find nrt.h in include path])])
562+ AC_SEARCH_LIBS([nrt_tensor_allocate], [nrt], [],
563+ [AC_MSG_ERROR([could not find library, nrt])])
564+ AC_SEARCH_LIBS([nrt_get_dmabuf_fd], [nrt],
565+ [AC_DEFINE([HAVE_NEURON_DMABUF], [1], [Enable Neuron DMA buffers])],
566+ [])
567+ ])
568+ 
569+AM_CONDITIONAL([NEURON], [test x$enable_neuron = xyes])
570+ 
571+AC_ARG_ENABLE([hl],
572+ [AS_HELP_STRING([--enable-hl],
573+ [Enable Habana Labs benchmarks])
574+ ],
575+ [],
576+ [enable_hl=no])
577+ 
578+AC_ARG_WITH([hl],
579+ [AS_HELP_STRING([--with-hl=@<:@habanalabs installation prefix@:>@],
580+ [Provide Habana Labs installation prefix])
581+ ],
582+ [AS_CASE([$with_hl],
583+ [yes|no], [],
584+ [CPPFLAGS="-I$with_hl/include/habanalabs -I/usr/include/drm -I/usr/include/libdrm $CPPFLAGS"
585+ LDFLAGS="-L$with_hl/lib/habanalabs -Wl,-rpath=$with_hl/lib/habanalabs $LDFLAGS"])
586+ ])
587+ 
588+AS_IF([test "x$enable_hl" = xyes], [
589+ AC_DEFINE([HAVE_HL], [1], [Enable Habana Labs benchmarks])
590+ AS_IF([test "x$HAVE_REG_DMABUF_MR" = "xno"],
591+ [AC_MSG_ERROR([rdma-core doesn't support dmabuf mr registration])])
592+ AC_CHECK_HEADERS([misc/habanalabs.h hlthunk.h synapse_api.h], [],
593+ [AC_MSG_ERROR([could not find hl headers in include path])])
594+ AC_SEARCH_LIBS([hlthunk_device_memory_export_dmabuf_fd], [hl-thunk], [],
595+ [AC_MSG_ERROR([could not find library, hl-thunk])])
596+ AC_SEARCH_LIBS([synDeviceMalloc], [Synapse], [],
597+ [AC_MSG_ERROR([could not find library, Synapse])])
598+ ])
599+ 
600+AM_CONDITIONAL([HABANALABS], [test x$enable_hl = xyes])
601+ 
602+AC_ARG_ENABLE([mlu],
603+ [AS_HELP_STRING([--enable-mlu],
604+ [Enable MLU benchmarks])
605+ ],
606+ [],
607+ [enable_mlu=no])
608+ 
609+AC_ARG_WITH([mlu],
610+ [AS_HELP_STRING([--with-mlu=@<:@MLU installation path@:>@],
611+ [Provide path to MLU installation])
612+ ],
613+ [AS_CASE([$with_mlu],
614+ [yes|no], [],
615+ [CPPFLAGS="-I$with_mlu/include $CPPFLAGS"
616+ LDFLAGS="-L$with_mlu/lib64 -Wl,-rpath=$with_mlu/lib64 -lcndrv $LDFLAGS"])
617+ ])
618+ 
619+AS_IF([test "x$enable_mlu" = xyes], [
620+ AC_DEFINE([HAVE_MLU], [1], [Enable MLU benchmarks])
621+ AC_CHECK_HEADERS([cn_api.h], [],
622+ [AC_MSG_ERROR([could not find cn_api.h in include path])])
623+ AC_SEARCH_LIBS([cnMalloc], [cndrv], [],
624+ [AC_MSG_ERROR([could not find library, cndrv])])
625+ AC_SEARCH_LIBS([cnMemGetHandleForAddressRange], [cndrv],
626+ [AC_DEFINE([HAVE_MLU_DMABUF], [1], [Enable MLU DMA buffers])],
627+ [])
628+ ])
629+ 
630+AM_CONDITIONAL([MLU], [test x$enable_mlu = xyes])
631+ 
632+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <infiniband/verbs.h>]], [[struct ibv_qp_attr *attr; int x = attr->rate_limit;]])],[HAVE_PACKET_PACING=yes],[HAVE_PACKET_PACING=no])
633+AM_CONDITIONAL([HAVE_PACKET_PACING],[test "x$HAVE_PACKET_PACING" = "xyes"])
634+if [test $HAVE_PACKET_PACING = yes]; then
635+ AC_DEFINE([HAVE_PACKET_PACING], [1], [Have PACKET_PACING support])
636+fi
637+ 
638+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <infiniband/verbs.h>]], [[int x = IBV_OOO_RW_DATA_PLACEMENT;]])],[HAVE_OOO_ATTR=yes],[HAVE_OOO_ATTR=no])
639+AM_CONDITIONAL([HAVE_OOO_ATTR], [test "x$HAVE_OOO_ATTR" = "xyes"])
640+if [test $HAVE_OOO_ATTR = yes]; then
641+ AC_DEFINE([HAVE_OOO_ATTR], [1], [Have Out of order data placement support])
642+fi
643+ 
644+if [test $HAVE_IBV_WR_API = yes]; then
645+ AC_CHECK_LIB([efa], [efadv_create_qp_ex], [HAVE_SRD=yes], [HAVE_SRD=no])
646+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <infiniband/efadv.h>]], [[int x = EFADV_DEVICE_ATTR_CAPS_RDMA_READ;]])],[HAVE_RDMA_READ_SRD=yes],[HAVE_RDMA_READ_SRD=no])
647+ if [test $HAVE_RDMA_READ_SRD = yes]; then
648+ AC_DEFINE([HAVE_SRD_WITH_RDMA_READ], [1], [Have SRD with RDMA read support])
649+ fi
650+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <infiniband/efadv.h>]], [[int x = EFADV_DEVICE_ATTR_CAPS_RDMA_WRITE;]])],[HAVE_RDMA_WRITE_SRD=yes],[HAVE_RDMA_WRITE_SRD=no])
651+ if [test $HAVE_RDMA_WRITE_SRD = yes]; then
652+ AC_DEFINE([HAVE_SRD_WITH_RDMA_WRITE], [1], [Have SRD with RDMA write support])
653+ fi
654+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <infiniband/efadv.h>]], [[int x = EFADV_DEVICE_ATTR_CAPS_UNSOLICITED_WRITE_RECV;]])],[HAVE_UNSOLICITED_WRITE_RECV_SRD=yes],[HAVE_UNSOLICITED_WRITE_RECV_SRD=no])
655+ if [test $HAVE_UNSOLICITED_WRITE_RECV_SRD = yes]; then
656+ AC_DEFINE([HAVE_SRD_WITH_UNSOLICITED_WRITE_RECV], [1], [Have SRD with unsolicited RDMA write with imm. support])
657+ fi
658+else
659+ AC_CHECK_LIB([efa], [efadv_create_driver_qp], [HAVE_SRD=yes], [HAVE_SRD=no])
660+fi
661+AM_CONDITIONAL([HAVE_SRD], [test "x$HAVE_SRD" = "xyes"])
662+if [test $HAVE_SRD = yes]; then
663+ AC_DEFINE([HAVE_SRD], [1], [Have SRD support])
664+ AC_SUBST([LIBEFA], [-lefa])
665+fi
666+ 
667+AC_CHECK_LIB([mlx5], [mlx5dv_create_qp], [HAVE_MLX5DV_LIB=yes LIBMLX5=-lmlx5], [HAVE_MLX5DV_LIB=no])
668+AM_CONDITIONAL([HAVE_MLX5DV_LIB], [test "x$HAVE_MLX5DV_LIB" = "xyes"])
669+if [test $HAVE_MLX5DV_LIB = yes] && [test $HAVE_MLX5DV = yes]; then
670+ AC_DEFINE([HAVE_MLX5DV], [1], [Have Direct Verbs support])
671+ AC_SUBST([LIBMLX5])
672+fi
673+ 
674+AC_CHECK_LIB([hns], [hnsdv_query_device], [HAVE_HNSDV=yes LIBHNS=-lhns], [HAVE_HNSDV=no])
675+AM_CONDITIONAL([HAVE_HNSDV], [test "x$HAVE_HNSDV" = "xyes"])
676+if [test $HAVE_HNSDV = yes]; then
677+ AC_DEFINE([HAVE_HNSDV], [1], [Have hns Direct Verbs support])
678+ AC_SUBST([LIBHNS])
679+fi
680+ 
681+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <infiniband/verbs.h>]], [[ibv_cq_ex_to_cq]])],[HAVE_CQ_EX=yes],[HAVE_CQ_EX=no])
682+AM_CONDITIONAL([HAVE_CQ_EX], [test "x$HAVE_CQ_EX" = "xyes"])
683+if [test $HAVE_CQ_EX = yes]; then
684+ AC_DEFINE([HAVE_CQ_EX], [1], [Have CQ EX API support])
685+fi
686+ 
687+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <infiniband/verbs.h>]], [[ibv_alloc_td]])],[HAVE_TD_API=yes],[HAVE_TD_API=no])
688+AM_CONDITIONAL([HAVE_TD_API], [test "x$HAVE_TD_API" = "xyes"])
689+if [test $HAVE_TD_API = yes]; then
690+ AC_DEFINE([HAVE_TD_API], [1], [Have TD API support])
691+fi
692+ 
693+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <infiniband/verbs.h>]], [[ibv_reg_mr_ex]])],[HAVE_REG_MR_EX=yes],[HAVE_REG_MR_EX=no])
694+AM_CONDITIONAL([HAVE_REG_MR_EX], [test "x$HAVE_REG_MR_EX" = "xyes"])
695+if [test $HAVE_REG_MR_EX = yes]; then
696+ AC_DEFINE([HAVE_REG_MR_EX], [1], [Have reg mr extended API support])
697+fi
698+ 
699+CFLAGS="-g -Wall -D_GNU_SOURCE -O3 $CFLAGS"
700+CXXFLAGS="-g -Wall -D_GNU_SOURCE -O3 -std=c++11 $CXXFLAGS"
701+LDFLAGS="$LDFLAGS -L/usr/local/Ascend/driver/lib64/driver"
702+if test "x$use_cann" = "xyes"; then
703+ LIBS=$LIBS" -lpthread $LIBUMAD $LIBMLX5 $LIBEFA -libv_extend $CANN_LIBS"
704+else
705+ LIBS=$LIBS" -lpthread $LIBUMAD $LIBMLX5 $LIBEFA $CANN_LIBS"
706+fi
707+AM_CONDITIONAL([OPENCL], [test "$HAVE_OPENCL"])
708+if [test $HAVE_OPENCL = yes]; then
709+ AC_DEFINE([HAVE_OPENCL], [1], [Enable OPENCL feature])
710+ AC_CHECK_LIB([OpenCL], [clGetDeviceIDs], [], [AC_MSG_ERROR([libOpenCL not found])])
711+fi
712+ 
713+AC_SUBST([LIBUMAD])
714+AC_SUBST([LIBMATH])
715+AC_CONFIG_FILES([Makefile])
716+AC_CONFIG_COMMANDS([man], [${MKDIR_P} man])
717+AC_OUTPUT
718+ 
@@ -1,552 +0,0 @@
1-.TH perftest 1
2-.SH NAME
3-ib_write_bw, ib_read_bw, ib_send_bw, ib_atomic_bw,
4-ib_write_lat, ib_read_lat, ib_send_lat, ib_atomic_lat,
5-raw_ethernet_bw, raw_ethernet_lat, raw_ethernet_burst_lat,
6-raw_ethernet_fs_rate \- benchmarks for various types of infinabnd performance
7-.SH DESCRIPTION
8-.TP
9-Perftest is a package that includes various benchmarks that measures
10-different metrics & verbs performance which include
11-many different options and modes.
12-.SS RUNNING TESTS
13-.TP
14-.B Server:
15- ./<test name> <options>
16-.TP
17-.B Client:
18- ./<test name> <options> <server IP address>
19-.TP
20-.B Examples:
21- 1- Running bidirectional bandwidth test using Write verb for 5 seconds with 8388608 as a message size and 3 qps:
22- Server: ./ib_write_bw -s 8388608 -b -D 5 -q 3
23- Client: ./ib_write_bw -s 8388608 -b -D 5 -q 3 1.1.1.2
24- 
25- 2- Running latency test using Read verb for 5000 iterations with 32 as a message size:
26- Server: ./ib_read_lat -s 32 -n 5000
27- Client: ./ib_read_lat -s 32 -n 5000 192.168.0.1
28- 
29-.SS IMPORTANT NOTES
30-.TP
31- 1- The options that specific to modes in perftest must be the same for both server and client.
32- 2- Perftest applications may need to be ran with sudo when running from non root.
33- 3- Perftest applications usually installed to the /usr/bin/.
34- 4- Perftest may print some failures with syndroms to the stderr, perftest get those errors from rdma-core.
35-.SH OPTIONS
36-.TP
37-.B -h, --help
38- Lists the available options to the screen.
39-.TP
40-.B -a, --all
41- Run sizes from 2 till 2^23.
42- Not relevant for Atomic and RawEth.
43-.TP
44-.B -A, --atomic_type=<type>
45- Type of atomic operation from {CMP_AND_SWAP,FETCH_AND_ADD} (default FETCH_AND_ADD).
46- Relevant only for Atomic.
47-.TP
48-.B -b, --bidirectional
49- Measure bidirectional bandwidth (default unidirectional).
50- Relevant only for BW.
51-.TP
52-.B -c, --connection=<RC/XRC/UC/UD/DC/SRD>
53- Connection type RC/XRC/UC/UD/DC/SRD (default RC).
54- UD relevant only for Send verb.
55- SRD relevant only for Read, Write and Send verbs.
56- UC relevant only for Write and Send verbs.
57- Not relevant for RawEth.
58-.TP
59-.B --log_dci_streams=<log_num_dci_stream_channels> (default 0)
60- Run DC initiator as DCS instead of DCI with <log_num dci_stream_channels>.
61- Not relevant for RawEth.
62- System support required.
63-.TP
64-.B --log_active_dci_streams=<log_num_active_dci_stream_channels> (default log_num_dci_stream_channels)
65- Not relevant for RawEth.
66- System support required.
67-.TP
68-.B --aes_xts
69- Runs traffic with AES_XTS feature (encryption).
70- Not relevant for RawEth and Write latency.
71- System support required.
72-.TP
73-.B --encrypt_on_tx
74- Runs traffic with encryption on tx (default decryption on tx).
75- Not relevant for RawEth and Write latency.
76- System support required.
77-.TP
78-.B --sig_before
79- Puts signature on data before encrypting it (default after).
80- Not relevant for RawEth and Write latency.
81- System support required.
82-.TP
83-.B --aes_block_size=<512,520,4048,4096,4160> (default 512)
84- Not relevant for RawEth and Write latency.
85- System support required.
86-.TP
87-.B --data_enc_keys_number=<number of data encryption keys> (default 1)
88- Not relevant for RawEth and Write latency.
89- System support required.
90-.TP
91-.B --kek_path <path to the key encryption key file>
92- Not relevant for RawEth and Write latency.
93- System support required.
94-.TP
95-.B --credentials_path <path to the credentials file>
96- Not relevant for RawEth and Write latency.
97- System support required.
98-.TP
99-.B --data_enc_key_app_path <path to the data encryption key app>
100- Not relevant for RawEth and Write latency.
101- System support required.
102-.TP
103-.B -C, --report-cycles
104- Report times in cpu cycle units (default microseconds).
105- Relevant only for latency.
106-.TP
107-.B -d, --ib-dev=<dev>
108- Use IB device <dev> (default first device found).
109-.TP
110-.B -D, --duration
111- Run test for a customized period of seconds.
112-.TP
113-.B -e, --events
114- Sleep on CQ events (default poll).
115- Not relevant for Write and RawEth.
116-.TP
117-.B -X, --vector=<completion vector>
118- Set <completion vector> used for events.
119- Not relevant for Write and RawEth.
120-.TP
121-.B -f, --margin
122- measure results within margins. (default=2sec).
123-.TP
124-.B -F, --CPU-freq
125- Do not show a warning even if cpufreq_ondemand module is loaded, and cpu-freq is not on max.
126-.TP
127-.B -g, --mcg
128- Send messages to multicast group with 1 QP attached to it.
129- When there is no multicast gid specified, a default IPv6 typed gid '255:1:0:0:0:2:201:133:0:0:0:0:0:0:0:0' will be used.
130- Relevant only for send non fsRate.
131-.TP
132-.B -H, --report-histogram
133- Print out all results (default print summary only).
134- Relevant only for latency and raw_ethernet_fs_rate.
135-.TP
136-.B -i, --ib-port=<port>
137- Use port <port> of IB device (default 1).
138-.TP
139-.B -I, --inline_size=<size>
140- Max size of message to be sent in inline.
141- Not relevant for Read and Atomic.
142-.TP
143-.B -l, --post_list=<list size>
144- Post list of send WQEs of <list size> size (instead of single post).
145- Relevant only for BW and raw_ethernet_burst_lat.
146-.TP
147-.B --recv_post_list=<list size>
148- Post list of receive WQEs of <list size> size (instead of single post).
149- Relevant only for BW and raw_ethernet_burst_lat.
150-.TP
151-.B -L, --hop_limit=<hop_limit>
152- Set hop limit value (ttl for IPv4 RawEth QP). Values 0-255 (default 64).
153- Relevant only for RawEth
154- Not relevant for raw_ethernet_fs_rate.
155-.TP
156-.B -m, --mtu=<mtu>
157- MTU size : 64 - 9600 (default port mtu) for RawEth else 256 - 4096.
158- Not relevant for raw_ethernet_fs_rate.
159-.TP
160-.B -M, --MGID=<multicast_gid>
161- In multicast, uses <multicast_gid> as the group MGID.
162- <multicast_gid> can be either decimal or hexadecimal, e.g. regarding the IPv4 224.0.0.30 :
163- Decimal: 0:0:0:0:0:0:0:0:0:0:255:255:224:0:0:30 , Hexadecimal: 0:0:0:0:0:0:0:0:0:0:0xff:0xff:0xe0:0:0:0x1e
164- Relevant only for send non fsRate.
165-.TP
166-.B -n, --iters=<iters>
167- Number of exchanges (at least 5, default for write 5000 else 1000 ).
168-.TP
169-.B -N, --noPeak
170- Cancel peak-bw calculation (default with peak up to iters=20000).
171- Relevant only for bandwidth.
172-.TP
173-.B -o, --outs=<num>
174- Relevant only for Read and Atomic.
175-.TP
176-.B -O, --dualport
177- Run test in dual-port mode.
178- Not relevant for RawEth.
179- Relevant only for bandwidth.
180- System support required.
181-.TP
182-.B -p, --port=<port>
183- Listen on/connect to port <port> (default 18515).
184-.TP
185-.B -q, --qp=<num of qp's>
186- Num of qp's(default 1).
187- Relevant only for bandwidth.
188-.TP
189-.B -Q, --cq-mod
190- Generate Cqe only after <--cq-mod> completion.
191- Relevant only for bandwidth.
192-.TP
193-.B --cqe_poll
194- Number of CQEs polled per iteration
195-.TP
196-.B -r, --rx-depth=<dep>
197- Rx queue size (default 512), if using srq, rx-depth controls max-wr size of the srq.
198- Relevant only for send non fsRate.
199-.TP
200-.B -R, --rdma_cm
201- Connect QPs with rdma_cm and run test on those QPs.
202- Not relevant for RawEth.
203-.TP
204-.B -s, --size=<size>
205- Size of message to exchange (default 65536 for bw, for lat 2).
206- Not relevant for Atomic.
207-.TP
208-.B -S, --sl=<sl>
209- SL (default 0).
210- Not relevant for raw_ethernet_fs_rate.
211-.TP
212-.B -t, --tx-depth=<dep>
213- Size of tx queue (default 128 for bw else 1).
214- Relevant only for bw and raw_ethernet_burst_lat.
215-.TP
216-.B -T, --tos=<tos value>
217- Set <tos_value> to RDMA-CM QPs. available only with -R flag. values 0-256 (default off).
218- Not relevant for RawEth
219-.TP
220-.B -u, --qp-timeout=<timeout>
221- QP timeout, timeout value is 4 usec * 2 ^(timeout), default 14.
222-.TP
223-.B -U, --report-unsorted
224- (implies -H) print out unsorted results (default sorted).
225- Relevant only for latency and raw_ethernet_burst_lat and raw_ethernet_fs_rate.
226-.TP
227-.B -V, --version
228- Display perftest version number.
229-.TP
230-.B -W, --report-counters=<list of counter names>
231- Report performance counter change (example: counters/port_xmit_data,hw_counters/out_of_buffer).
232-.TP
233-.B -x, --gid-index=<index>
234- Test uses GID with GID index.
235- Not relevant for RawEth.
236-.TP
237-.B -z, --comm_rdma_cm
238- Communicate with rdma_cm module to exchange data - use regular QPs.
239- Not relevant for RawEth.
240-.TP
241-.B --out_json
242- Save the report in a json file.
243-.TP
244-.B --out_json_file=<file>
245- Name of the report json file. (Default: "perftest_out.json" in the working directory).
246-.TP
247-.B --cpu_util
248- Show CPU Utilization in report, valid only in Duration mode.
249-.TP
250-.B --dlid
251- Set a Destination LID instead of getting it from the other side.
252- Not relevant for raw_ethernet_fs_rate.
253-.TP
254-.B --dont_xchg_versions
255- Do not exchange versions and MTU with other side.
256- Not relevant for RawEth.
257-.TP
258-.B --force-link=<value>
259- Force the link(s) to a specific type: IB or Ethernet.
260- Not relevant for raw_ethernet_fs_rate.
261-.TP
262-.B --use-srq
263- Use a Shared Receive Queue. --rx-depth controls max-wr size of the SRQ.
264- Relevant only for Send.
265-.TP
266-.B --ipv6
267- Use IPv6 GID. Default is IPv4.
268- Not relevant for RawEth.
269-.TP
270-.B --ipv6-addr
271- Use IPv6 address for parameters negotiation. Default is IPv4.
272- Not relevant for RawEth.
273-.TP
274-.B --bind_source_ip
275- Source IP of the interface used for connection establishment. By default taken from routing table.
276- --ipv6-addr flag must be used when specifying an IPv6 source IP
277- Not relevant for RawEth.
278-.TP
279-.B --latency_gap=<delay_time>
280- delay time between each post send.
281- Relevant only for latency.
282-.TP
283-.B --mmap=file
284- Use an mmap'd file as the buffer for testing P2P transfers.
285- Not relevant for RawEth.
286-.TP
287-.B --mmap-offset=<offset>
288- The mmap offset.
289- Not relevant for RawEth.
290-.TP
291-.B --mr_per_qp
292- Create memory region for each qp.
293- Relevant only for bandwidth.
294-.TP
295-.B --odp
296- Use On Demand Paging instead of Memory Registration.
297- System support required.
298-.TP
299-.B --output=<units>
300- Set verbosity output level: bandwidth , message_rate, latency.
301- Latency measurement is Average calculation.
302- bw (bandwidth / message_rate), latency (latency).
303-.TP
304-.B --payload_file_path=<payload_txt_file_path>
305- Set the payload by passing a txt file containing a pattern in the next form(little endian): '0xaaaaaaaa,0xbbbbbbbb,...
306- Not relevant for RawEth and Write latency.
307-.TP
308-.B --use_old_post_send
309- Use old post send flow (ibv_post_send).
310-.TP
311-.B --perform_warm_up
312- Perform some iterations before start measuring in order to warming-up memory cache.
313- Not relevant for raw_ethernet_fs_rate.
314-.TP
315-.B --pkey_index=<pkey index>
316- PKey index to use for QP.
317- Not relevant for raw_ethernet_fs_rate.
318-.TP
319-.B --report-both
320- Report RX & TX results separately on Bidirectional BW tests.
321- Relevant only for bidirectional bandwidth.
322-.TP
323-.B --report_gbits
324- Report Max/Average BW of test in Gbit/sec (instead of MiB/sec).
325- Relevant only for bandwidth.
326-.TP
327-.B --report-per-port
328- Report BW data on both ports when running Dualport and Duration mode.
329- Not relevant for RawEth.
330- System support required.
331-.TP
332-.B --reversed
333- Reverse traffic direction - Server send to client.
334-.TP
335-.B --run_infinitely
336- Run test forever, print results every <duration> seconds.
337-.TP
338-.B --retry_count=<value>
339- Set retry count value in rdma_cm mode.
340- Relevant only for rdma_cm mode.
341- Not relevant for RawEth.
342-.TP
343-.B --tclass=<value>
344- Set the Traffic Class in GRH (if GRH is in use).
345- Not relevant for raw_ethernet_fs_rate.
346-.TP
347-.B --use-null-mr
348- Allocate a null memory region with \fBibv_alloc_null_mr\fR(3)
349-.TP
350-.B --use_cuda=<cuda device id>
351- Use CUDA specific device for GPUDirect RDMA testing.
352- Not relevant for raw_ethernet_fs_rate.
353- System support required.
354-.TP
355-.B --use_cuda_bus_id=<cuda full BUS id>
356- Use CUDA specific device, based on its full PCIe address, for GPUDirect RDMA testing.
357- Not relevant for raw_ethernet_fs_rate.
358- System support required.
359-.TP
360-.B --cuda_mem_type=<value>
361- Set CUDA memory type <value>=0(device,default),1(managed),4(malloc)
362- Not relevant for raw_ethernet_fs_rate.
363- System support required.
364-.TP
365-.B --use_cuda_dmabuf
366- Use CUDA DMA-BUF for GPUDirect RDMA testing.
367- Not relevant for raw_ethernet_fs_rate.
368- System support required.
369-.TP
370-.B --use_hl=<hl device id>
371- Use HabanaLabs specific device for HW accelerator direct RDMA testing.
372- System support required.
373-.TP
374-.B --use_neuron=<logical neuron core id>
375- Use Neuron specific device for HW accelerator direct RDMA testing.
376- System support required.
377-.TP
378-.B --use_neuron_dmabuf
379- Use Neuron DMA-BUF for HW accelerator direct RDMA testing.
380- System support required.
381-.TP
382-.B --use_rocm=<rocm device id>
383- Use selected ROCm device for GPUDirect RDMA testing.
384- Not relevant for raw_ethernet_fs_rate.
385- System support required.
386-.TP
387-.B --use_rocm_dmabuf
388- Use ROCm DMA-BUF for GPUDirect RDMA testing.
389- Not relevant for raw_ethernet_fs_rate.
390- System support required.
391-.TP
392-.B --use_mlu=<mlu device id>
393- Use MLU specific device for HW accelerator direct RDMA testing.
394- System support required.
395-.TP
396-.B --use_mlu_dmabuf
397- Use MLU DMA-BUF for HW accelerator direct RDMA testing.
398- System support required.
399-.TP
400-.B --use_opencl=<opencl device id>
401- Use OpenCl specific device for GPUDirect RDMA testing
402- Not relevant for raw_ethernet_fs_rate.
403- System support required.
404-.TP
405-.B --opencl_platform_id=<opencl platform id>
406- Use OpenCl specific platform ID
407- System support required.
408-.TP
409-.B --gpu_touch=<once\\infinte>
410- Set GPU touch mode to test memory accesses during the testing process.
411- Relevant only for CUDA and OpenCL memory types
412-.TP
413-.B --use_hugepages
414- Use Hugepages instead of contig, memalign allocations.
415- Not relevant for raw_ethernet_fs_rate.
416-.TP
417-.B --tph_mem=<memory_type>
418- Set TPH memory type.
419- <memory_type> can be 'persistent'/'pm' or 'volatile'/'vm'.
420- Must be used together with --ph flag.
421- Requires hardware and driver support for TPH functionality.
422-.TP
423-.B --cpu_id=<cpu_core_id>
424- Specify the CPU core ID that should handle the TPH request.
425- Must be used together with --tph_mem flag.
426- Requires hardware and driver support for TPH functionality.
427-.TP
428-.B --ph=<processing_hints>
429- Specify processing hints for TPH:
430- 0 = Bidirectional, 1 = Requester, 2 = Target (Completer), 3 = Target with priority.
431- Requires hardware and driver support for TPH functionality.
432-.TP
433-.B --wait_destroy=<seconds>
434- Wait <seconds> before destroying allocated resources (QP/CQ/PD/MR..).
435- Relevant only for bandwidth and raw_ethernet_burst_lat.
436-.TP
437-.B --disable_pcie_relaxed
438- Disable PCIe relaxed ordering.
439- Relevant only for bandwidth and raw_ethernet_burst_lat.
440- System support required.
441-.TP
442-.B --burst_size=<size>
443- Set the amount of messages to send in a burst when using rate limiter.
444- Relevant only for bandwidth and raw_ethernet_burst_lat.
445-.TP
446-.B --typical_pkt_size=<bytes>
447- Set the size of packet to send in a burst. Only supports PP rate limiter.
448- Relevant only for bandwidth and raw_ethernet_burst_lat.
449-.TP
450-.B --rate_limit=<rate>
451- Set the maximum rate of sent packages. default unit is [Gbps]. use --rate_units to change that.
452- Relevant only for bandwidth and raw_ethernet_burst_lat.
453-.TP
454-.B --rate_units=<units>
455- [Mgp] Set the units for rate limit to MiBps (M), Gbps (g) or pps (p). default is Gbps (g).
456- Relevant only for bandwidth and raw_ethernet_burst_lat.
457-.TP
458-.B --rate_limit_type=<type>
459- [HW/SW/PP] Limit the QP's by HW, PP or by SW. Disabled by default. When rate_limit is not specified HW limit is Default.
460- Relevant only for bandwidth and raw_ethernet_burst_lat.
461-.TP
462-.B --use_ooo
463- Use out of order data placement.
464- System support required.
465-.TP
466-.B --write_with_imm
467- Use write-with-immediate verb instead of write.
468- Write tests only.
469-.SS RawEth only options
470-.TP
471-.B -B, --source_mac
472- Source MAC address by this format XX:XX:XX:XX:XX:XX **MUST** be entered.
473-.TP
474-.B -E, --dest_mac
475- Destination MAC address by this format XX:XX:XX:XX:XX:XX **MUST** be entered.
476-.TP
477-.B -G, --use_rss
478- Use RSS on server side. need to open 2^x qps (using -q flag. default is -q 2). open 2^x clients that transmit to this server.
479-.TP
480-.B -J, --dest_ip
481- Destination ip address by this format X.X.X.X for IPv4 or X:X:X:X:X:X for IPv6 (using to send packets with IP header).
482- System support required for IPv6.
483-.TP
484-.B -j, --source_ip
485- Source ip address by this format X.X.X.X for IPv4 or X:X:X:X:X:X for IPv6 (using to send packets with IP header).
486- System support required for IPv6.
487-.TP
488-.B -K, --dest_port
489- Destination port number (using to send packets with UDP header as default, or you can use --tcp flag to send TCP Header).
490-.TP
491-.B -k, --source_port
492- Source port number (using to send packets with UDP header as default, or you can use --tcp flag to send TCP Header).
493-.TP
494-.B -Y, --ethertype
495- Ethertype value in the ethernet frame by this format 0xXXXX.
496-.TP
497-.B -Z, --server
498- Choose server side for the current machine (--server/--client must be selected ).
499-.TP
500-.B --vlan_en
501- Insert vlan tag in ethernet header.
502-.TP
503-.B --vlan_pcp
504- Specify vlan_pcp value for vlan tag, 0~7. 8 means different vlan_pcp for each packet.
505-.TP
506-.B -P, --client
507- Choose client side for the current machine (--server/--client must be selected).
508- Not relevant for raw_ethernet_fs_rate.
509-.TP
510-.B -v, --mac_fwd
511- Run mac forwarding test.
512- Not relevant for raw_ethernet_fs_rate.
513-.TP
514-.B --flows
515- Set number of TCP/UDP flows, starting from <src_port, dst_port>.
516- Not relevant for raw_ethernet_fs_rate.
517-.TP
518-.B --flows_burst
519- Set number of burst size per TCP/UDP flow.
520- Not relevant for raw_ethernet_fs_rate.
521-.TP
522-.B --promiscuous
523- Run promiscuous mode.
524- Not relevant for raw_ethernet_fs_rate.
525-.TP
526-.B --reply_every
527- In latency test, receiver pong after number of received pings.
528- Not relevant for raw_ethernet_fs_rate.
529-.TP
530-.B --sniffer
531- Run sniffer mode.
532- Not relevant for raw_ethernet_fs_rate.
533- System support required.
534-.TP
535-.B --flow_label=<fl0,fl1,...>
536- IPv6 flow label.
537- Not relevant for raw_ethernet_fs_rate.
538-.TP
539-.B --tcp
540- Send TCP Packets. must include IP and Ports information.
541-.TP
542-.B --raw_ipv6
543- Send IPv6 Packets.
544- System support required.
545-.TP
546-.B --raw_mcast.
547- Relevant only for bandwidth.
548-.SH AUTHORS
549-.TP
550-.B Hassan Khadour <hkhadour@nvidia.com>
551-.TP
552-.B Talat Batheesh <talatb@nvidia.com>
@@ -1,552 +0,0 @@
1-.TH perftest 1
2-.SH NAME
3-ib_write_bw, ib_read_bw, ib_send_bw, ib_atomic_bw,
4-ib_write_lat, ib_read_lat, ib_send_lat, ib_atomic_lat,
5-raw_ethernet_bw, raw_ethernet_lat, raw_ethernet_burst_lat,
6-raw_ethernet_fs_rate \- benchmarks for various types of infinabnd performance
7-.SH DESCRIPTION
8-.TP
9-Perftest is a package that includes various benchmarks that measures
10-different metrics & verbs performance which include
11-many different options and modes.
12-.SS RUNNING TESTS
13-.TP
14-.B Server:
15- ./<test name> <options>
16-.TP
17-.B Client:
18- ./<test name> <options> <server IP address>
19-.TP
20-.B Examples:
21- 1- Running bidirectional bandwidth test using Write verb for 5 seconds with 8388608 as a message size and 3 qps:
22- Server: ./ib_write_bw -s 8388608 -b -D 5 -q 3
23- Client: ./ib_write_bw -s 8388608 -b -D 5 -q 3 1.1.1.2
24- 
25- 2- Running latency test using Read verb for 5000 iterations with 32 as a message size:
26- Server: ./ib_read_lat -s 32 -n 5000
27- Client: ./ib_read_lat -s 32 -n 5000 192.168.0.1
28- 
29-.SS IMPORTANT NOTES
30-.TP
31- 1- The options that specific to modes in perftest must be the same for both server and client.
32- 2- Perftest applications may need to be ran with sudo when running from non root.
33- 3- Perftest applications usually installed to the /usr/bin/.
34- 4- Perftest may print some failures with syndroms to the stderr, perftest get those errors from rdma-core.
35-.SH OPTIONS
36-.TP
37-.B -h, --help
38- Lists the available options to the screen.
39-.TP
40-.B -a, --all
41- Run sizes from 2 till 2^23.
42- Not relevant for Atomic and RawEth.
43-.TP
44-.B -A, --atomic_type=<type>
45- Type of atomic operation from {CMP_AND_SWAP,FETCH_AND_ADD} (default FETCH_AND_ADD).
46- Relevant only for Atomic.
47-.TP
48-.B -b, --bidirectional
49- Measure bidirectional bandwidth (default unidirectional).
50- Relevant only for BW.
51-.TP
52-.B -c, --connection=<RC/XRC/UC/UD/DC/SRD>
53- Connection type RC/XRC/UC/UD/DC/SRD (default RC).
54- UD relevant only for Send verb.
55- SRD relevant only for Read, Write and Send verbs.
56- UC relevant only for Write and Send verbs.
57- Not relevant for RawEth.
58-.TP
59-.B --log_dci_streams=<log_num_dci_stream_channels> (default 0)
60- Run DC initiator as DCS instead of DCI with <log_num dci_stream_channels>.
61- Not relevant for RawEth.
62- System support required.
63-.TP
64-.B --log_active_dci_streams=<log_num_active_dci_stream_channels> (default log_num_dci_stream_channels)
65- Not relevant for RawEth.
66- System support required.
67-.TP
68-.B --aes_xts
69- Runs traffic with AES_XTS feature (encryption).
70- Not relevant for RawEth and Write latency.
71- System support required.
72-.TP
73-.B --encrypt_on_tx
74- Runs traffic with encryption on tx (default decryption on tx).
75- Not relevant for RawEth and Write latency.
76- System support required.
77-.TP
78-.B --sig_before
79- Puts signature on data before encrypting it (default after).
80- Not relevant for RawEth and Write latency.
81- System support required.
82-.TP
83-.B --aes_block_size=<512,520,4048,4096,4160> (default 512)
84- Not relevant for RawEth and Write latency.
85- System support required.
86-.TP
87-.B --data_enc_keys_number=<number of data encryption keys> (default 1)
88- Not relevant for RawEth and Write latency.
89- System support required.
90-.TP
91-.B --kek_path <path to the key encryption key file>
92- Not relevant for RawEth and Write latency.
93- System support required.
94-.TP
95-.B --credentials_path <path to the credentials file>
96- Not relevant for RawEth and Write latency.
97- System support required.
98-.TP
99-.B --data_enc_key_app_path <path to the data encryption key app>
100- Not relevant for RawEth and Write latency.
101- System support required.
102-.TP
103-.B -C, --report-cycles
104- Report times in cpu cycle units (default microseconds).
105- Relevant only for latency.
106-.TP
107-.B -d, --ib-dev=<dev>
108- Use IB device <dev> (default first device found).
109-.TP
110-.B -D, --duration
111- Run test for a customized period of seconds.
112-.TP
113-.B -e, --events
114- Sleep on CQ events (default poll).
115- Not relevant for Write and RawEth.
116-.TP
117-.B -X, --vector=<completion vector>
118- Set <completion vector> used for events.
119- Not relevant for Write and RawEth.
120-.TP
121-.B -f, --margin
122- measure results within margins. (default=2sec).
123-.TP
124-.B -F, --CPU-freq
125- Do not show a warning even if cpufreq_ondemand module is loaded, and cpu-freq is not on max.
126-.TP
127-.B -g, --mcg
128- Send messages to multicast group with 1 QP attached to it.
129- When there is no multicast gid specified, a default IPv6 typed gid '255:1:0:0:0:2:201:133:0:0:0:0:0:0:0:0' will be used.
130- Relevant only for send non fsRate.
131-.TP
132-.B -H, --report-histogram
133- Print out all results (default print summary only).
134- Relevant only for latency and raw_ethernet_fs_rate.
135-.TP
136-.B -i, --ib-port=<port>
137- Use port <port> of IB device (default 1).
138-.TP
139-.B -I, --inline_size=<size>
140- Max size of message to be sent in inline.
141- Not relevant for Read and Atomic.
142-.TP
143-.B -l, --post_list=<list size>
144- Post list of send WQEs of <list size> size (instead of single post).
145- Relevant only for BW and raw_ethernet_burst_lat.
146-.TP
147-.B --recv_post_list=<list size>
148- Post list of receive WQEs of <list size> size (instead of single post).
149- Relevant only for BW and raw_ethernet_burst_lat.
150-.TP
151-.B -L, --hop_limit=<hop_limit>
152- Set hop limit value (ttl for IPv4 RawEth QP). Values 0-255 (default 64).
153- Relevant only for RawEth
154- Not relevant for raw_ethernet_fs_rate.
155-.TP
156-.B -m, --mtu=<mtu>
157- MTU size : 64 - 9600 (default port mtu) for RawEth else 256 - 4096.
158- Not relevant for raw_ethernet_fs_rate.
159-.TP
160-.B -M, --MGID=<multicast_gid>
161- In multicast, uses <multicast_gid> as the group MGID.
162- <multicast_gid> can be either decimal or hexadecimal, e.g. regarding the IPv4 224.0.0.30 :
163- Decimal: 0:0:0:0:0:0:0:0:0:0:255:255:224:0:0:30 , Hexadecimal: 0:0:0:0:0:0:0:0:0:0:0xff:0xff:0xe0:0:0:0x1e
164- Relevant only for send non fsRate.
165-.TP
166-.B -n, --iters=<iters>
167- Number of exchanges (at least 5, default for write 5000 else 1000 ).
168-.TP
169-.B -N, --noPeak
170- Cancel peak-bw calculation (default with peak up to iters=20000).
171- Relevant only for bandwidth.
172-.TP
173-.B -o, --outs=<num>
174- Relevant only for Read and Atomic.
175-.TP
176-.B -O, --dualport
177- Run test in dual-port mode.
178- Not relevant for RawEth.
179- Relevant only for bandwidth.
180- System support required.
181-.TP
182-.B -p, --port=<port>
183- Listen on/connect to port <port> (default 18515).
184-.TP
185-.B -q, --qp=<num of qp's>
186- Num of qp's(default 1).
187- Relevant only for bandwidth.
188-.TP
189-.B -Q, --cq-mod
190- Generate Cqe only after <--cq-mod> completion.
191- Relevant only for bandwidth.
192-.TP
193-.B --cqe_poll
194- Number of CQEs polled per iteration
195-.TP
196-.B -r, --rx-depth=<dep>
197- Rx queue size (default 512), if using srq, rx-depth controls max-wr size of the srq.
198- Relevant only for send non fsRate.
199-.TP
200-.B -R, --rdma_cm
201- Connect QPs with rdma_cm and run test on those QPs.
202- Not relevant for RawEth.
203-.TP
204-.B -s, --size=<size>
205- Size of message to exchange (default 65536 for bw, for lat 2).
206- Not relevant for Atomic.
207-.TP
208-.B -S, --sl=<sl>
209- SL (default 0).
210- Not relevant for raw_ethernet_fs_rate.
211-.TP
212-.B -t, --tx-depth=<dep>
213- Size of tx queue (default 128 for bw else 1).
214- Relevant only for bw and raw_ethernet_burst_lat.
215-.TP
216-.B -T, --tos=<tos value>
217- Set <tos_value> to RDMA-CM QPs. available only with -R flag. values 0-256 (default off).
218- Not relevant for RawEth
219-.TP
220-.B -u, --qp-timeout=<timeout>
221- QP timeout, timeout value is 4 usec * 2 ^(timeout), default 14.
222-.TP
223-.B -U, --report-unsorted
224- (implies -H) print out unsorted results (default sorted).
225- Relevant only for latency and raw_ethernet_burst_lat and raw_ethernet_fs_rate.
226-.TP
227-.B -V, --version
228- Display perftest version number.
229-.TP
230-.B -W, --report-counters=<list of counter names>
231- Report performance counter change (example: counters/port_xmit_data,hw_counters/out_of_buffer).
232-.TP
233-.B -x, --gid-index=<index>
234- Test uses GID with GID index.
235- Not relevant for RawEth.
236-.TP
237-.B -z, --comm_rdma_cm
238- Communicate with rdma_cm module to exchange data - use regular QPs.
239- Not relevant for RawEth.
240-.TP
241-.B --out_json
242- Save the report in a json file.
243-.TP
244-.B --out_json_file=<file>
245- Name of the report json file. (Default: "perftest_out.json" in the working directory).
246-.TP
247-.B --cpu_util
248- Show CPU Utilization in report, valid only in Duration mode.
249-.TP
250-.B --dlid
251- Set a Destination LID instead of getting it from the other side.
252- Not relevant for raw_ethernet_fs_rate.
253-.TP
254-.B --dont_xchg_versions
255- Do not exchange versions and MTU with other side.
256- Not relevant for RawEth.
257-.TP
258-.B --force-link=<value>
259- Force the link(s) to a specific type: IB or Ethernet.
260- Not relevant for raw_ethernet_fs_rate.
261-.TP
262-.B --use-srq
263- Use a Shared Receive Queue. --rx-depth controls max-wr size of the SRQ.
264- Relevant only for Send.
265-.TP
266-.B --ipv6
267- Use IPv6 GID. Default is IPv4.
268- Not relevant for RawEth.
269-.TP
270-.B --ipv6-addr
271- Use IPv6 address for parameters negotiation. Default is IPv4.
272- Not relevant for RawEth.
273-.TP
274-.B --bind_source_ip
275- Source IP of the interface used for connection establishment. By default taken from routing table.
276- --ipv6-addr flag must be used when specifying an IPv6 source IP
277- Not relevant for RawEth.
278-.TP
279-.B --latency_gap=<delay_time>
280- delay time between each post send.
281- Relevant only for latency.
282-.TP
283-.B --mmap=file
284- Use an mmap'd file as the buffer for testing P2P transfers.
285- Not relevant for RawEth.
286-.TP
287-.B --mmap-offset=<offset>
288- The mmap offset.
289- Not relevant for RawEth.
290-.TP
291-.B --mr_per_qp
292- Create memory region for each qp.
293- Relevant only for bandwidth.
294-.TP
295-.B --odp
296- Use On Demand Paging instead of Memory Registration.
297- System support required.
298-.TP
299-.B --output=<units>
300- Set verbosity output level: bandwidth , message_rate, latency.
301- Latency measurement is Average calculation.
302- bw (bandwidth / message_rate), latency (latency).
303-.TP
304-.B --payload_file_path=<payload_txt_file_path>
305- Set the payload by passing a txt file containing a pattern in the next form(little endian): '0xaaaaaaaa,0xbbbbbbbb,...
306- Not relevant for RawEth and Write latency.
307-.TP
308-.B --use_old_post_send
309- Use old post send flow (ibv_post_send).
310-.TP
311-.B --perform_warm_up
312- Perform some iterations before start measuring in order to warming-up memory cache.
313- Not relevant for raw_ethernet_fs_rate.
314-.TP
315-.B --pkey_index=<pkey index>
316- PKey index to use for QP.
317- Not relevant for raw_ethernet_fs_rate.
318-.TP
319-.B --report-both
320- Report RX & TX results separately on Bidirectional BW tests.
321- Relevant only for bidirectional bandwidth.
322-.TP
323-.B --report_gbits
324- Report Max/Average BW of test in Gbit/sec (instead of MiB/sec).
325- Relevant only for bandwidth.
326-.TP
327-.B --report-per-port
328- Report BW data on both ports when running Dualport and Duration mode.
329- Not relevant for RawEth.
330- System support required.
331-.TP
332-.B --reversed
333- Reverse traffic direction - Server send to client.
334-.TP
335-.B --run_infinitely
336- Run test forever, print results every <duration> seconds.
337-.TP
338-.B --retry_count=<value>
339- Set retry count value in rdma_cm mode.
340- Relevant only for rdma_cm mode.
341- Not relevant for RawEth.
342-.TP
343-.B --tclass=<value>
344- Set the Traffic Class in GRH (if GRH is in use).
345- Not relevant for raw_ethernet_fs_rate.
346-.TP
347-.B --use-null-mr
348- Allocate a null memory region with \fBibv_alloc_null_mr\fR(3)
349-.TP
350-.B --use_cuda=<cuda device id>
351- Use CUDA specific device for GPUDirect RDMA testing.
352- Not relevant for raw_ethernet_fs_rate.
353- System support required.
354-.TP
355-.B --use_cuda_bus_id=<cuda full BUS id>
356- Use CUDA specific device, based on its full PCIe address, for GPUDirect RDMA testing.
357- Not relevant for raw_ethernet_fs_rate.
358- System support required.
359-.TP
360-.B --cuda_mem_type=<value>
361- Set CUDA memory type <value>=0(device,default),1(managed),4(malloc)
362- Not relevant for raw_ethernet_fs_rate.
363- System support required.
364-.TP
365-.B --use_cuda_dmabuf
366- Use CUDA DMA-BUF for GPUDirect RDMA testing.
367- Not relevant for raw_ethernet_fs_rate.
368- System support required.
369-.TP
370-.B --use_hl=<hl device id>
371- Use HabanaLabs specific device for HW accelerator direct RDMA testing.
372- System support required.
373-.TP
374-.B --use_neuron=<logical neuron core id>
375- Use Neuron specific device for HW accelerator direct RDMA testing.
376- System support required.
377-.TP
378-.B --use_neuron_dmabuf
379- Use Neuron DMA-BUF for HW accelerator direct RDMA testing.
380- System support required.
381-.TP
382-.B --use_rocm=<rocm device id>
383- Use selected ROCm device for GPUDirect RDMA testing.
384- Not relevant for raw_ethernet_fs_rate.
385- System support required.
386-.TP
387-.B --use_rocm_dmabuf
388- Use ROCm DMA-BUF for GPUDirect RDMA testing.
389- Not relevant for raw_ethernet_fs_rate.
390- System support required.
391-.TP
392-.B --use_mlu=<mlu device id>
393- Use MLU specific device for HW accelerator direct RDMA testing.
394- System support required.
395-.TP
396-.B --use_mlu_dmabuf
397- Use MLU DMA-BUF for HW accelerator direct RDMA testing.
398- System support required.
399-.TP
400-.B --use_opencl=<opencl device id>
401- Use OpenCl specific device for GPUDirect RDMA testing
402- Not relevant for raw_ethernet_fs_rate.
403- System support required.
404-.TP
405-.B --opencl_platform_id=<opencl platform id>
406- Use OpenCl specific platform ID
407- System support required.
408-.TP
409-.B --gpu_touch=<once\\infinte>
410- Set GPU touch mode to test memory accesses during the testing process.
411- Relevant only for CUDA and OpenCL memory types
412-.TP
413-.B --use_hugepages
414- Use Hugepages instead of contig, memalign allocations.
415- Not relevant for raw_ethernet_fs_rate.
416-.TP
417-.B --tph_mem=<memory_type>
418- Set TPH memory type.
419- <memory_type> can be 'persistent'/'pm' or 'volatile'/'vm'.
420- Must be used together with --ph flag.
421- Requires hardware and driver support for TPH functionality.
422-.TP
423-.B --cpu_id=<cpu_core_id>
424- Specify the CPU core ID that should handle the TPH request.
425- Must be used together with --tph_mem flag.
426- Requires hardware and driver support for TPH functionality.
427-.TP
428-.B --ph=<processing_hints>
429- Specify processing hints for TPH:
430- 0 = Bidirectional, 1 = Requester, 2 = Target (Completer), 3 = Target with priority.
431- Requires hardware and driver support for TPH functionality.
432-.TP
433-.B --wait_destroy=<seconds>
434- Wait <seconds> before destroying allocated resources (QP/CQ/PD/MR..).
435- Relevant only for bandwidth and raw_ethernet_burst_lat.
436-.TP
437-.B --disable_pcie_relaxed
438- Disable PCIe relaxed ordering.
439- Relevant only for bandwidth and raw_ethernet_burst_lat.
440- System support required.
441-.TP
442-.B --burst_size=<size>
443- Set the amount of messages to send in a burst when using rate limiter.
444- Relevant only for bandwidth and raw_ethernet_burst_lat.
445-.TP
446-.B --typical_pkt_size=<bytes>
447- Set the size of packet to send in a burst. Only supports PP rate limiter.
448- Relevant only for bandwidth and raw_ethernet_burst_lat.
449-.TP
450-.B --rate_limit=<rate>
451- Set the maximum rate of sent packages. default unit is [Gbps]. use --rate_units to change that.
452- Relevant only for bandwidth and raw_ethernet_burst_lat.
453-.TP
454-.B --rate_units=<units>
455- [Mgp] Set the units for rate limit to MiBps (M), Gbps (g) or pps (p). default is Gbps (g).
456- Relevant only for bandwidth and raw_ethernet_burst_lat.
457-.TP
458-.B --rate_limit_type=<type>
459- [HW/SW/PP] Limit the QP's by HW, PP or by SW. Disabled by default. When rate_limit is not specified HW limit is Default.
460- Relevant only for bandwidth and raw_ethernet_burst_lat.
461-.TP
462-.B --use_ooo
463- Use out of order data placement.
464- System support required.
465-.TP
466-.B --write_with_imm
467- Use write-with-immediate verb instead of write.
468- Write tests only.
469-.SS RawEth only options
470-.TP
471-.B -B, --source_mac
472- Source MAC address by this format XX:XX:XX:XX:XX:XX **MUST** be entered.
473-.TP
474-.B -E, --dest_mac
475- Destination MAC address by this format XX:XX:XX:XX:XX:XX **MUST** be entered.
476-.TP
477-.B -G, --use_rss
478- Use RSS on server side. need to open 2^x qps (using -q flag. default is -q 2). open 2^x clients that transmit to this server.
479-.TP
480-.B -J, --dest_ip
481- Destination ip address by this format X.X.X.X for IPv4 or X:X:X:X:X:X for IPv6 (using to send packets with IP header).
482- System support required for IPv6.
483-.TP
484-.B -j, --source_ip
485- Source ip address by this format X.X.X.X for IPv4 or X:X:X:X:X:X for IPv6 (using to send packets with IP header).
486- System support required for IPv6.
487-.TP
488-.B -K, --dest_port
489- Destination port number (using to send packets with UDP header as default, or you can use --tcp flag to send TCP Header).
490-.TP
491-.B -k, --source_port
492- Source port number (using to send packets with UDP header as default, or you can use --tcp flag to send TCP Header).
493-.TP
494-.B -Y, --ethertype
495- Ethertype value in the ethernet frame by this format 0xXXXX.
496-.TP
497-.B -Z, --server
498- Choose server side for the current machine (--server/--client must be selected ).
499-.TP
500-.B --vlan_en
501- Insert vlan tag in ethernet header.
502-.TP
503-.B --vlan_pcp
504- Specify vlan_pcp value for vlan tag, 0~7. 8 means different vlan_pcp for each packet.
505-.TP
506-.B -P, --client
507- Choose client side for the current machine (--server/--client must be selected).
508- Not relevant for raw_ethernet_fs_rate.
509-.TP
510-.B -v, --mac_fwd
511- Run mac forwarding test.
512- Not relevant for raw_ethernet_fs_rate.
513-.TP
514-.B --flows
515- Set number of TCP/UDP flows, starting from <src_port, dst_port>.
516- Not relevant for raw_ethernet_fs_rate.
517-.TP
518-.B --flows_burst
519- Set number of burst size per TCP/UDP flow.
520- Not relevant for raw_ethernet_fs_rate.
521-.TP
522-.B --promiscuous
523- Run promiscuous mode.
524- Not relevant for raw_ethernet_fs_rate.
525-.TP
526-.B --reply_every
527- In latency test, receiver pong after number of received pings.
528- Not relevant for raw_ethernet_fs_rate.
529-.TP
530-.B --sniffer
531- Run sniffer mode.
532- Not relevant for raw_ethernet_fs_rate.
533- System support required.
534-.TP
535-.B --flow_label=<fl0,fl1,...>
536- IPv6 flow label.
537- Not relevant for raw_ethernet_fs_rate.
538-.TP
539-.B --tcp
540- Send TCP Packets. must include IP and Ports information.
541-.TP
542-.B --raw_ipv6
543- Send IPv6 Packets.
544- System support required.
545-.TP
546-.B --raw_mcast.
547- Relevant only for bandwidth.
548-.SH AUTHORS
549-.TP
550-.B Hassan Khadour <hkhadour@nvidia.com>
551-.TP
552-.B Talat Batheesh <talatb@nvidia.com>
@@ -1,552 +0,0 @@
1-.TH perftest 1
2-.SH NAME
3-ib_write_bw, ib_read_bw, ib_send_bw, ib_atomic_bw,
4-ib_write_lat, ib_read_lat, ib_send_lat, ib_atomic_lat,
5-raw_ethernet_bw, raw_ethernet_lat, raw_ethernet_burst_lat,
6-raw_ethernet_fs_rate \- benchmarks for various types of infinabnd performance
7-.SH DESCRIPTION
8-.TP
9-Perftest is a package that includes various benchmarks that measures
10-different metrics & verbs performance which include
11-many different options and modes.
12-.SS RUNNING TESTS
13-.TP
14-.B Server:
15- ./<test name> <options>
16-.TP
17-.B Client:
18- ./<test name> <options> <server IP address>
19-.TP
20-.B Examples:
21- 1- Running bidirectional bandwidth test using Write verb for 5 seconds with 8388608 as a message size and 3 qps:
22- Server: ./ib_write_bw -s 8388608 -b -D 5 -q 3
23- Client: ./ib_write_bw -s 8388608 -b -D 5 -q 3 1.1.1.2
24- 
25- 2- Running latency test using Read verb for 5000 iterations with 32 as a message size:
26- Server: ./ib_read_lat -s 32 -n 5000
27- Client: ./ib_read_lat -s 32 -n 5000 192.168.0.1
28- 
29-.SS IMPORTANT NOTES
30-.TP
31- 1- The options that specific to modes in perftest must be the same for both server and client.
32- 2- Perftest applications may need to be ran with sudo when running from non root.
33- 3- Perftest applications usually installed to the /usr/bin/.
34- 4- Perftest may print some failures with syndroms to the stderr, perftest get those errors from rdma-core.
35-.SH OPTIONS
36-.TP
37-.B -h, --help
38- Lists the available options to the screen.
39-.TP
40-.B -a, --all
41- Run sizes from 2 till 2^23.
42- Not relevant for Atomic and RawEth.
43-.TP
44-.B -A, --atomic_type=<type>
45- Type of atomic operation from {CMP_AND_SWAP,FETCH_AND_ADD} (default FETCH_AND_ADD).
46- Relevant only for Atomic.
47-.TP
48-.B -b, --bidirectional
49- Measure bidirectional bandwidth (default unidirectional).
50- Relevant only for BW.
51-.TP
52-.B -c, --connection=<RC/XRC/UC/UD/DC/SRD>
53- Connection type RC/XRC/UC/UD/DC/SRD (default RC).
54- UD relevant only for Send verb.
55- SRD relevant only for Read, Write and Send verbs.
56- UC relevant only for Write and Send verbs.
57- Not relevant for RawEth.
58-.TP
59-.B --log_dci_streams=<log_num_dci_stream_channels> (default 0)
60- Run DC initiator as DCS instead of DCI with <log_num dci_stream_channels>.
61- Not relevant for RawEth.
62- System support required.
63-.TP
64-.B --log_active_dci_streams=<log_num_active_dci_stream_channels> (default log_num_dci_stream_channels)
65- Not relevant for RawEth.
66- System support required.
67-.TP
68-.B --aes_xts
69- Runs traffic with AES_XTS feature (encryption).
70- Not relevant for RawEth and Write latency.
71- System support required.
72-.TP
73-.B --encrypt_on_tx
74- Runs traffic with encryption on tx (default decryption on tx).
75- Not relevant for RawEth and Write latency.
76- System support required.
77-.TP
78-.B --sig_before
79- Puts signature on data before encrypting it (default after).
80- Not relevant for RawEth and Write latency.
81- System support required.
82-.TP
83-.B --aes_block_size=<512,520,4048,4096,4160> (default 512)
84- Not relevant for RawEth and Write latency.
85- System support required.
86-.TP
87-.B --data_enc_keys_number=<number of data encryption keys> (default 1)
88- Not relevant for RawEth and Write latency.
89- System support required.
90-.TP
91-.B --kek_path <path to the key encryption key file>
92- Not relevant for RawEth and Write latency.
93- System support required.
94-.TP
95-.B --credentials_path <path to the credentials file>
96- Not relevant for RawEth and Write latency.
97- System support required.
98-.TP
99-.B --data_enc_key_app_path <path to the data encryption key app>
100- Not relevant for RawEth and Write latency.
101- System support required.
102-.TP
103-.B -C, --report-cycles
104- Report times in cpu cycle units (default microseconds).
105- Relevant only for latency.
106-.TP
107-.B -d, --ib-dev=<dev>
108- Use IB device <dev> (default first device found).
109-.TP
110-.B -D, --duration
111- Run test for a customized period of seconds.
112-.TP
113-.B -e, --events
114- Sleep on CQ events (default poll).
115- Not relevant for Write and RawEth.
116-.TP
117-.B -X, --vector=<completion vector>
118- Set <completion vector> used for events.
119- Not relevant for Write and RawEth.
120-.TP
121-.B -f, --margin
122- measure results within margins. (default=2sec).
123-.TP
124-.B -F, --CPU-freq
125- Do not show a warning even if cpufreq_ondemand module is loaded, and cpu-freq is not on max.
126-.TP
127-.B -g, --mcg
128- Send messages to multicast group with 1 QP attached to it.
129- When there is no multicast gid specified, a default IPv6 typed gid '255:1:0:0:0:2:201:133:0:0:0:0:0:0:0:0' will be used.
130- Relevant only for send non fsRate.
131-.TP
132-.B -H, --report-histogram
133- Print out all results (default print summary only).
134- Relevant only for latency and raw_ethernet_fs_rate.
135-.TP
136-.B -i, --ib-port=<port>
137- Use port <port> of IB device (default 1).
138-.TP
139-.B -I, --inline_size=<size>
140- Max size of message to be sent in inline.
141- Not relevant for Read and Atomic.
142-.TP
143-.B -l, --post_list=<list size>
144- Post list of send WQEs of <list size> size (instead of single post).
145- Relevant only for BW and raw_ethernet_burst_lat.
146-.TP
147-.B --recv_post_list=<list size>
148- Post list of receive WQEs of <list size> size (instead of single post).
149- Relevant only for BW and raw_ethernet_burst_lat.
150-.TP
151-.B -L, --hop_limit=<hop_limit>
152- Set hop limit value (ttl for IPv4 RawEth QP). Values 0-255 (default 64).
153- Relevant only for RawEth
154- Not relevant for raw_ethernet_fs_rate.
155-.TP
156-.B -m, --mtu=<mtu>
157- MTU size : 64 - 9600 (default port mtu) for RawEth else 256 - 4096.
158- Not relevant for raw_ethernet_fs_rate.
159-.TP
160-.B -M, --MGID=<multicast_gid>
161- In multicast, uses <multicast_gid> as the group MGID.
162- <multicast_gid> can be either decimal or hexadecimal, e.g. regarding the IPv4 224.0.0.30 :
163- Decimal: 0:0:0:0:0:0:0:0:0:0:255:255:224:0:0:30 , Hexadecimal: 0:0:0:0:0:0:0:0:0:0:0xff:0xff:0xe0:0:0:0x1e
164- Relevant only for send non fsRate.
165-.TP
166-.B -n, --iters=<iters>
167- Number of exchanges (at least 5, default for write 5000 else 1000 ).
168-.TP
169-.B -N, --noPeak
170- Cancel peak-bw calculation (default with peak up to iters=20000).
171- Relevant only for bandwidth.
172-.TP
173-.B -o, --outs=<num>
174- Relevant only for Read and Atomic.
175-.TP
176-.B -O, --dualport
177- Run test in dual-port mode.
178- Not relevant for RawEth.
179- Relevant only for bandwidth.
180- System support required.
181-.TP
182-.B -p, --port=<port>
183- Listen on/connect to port <port> (default 18515).
184-.TP
185-.B -q, --qp=<num of qp's>
186- Num of qp's(default 1).
187- Relevant only for bandwidth.
188-.TP
189-.B -Q, --cq-mod
190- Generate Cqe only after <--cq-mod> completion.
191- Relevant only for bandwidth.
192-.TP
193-.B --cqe_poll
194- Number of CQEs polled per iteration
195-.TP
196-.B -r, --rx-depth=<dep>
197- Rx queue size (default 512), if using srq, rx-depth controls max-wr size of the srq.
198- Relevant only for send non fsRate.
199-.TP
200-.B -R, --rdma_cm
201- Connect QPs with rdma_cm and run test on those QPs.
202- Not relevant for RawEth.
203-.TP
204-.B -s, --size=<size>
205- Size of message to exchange (default 65536 for bw, for lat 2).
206- Not relevant for Atomic.
207-.TP
208-.B -S, --sl=<sl>
209- SL (default 0).
210- Not relevant for raw_ethernet_fs_rate.
211-.TP
212-.B -t, --tx-depth=<dep>
213- Size of tx queue (default 128 for bw else 1).
214- Relevant only for bw and raw_ethernet_burst_lat.
215-.TP
216-.B -T, --tos=<tos value>
217- Set <tos_value> to RDMA-CM QPs. available only with -R flag. values 0-256 (default off).
218- Not relevant for RawEth
219-.TP
220-.B -u, --qp-timeout=<timeout>
221- QP timeout, timeout value is 4 usec * 2 ^(timeout), default 14.
222-.TP
223-.B -U, --report-unsorted
224- (implies -H) print out unsorted results (default sorted).
225- Relevant only for latency and raw_ethernet_burst_lat and raw_ethernet_fs_rate.
226-.TP
227-.B -V, --version
228- Display perftest version number.
229-.TP
230-.B -W, --report-counters=<list of counter names>
231- Report performance counter change (example: counters/port_xmit_data,hw_counters/out_of_buffer).
232-.TP
233-.B -x, --gid-index=<index>
234- Test uses GID with GID index.
235- Not relevant for RawEth.
236-.TP
237-.B -z, --comm_rdma_cm
238- Communicate with rdma_cm module to exchange data - use regular QPs.
239- Not relevant for RawEth.
240-.TP
241-.B --out_json
242- Save the report in a json file.
243-.TP
244-.B --out_json_file=<file>
245- Name of the report json file. (Default: "perftest_out.json" in the working directory).
246-.TP
247-.B --cpu_util
248- Show CPU Utilization in report, valid only in Duration mode.
249-.TP
250-.B --dlid
251- Set a Destination LID instead of getting it from the other side.
252- Not relevant for raw_ethernet_fs_rate.
253-.TP
254-.B --dont_xchg_versions
255- Do not exchange versions and MTU with other side.
256- Not relevant for RawEth.
257-.TP
258-.B --force-link=<value>
259- Force the link(s) to a specific type: IB or Ethernet.
260- Not relevant for raw_ethernet_fs_rate.
261-.TP
262-.B --use-srq
263- Use a Shared Receive Queue. --rx-depth controls max-wr size of the SRQ.
264- Relevant only for Send.
265-.TP
266-.B --ipv6
267- Use IPv6 GID. Default is IPv4.
268- Not relevant for RawEth.
269-.TP
270-.B --ipv6-addr
271- Use IPv6 address for parameters negotiation. Default is IPv4.
272- Not relevant for RawEth.
273-.TP
274-.B --bind_source_ip
275- Source IP of the interface used for connection establishment. By default taken from routing table.
276- --ipv6-addr flag must be used when specifying an IPv6 source IP
277- Not relevant for RawEth.
278-.TP
279-.B --latency_gap=<delay_time>
280- delay time between each post send.
281- Relevant only for latency.
282-.TP
283-.B --mmap=file
284- Use an mmap'd file as the buffer for testing P2P transfers.
285- Not relevant for RawEth.
286-.TP
287-.B --mmap-offset=<offset>
288- The mmap offset.
289- Not relevant for RawEth.
290-.TP
291-.B --mr_per_qp
292- Create memory region for each qp.
293- Relevant only for bandwidth.
294-.TP
295-.B --odp
296- Use On Demand Paging instead of Memory Registration.
297- System support required.
298-.TP
299-.B --output=<units>
300- Set verbosity output level: bandwidth , message_rate, latency.
301- Latency measurement is Average calculation.
302- bw (bandwidth / message_rate), latency (latency).
303-.TP
304-.B --payload_file_path=<payload_txt_file_path>
305- Set the payload by passing a txt file containing a pattern in the next form(little endian): '0xaaaaaaaa,0xbbbbbbbb,...
306- Not relevant for RawEth and Write latency.
307-.TP
308-.B --use_old_post_send
309- Use old post send flow (ibv_post_send).
310-.TP
311-.B --perform_warm_up
312- Perform some iterations before start measuring in order to warming-up memory cache.
313- Not relevant for raw_ethernet_fs_rate.
314-.TP
315-.B --pkey_index=<pkey index>
316- PKey index to use for QP.
317- Not relevant for raw_ethernet_fs_rate.
318-.TP
319-.B --report-both
320- Report RX & TX results separately on Bidirectional BW tests.
321- Relevant only for bidirectional bandwidth.
322-.TP
323-.B --report_gbits
324- Report Max/Average BW of test in Gbit/sec (instead of MiB/sec).
325- Relevant only for bandwidth.
326-.TP
327-.B --report-per-port
328- Report BW data on both ports when running Dualport and Duration mode.
329- Not relevant for RawEth.
330- System support required.
331-.TP
332-.B --reversed
333- Reverse traffic direction - Server send to client.
334-.TP
335-.B --run_infinitely
336- Run test forever, print results every <duration> seconds.
337-.TP
338-.B --retry_count=<value>
339- Set retry count value in rdma_cm mode.
340- Relevant only for rdma_cm mode.
341- Not relevant for RawEth.
342-.TP
343-.B --tclass=<value>
344- Set the Traffic Class in GRH (if GRH is in use).
345- Not relevant for raw_ethernet_fs_rate.
346-.TP
347-.B --use-null-mr
348- Allocate a null memory region with \fBibv_alloc_null_mr\fR(3)
349-.TP
350-.B --use_cuda=<cuda device id>
351- Use CUDA specific device for GPUDirect RDMA testing.
352- Not relevant for raw_ethernet_fs_rate.
353- System support required.
354-.TP
355-.B --use_cuda_bus_id=<cuda full BUS id>
356- Use CUDA specific device, based on its full PCIe address, for GPUDirect RDMA testing.
357- Not relevant for raw_ethernet_fs_rate.
358- System support required.
359-.TP
360-.B --cuda_mem_type=<value>
361- Set CUDA memory type <value>=0(device,default),1(managed),4(malloc)
362- Not relevant for raw_ethernet_fs_rate.
363- System support required.
364-.TP
365-.B --use_cuda_dmabuf
366- Use CUDA DMA-BUF for GPUDirect RDMA testing.
367- Not relevant for raw_ethernet_fs_rate.
368- System support required.
369-.TP
370-.B --use_hl=<hl device id>
371- Use HabanaLabs specific device for HW accelerator direct RDMA testing.
372- System support required.
373-.TP
374-.B --use_neuron=<logical neuron core id>
375- Use Neuron specific device for HW accelerator direct RDMA testing.
376- System support required.
377-.TP
378-.B --use_neuron_dmabuf
379- Use Neuron DMA-BUF for HW accelerator direct RDMA testing.
380- System support required.
381-.TP
382-.B --use_rocm=<rocm device id>
383- Use selected ROCm device for GPUDirect RDMA testing.
384- Not relevant for raw_ethernet_fs_rate.
385- System support required.
386-.TP
387-.B --use_rocm_dmabuf
388- Use ROCm DMA-BUF for GPUDirect RDMA testing.
389- Not relevant for raw_ethernet_fs_rate.
390- System support required.
391-.TP
392-.B --use_mlu=<mlu device id>
393- Use MLU specific device for HW accelerator direct RDMA testing.
394- System support required.
395-.TP
396-.B --use_mlu_dmabuf
397- Use MLU DMA-BUF for HW accelerator direct RDMA testing.
398- System support required.
399-.TP
400-.B --use_opencl=<opencl device id>
401- Use OpenCl specific device for GPUDirect RDMA testing
402- Not relevant for raw_ethernet_fs_rate.
403- System support required.
404-.TP
405-.B --opencl_platform_id=<opencl platform id>
406- Use OpenCl specific platform ID
407- System support required.
408-.TP
409-.B --gpu_touch=<once\\infinte>
410- Set GPU touch mode to test memory accesses during the testing process.
411- Relevant only for CUDA and OpenCL memory types
412-.TP
413-.B --use_hugepages
414- Use Hugepages instead of contig, memalign allocations.
415- Not relevant for raw_ethernet_fs_rate.
416-.TP
417-.B --tph_mem=<memory_type>
418- Set TPH memory type.
419- <memory_type> can be 'persistent'/'pm' or 'volatile'/'vm'.
420- Must be used together with --ph flag.
421- Requires hardware and driver support for TPH functionality.
422-.TP
423-.B --cpu_id=<cpu_core_id>
424- Specify the CPU core ID that should handle the TPH request.
425- Must be used together with --tph_mem flag.
426- Requires hardware and driver support for TPH functionality.
427-.TP
428-.B --ph=<processing_hints>
429- Specify processing hints for TPH:
430- 0 = Bidirectional, 1 = Requester, 2 = Target (Completer), 3 = Target with priority.
431- Requires hardware and driver support for TPH functionality.
432-.TP
433-.B --wait_destroy=<seconds>
434- Wait <seconds> before destroying allocated resources (QP/CQ/PD/MR..).
435- Relevant only for bandwidth and raw_ethernet_burst_lat.
436-.TP
437-.B --disable_pcie_relaxed
438- Disable PCIe relaxed ordering.
439- Relevant only for bandwidth and raw_ethernet_burst_lat.
440- System support required.
441-.TP
442-.B --burst_size=<size>
443- Set the amount of messages to send in a burst when using rate limiter.
444- Relevant only for bandwidth and raw_ethernet_burst_lat.
445-.TP
446-.B --typical_pkt_size=<bytes>
447- Set the size of packet to send in a burst. Only supports PP rate limiter.
448- Relevant only for bandwidth and raw_ethernet_burst_lat.
449-.TP
450-.B --rate_limit=<rate>
451- Set the maximum rate of sent packages. default unit is [Gbps]. use --rate_units to change that.
452- Relevant only for bandwidth and raw_ethernet_burst_lat.
453-.TP
454-.B --rate_units=<units>
455- [Mgp] Set the units for rate limit to MiBps (M), Gbps (g) or pps (p). default is Gbps (g).
456- Relevant only for bandwidth and raw_ethernet_burst_lat.
457-.TP
458-.B --rate_limit_type=<type>
459- [HW/SW/PP] Limit the QP's by HW, PP or by SW. Disabled by default. When rate_limit is not specified HW limit is Default.
460- Relevant only for bandwidth and raw_ethernet_burst_lat.
461-.TP
462-.B --use_ooo
463- Use out of order data placement.
464- System support required.
465-.TP
466-.B --write_with_imm
467- Use write-with-immediate verb instead of write.
468- Write tests only.
469-.SS RawEth only options
470-.TP
471-.B -B, --source_mac
472- Source MAC address by this format XX:XX:XX:XX:XX:XX **MUST** be entered.
473-.TP
474-.B -E, --dest_mac
475- Destination MAC address by this format XX:XX:XX:XX:XX:XX **MUST** be entered.
476-.TP
477-.B -G, --use_rss
478- Use RSS on server side. need to open 2^x qps (using -q flag. default is -q 2). open 2^x clients that transmit to this server.
479-.TP
480-.B -J, --dest_ip
481- Destination ip address by this format X.X.X.X for IPv4 or X:X:X:X:X:X for IPv6 (using to send packets with IP header).
482- System support required for IPv6.
483-.TP
484-.B -j, --source_ip
485- Source ip address by this format X.X.X.X for IPv4 or X:X:X:X:X:X for IPv6 (using to send packets with IP header).
486- System support required for IPv6.
487-.TP
488-.B -K, --dest_port
489- Destination port number (using to send packets with UDP header as default, or you can use --tcp flag to send TCP Header).
490-.TP
491-.B -k, --source_port
492- Source port number (using to send packets with UDP header as default, or you can use --tcp flag to send TCP Header).
493-.TP
494-.B -Y, --ethertype
495- Ethertype value in the ethernet frame by this format 0xXXXX.
496-.TP
497-.B -Z, --server
498- Choose server side for the current machine (--server/--client must be selected ).
499-.TP
500-.B --vlan_en
501- Insert vlan tag in ethernet header.
502-.TP
503-.B --vlan_pcp
504- Specify vlan_pcp value for vlan tag, 0~7. 8 means different vlan_pcp for each packet.
505-.TP
506-.B -P, --client
507- Choose client side for the current machine (--server/--client must be selected).
508- Not relevant for raw_ethernet_fs_rate.
509-.TP
510-.B -v, --mac_fwd
511- Run mac forwarding test.
512- Not relevant for raw_ethernet_fs_rate.
513-.TP
514-.B --flows
515- Set number of TCP/UDP flows, starting from <src_port, dst_port>.
516- Not relevant for raw_ethernet_fs_rate.
517-.TP
518-.B --flows_burst
519- Set number of burst size per TCP/UDP flow.
520- Not relevant for raw_ethernet_fs_rate.
521-.TP
522-.B --promiscuous
523- Run promiscuous mode.
524- Not relevant for raw_ethernet_fs_rate.
525-.TP
526-.B --reply_every
527- In latency test, receiver pong after number of received pings.
528- Not relevant for raw_ethernet_fs_rate.
529-.TP
530-.B --sniffer
531- Run sniffer mode.
532- Not relevant for raw_ethernet_fs_rate.
533- System support required.
534-.TP
535-.B --flow_label=<fl0,fl1,...>
536- IPv6 flow label.
537- Not relevant for raw_ethernet_fs_rate.
538-.TP
539-.B --tcp
540- Send TCP Packets. must include IP and Ports information.
541-.TP
542-.B --raw_ipv6
543- Send IPv6 Packets.
544- System support required.
545-.TP
546-.B --raw_mcast.
547- Relevant only for bandwidth.
548-.SH AUTHORS
549-.TP
550-.B Hassan Khadour <hkhadour@nvidia.com>
551-.TP
552-.B Talat Batheesh <talatb@nvidia.com>
Rrdma-perftest/perftest/src/acl_memory.crdma-perftest/perftest/src/canninterface/acl_memory.c+24-7
Rrdma-perftest/perftest/src/acl_memory.hrdma-perftest/perftest/src/canninterface/acl_memory.h+25-21
Rrdma-perftest/perftest/src/aclnn_nda_test_bw.hrdma-perftest/perftest/src/canninterface/aclnn_nda_test_bw.h+0-0
Rrdma-perftest/perftest/src/nda_op.crdma-perftest/perftest/src/canninterface/nda_op.c+16-133
Rrdma-perftest/perftest/src/nda_op.hrdma-perftest/perftest/src/canninterface/nda_op.h+3-2