已合并
分离cann相关代码使用g++编译 #10
zengxiong创建于 4月10日
分离cann相关代码使用g++编译 #10
已合并
共 37 个文件变更+1508-6995
| @@ -1,41 +1,81 @@ | |||
| 1 | # rdma-perftest | 1 | # rdma-perftest |
| 2 | 2 | ||
| 3 | -rdma-perftest测试昇腾环境的带宽和时延 | 3 | +rdma-perftest 测试昇腾环境的带宽和时延 |
| 4 | 4 | ||
| 5 | +## 编译说明 | ||
| 6 | + | ||
| 7 | +### 依赖安装 | ||
| 5 | 源码放到环境上后,转换一下格式: | 8 | 源码放到环境上后,转换一下格式: |
| 9 | +```bash | ||
| 6 | dos2unix * | 10 | dos2unix * |
| 11 | +``` | ||
| 7 | 12 | ||
| 8 | -编译依赖verbs,需要提前在环境上安装verbs | 13 | +编译依赖 verbs,需要提前在环境上安装 verbs |
| 14 | +```bash | ||
| 9 | yum install -y libibverbs rdma-core | 15 | yum install -y libibverbs rdma-core |
| 10 | yum install -y libibverbs-devel rdma-core-devel | 16 | yum install -y libibverbs-devel rdma-core-devel |
| 11 | yum install libibverbs-utils | 17 | yum install libibverbs-utils |
| 12 | 18 | ||
| 13 | -编译相关内容生成: | 19 | +# 编译相关内容生成: |
| 14 | yum install -y libtool | 20 | yum install -y libtool |
| 21 | +``` | ||
| 15 | 22 | ||
| 16 | -注:路径依赖CANN的散包,需要装一下CANN的散包 | 23 | +### 基础编译(无CANN支持) |
| 17 | -# 这里先不执行这2个指令, 修改Makefile内的/home/zdy 相关路径为 cann包路径, 直接执行make | 24 | +如果不需要CANN支持,可以仅编译基础功能: |
| 25 | +```bash | ||
| 18 | bash autogen.sh | 26 | bash autogen.sh |
| 19 | - ./configure --enable-acl --with-acl=/usr/local/Ascend/latest | 27 | +./configure |
| 20 | make | 28 | make |
| 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 -> NPU6 | 45 | +## 测试指令示例 |
| 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 -> NPU6 | 47 | +Write 带宽测试: |
| 32 | -Server: ib_read_bw -d xscale_0 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely | 48 | +```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.100 | 49 | +# 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 -> NPU6 | 52 | +# Client |
| 36 | -Server: ib_read_lat -d xscale_0 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely | 53 | +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.100 | 54 | +``` |
| 38 | 55 | ||
| 39 | -Send 时延测试:NPU2 -> NPU6 | 56 | +Read 带宽测试: |
| 40 | -Server: ib_send_lat -d xscale_0 -i 0 --report_gbits -F -a --use_cann=2 --post_list=128 -n 12800 --run_infinitely | 57 | +```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.100 | 58 | +# 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 | .deps | 17 | .deps |
| 18 | 18 | ||
| 19 | # Automake | 19 | # Automake |
| 20 | -Makefile | ||
| 21 | Makefile.in | 20 | Makefile.in |
| 22 | aclocal.m4 | 21 | aclocal.m4 |
| 23 | autom4te.cache/ | 22 | autom4te.cache/ |
| @@ -33,6 +33,9 @@ | |||
| 33 | ACLOCAL_AMFLAGS= -I m4 | 33 | ACLOCAL_AMFLAGS= -I m4 |
| 34 | AUTOMAKE_OPTIONS= subdir-objects | 34 | AUTOMAKE_OPTIONS= subdir-objects |
| 35 | 35 | ||
| 36 | +# 设置包含路径,确保能找到canninterface目录下的头文件 | ||
| 37 | +AM_CPPFLAGS = -I$(top_srcdir)/src/canninterface | ||
| 38 | + | ||
| 36 | noinst_LIBRARIES = libperftest.a | 39 | noinst_LIBRARIES = libperftest.a |
| 37 | libperftest_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 | 40 | libperftest_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 |
| 38 | noinst_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 | 41 | noinst_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 | |||
| 45 | libperftest_a_SOURCES += src/rocm_memory.c | 48 | libperftest_a_SOURCES += src/rocm_memory.c |
| 46 | endif | 49 | endif |
| 47 | 50 | ||
| 48 | -if CANN | 51 | +if CANN_ENABLED |
| 49 | -libperftest_a_SOURCES += src/acl_memory.c src/nda_op.c | 52 | +SUBDIRS = src/canninterface |
| 50 | endif | 53 | endif |
| 51 | 54 | ||
| 52 | if NEURON | 55 | if NEURON |
| @@ -68,6 +71,36 @@ endif | |||
| 68 | bin_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 | 71 | bin_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 |
| 69 | bin_SCRIPTS = run_perftest_loopback run_perftest_multi_devices | 72 | bin_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: |
| 72 | man1_MANS = \ | 105 | man1_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) |
| 126 | endif | 159 | endif |
| 127 | 160 | ||
| 128 | - | ||
| 129 | ib_send_bw_SOURCES = src/send_bw.c src/multicast_resources.c src/multicast_resources.h | 161 | ib_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 | ||
| 132 | ib_send_lat_SOURCES = src/send_lat.c src/multicast_resources.c src/multicast_resources.h | 163 | ib_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 | ||
| 135 | ib_write_lat_SOURCES = src/write_lat.c | 165 | ib_write_lat_SOURCES = src/write_lat.c |
| 136 | -ib_write_lat_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS) | ||
| 137 | 166 | ||
| 138 | ib_write_bw_SOURCES = src/write_bw.c | 167 | ib_write_bw_SOURCES = src/write_bw.c |
| 139 | -ib_write_bw_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS) | ||
| 140 | 168 | ||
| 141 | ib_read_lat_SOURCES = src/read_lat.c | 169 | ib_read_lat_SOURCES = src/read_lat.c |
| 142 | -ib_read_lat_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS) | ||
| 143 | 170 | ||
| 144 | ib_read_bw_SOURCES = src/read_bw.c | 171 | ib_read_bw_SOURCES = src/read_bw.c |
| 145 | -ib_read_bw_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS) | ||
| 146 | 172 | ||
| 147 | ib_atomic_lat_SOURCES = src/atomic_lat.c | 173 | ib_atomic_lat_SOURCES = src/atomic_lat.c |
| 148 | -ib_atomic_lat_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS) | ||
| 149 | 174 | ||
| 150 | ib_atomic_bw_SOURCES = src/atomic_bw.c | 175 | ib_atomic_bw_SOURCES = src/atomic_bw.c |
| 151 | -ib_atomic_bw_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS) | ||
| 152 | 176 | ||
| 153 | if HAVE_RAW_ETH | 177 | if HAVE_RAW_ETH |
| 154 | raw_ethernet_bw_SOURCES = src/raw_ethernet_send_bw.c | 178 | raw_ethernet_bw_SOURCES = src/raw_ethernet_send_bw.c |
| 155 | -raw_ethernet_bw_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS) | ||
| 156 | - | ||
| 157 | raw_ethernet_lat_SOURCES = src/raw_ethernet_send_lat.c | 179 | raw_ethernet_lat_SOURCES = src/raw_ethernet_send_lat.c |
| 158 | -raw_ethernet_lat_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS) | ||
| 159 | - | ||
| 160 | raw_ethernet_burst_lat_SOURCES = src/raw_ethernet_send_burst_lat.c | 180 | raw_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 | - | ||
| 163 | raw_ethernet_fs_rate_SOURCES = src/raw_ethernet_fs_rate.c | 181 | raw_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) | ||
| 164 | raw_ethernet_fs_rate_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS) | 192 | raw_ethernet_fs_rate_LDADD = libperftest.a $(LIBMATH) $(LIBMLX4) $(LIBMLX5) $(LIBEFA) $(LIBHNS) |
| 193 | +endif | ||
| 165 | 194 | ||
| 166 | else | 195 | else |
| 167 | raw_ethernet_bw_SOURCES = | 196 | raw_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.h→rdma-perftest/perftest/src/canninterface/acl_memory.h+25-21
Rrdma-perftest/perftest/src/aclnn_nda_test_bw.h→rdma-perftest/perftest/src/canninterface/aclnn_nda_test_bw.h+0-0