From 79bfea240b01b7acd981d96b7d716a4cc24cde6e Mon Sep 17 00:00:00 2001 From: alexander-sannikov Date: Fri, 26 Sep 2025 18:51:24 +0100 Subject: [PATCH 1/2] fabtests/common: enable rocr device interface for fabtests Signed-off-by: alexander-sannikov --- fabtests/common/shared.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fabtests/common/shared.c b/fabtests/common/shared.c index e191a98c55d..c2706ab6fa8 100644 --- a/fabtests/common/shared.c +++ b/fabtests/common/shared.c @@ -3414,7 +3414,7 @@ void ft_usage(char *name, char *desc) void ft_hmem_usage() { FT_PRINT_OPTS_USAGE("-D ", "Specify device interface: " - "e.g. cuda, ze, neuron, synapseai (default: None). " + "e.g. cuda, ze, neuron, synapseai, rocr (default: None). " "Automatically enables FI_HMEM (-H)"); FT_PRINT_OPTS_USAGE("-i ", "Specify which device to use (default: 0)"); FT_PRINT_OPTS_USAGE("-H", "Enable provider FI_HMEM support"); @@ -3576,6 +3576,8 @@ void ft_parse_hmem_opts(int op, char *optarg, struct ft_opts *opts) opts->iface = FI_HMEM_CUDA; else if (!strncasecmp("neuron", optarg, 6)) opts->iface = FI_HMEM_NEURON; + else if (!strncasecmp("rocr", optarg, 4)) + opts->iface = FI_HMEM_ROCR; else if (!strncasecmp("synapseai", optarg, 9)) { opts->iface = FI_HMEM_SYNAPSEAI; opts->options |= FT_OPT_REG_DMABUF_MR; From e19f0a9d30eed81d48cdd3d1f0eb31f2dcc0de66 Mon Sep 17 00:00:00 2001 From: alexander-sannikov Date: Fri, 26 Sep 2025 19:28:24 +0100 Subject: [PATCH 2/2] fabtests/common: removed address receive prepost for out-of-band resolution case Preposted recieve for peer address is not necessary in case of out-of-band address resolution(-b/-E options). Corresponding send won't be issues and random message with matching tag will be consumed instead, which leads to crash or hang. Signed-off-by: alexander-sannikov --- fabtests/benchmarks/msg_pingpong.c | 1 + fabtests/benchmarks/rdm_bw.c | 1 + fabtests/benchmarks/rdm_bw_mt.c | 1 + fabtests/benchmarks/rdm_tagged_bw.c | 1 + fabtests/benchmarks/rdm_tagged_pingpong.c | 1 + fabtests/common/shared.c | 9 +++++++-- fabtests/include/shared.h | 1 + 7 files changed, 13 insertions(+), 2 deletions(-) diff --git a/fabtests/benchmarks/msg_pingpong.c b/fabtests/benchmarks/msg_pingpong.c index 259be6282d7..94734c69410 100644 --- a/fabtests/benchmarks/msg_pingpong.c +++ b/fabtests/benchmarks/msg_pingpong.c @@ -79,6 +79,7 @@ int main(int argc, char **argv) int op, ret; opts = INIT_OPTS; + opts.options |= FT_OPT_NO_PREPOSTED_AUX_RX; hints = fi_allocinfo(); if (!hints) diff --git a/fabtests/benchmarks/rdm_bw.c b/fabtests/benchmarks/rdm_bw.c index 6b445db6fc0..7335f097925 100644 --- a/fabtests/benchmarks/rdm_bw.c +++ b/fabtests/benchmarks/rdm_bw.c @@ -47,6 +47,7 @@ int main(int argc, char **argv) opts = INIT_OPTS; opts.options |= FT_OPT_BW; + opts.options |= FT_OPT_NO_PREPOSTED_AUX_RX; hints = fi_allocinfo(); if (!hints) diff --git a/fabtests/benchmarks/rdm_bw_mt.c b/fabtests/benchmarks/rdm_bw_mt.c index 330a870eee9..568d0fde1d5 100644 --- a/fabtests/benchmarks/rdm_bw_mt.c +++ b/fabtests/benchmarks/rdm_bw_mt.c @@ -617,6 +617,7 @@ int main(int argc, char **argv) opts = INIT_OPTS; opts.options |= FT_OPT_OOB_CTRL; + opts.options |= FT_OPT_NO_PREPOSTED_AUX_RX; hints = fi_allocinfo(); if (!hints) diff --git a/fabtests/benchmarks/rdm_tagged_bw.c b/fabtests/benchmarks/rdm_tagged_bw.c index e40a9be025b..b715050192d 100644 --- a/fabtests/benchmarks/rdm_tagged_bw.c +++ b/fabtests/benchmarks/rdm_tagged_bw.c @@ -72,6 +72,7 @@ int main(int argc, char **argv) opts = INIT_OPTS; opts.options |= FT_OPT_BW; + opts.options |= FT_OPT_NO_PREPOSTED_AUX_RX; hints = fi_allocinfo(); if (!hints) diff --git a/fabtests/benchmarks/rdm_tagged_pingpong.c b/fabtests/benchmarks/rdm_tagged_pingpong.c index 70c4ac6dec2..2be4f5e8ac2 100644 --- a/fabtests/benchmarks/rdm_tagged_pingpong.c +++ b/fabtests/benchmarks/rdm_tagged_pingpong.c @@ -41,6 +41,7 @@ int main(int argc, char **argv) int op, ret; opts = INIT_OPTS; + opts.options |= FT_OPT_NO_PREPOSTED_AUX_RX; hints = fi_allocinfo(); if (!hints) diff --git a/fabtests/common/shared.c b/fabtests/common/shared.c index c2706ab6fa8..c8ed952809c 100644 --- a/fabtests/common/shared.c +++ b/fabtests/common/shared.c @@ -1519,8 +1519,13 @@ int ft_enable_ep_recv(void) if (ret) return ret; - if (!ft_check_opts(FT_OPT_SKIP_MSG_ALLOC) && - (fi->caps & (FI_MSG | FI_TAGGED))) { + if ((opts.options & FT_OPT_NO_PREPOSTED_AUX_RX) && + (opts.options & FT_OPT_OOB_ADDR_EXCH)) { + return 0; + } + + if ((!ft_check_opts(FT_OPT_SKIP_MSG_ALLOC) && + (fi->caps & (FI_MSG | FI_TAGGED)))) { /* Initial receive will get remote address for unconnected EPs */ ret = ft_post_rx(ep, MAX(rx_size, FT_MAX_CTRL_MSG), &rx_ctx); if (ret) diff --git a/fabtests/include/shared.h b/fabtests/include/shared.h index 721a01d0ae4..a19113b2968 100644 --- a/fabtests/include/shared.h +++ b/fabtests/include/shared.h @@ -150,6 +150,7 @@ enum { FT_OPT_REG_DMABUF_MR = 1 << 27, FT_OPT_NO_PRE_POSTED_RX = 1 << 28, FT_OPT_OOB_CTRL = FT_OPT_OOB_SYNC | FT_OPT_OOB_ADDR_EXCH, + FT_OPT_NO_PREPOSTED_AUX_RX = 1 << 29, }; /* for RMA tests --- we want to be able to select fi_writedata, but there is no