From 1a2da4bae47b03ffabb8b050f507834259e1b943 Mon Sep 17 00:00:00 2001 From: Mikhail Brinskii Date: Tue, 25 Jul 2023 14:25:07 +0300 Subject: [PATCH] UCP: Fix BW lanes score calculation Device num_paths coefficient should be applied after fp8 pack/unpack. Otherwise the ratio effect maybe just hidden by fp8 inaccuracy --- src/ucp/wireup/select.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/ucp/wireup/select.c b/src/ucp/wireup/select.c index ec466f71be8..a661f496e4e 100644 --- a/src/ucp/wireup/select.c +++ b/src/ucp/wireup/select.c @@ -1231,9 +1231,7 @@ ucp_wireup_iface_avail_bandwidth(const ucp_worker_iface_t *wiface, double eps = 1e-3; double local_bw, remote_bw; - local_bw = ucp_wireup_iface_bw_distance(wiface) * - ucp_tl_iface_bandwidth_ratio(context, local_dev_count[dev_index], - wiface->attr.dev_num_paths); + local_bw = ucp_wireup_iface_bw_distance(wiface); if (remote_addr->iface_attr.addr_version == UCP_OBJECT_VERSION_V2) { /* FP8 is a lossy compression method, so in order to create a symmetric @@ -1241,6 +1239,13 @@ ucp_wireup_iface_avail_bandwidth(const ucp_worker_iface_t *wiface, local_bw = ucp_wireup_fp8_pack_unpack_bw(local_bw); } + /* Apply dev num paths ratio after fp8 pack/unpack to make sure it is not + * neglected because of fp8 inaccuracy + */ + local_bw *= ucp_tl_iface_bandwidth_ratio( + context, local_dev_count[dev_index], + wiface->attr.dev_num_paths); + remote_bw = remote_addr->iface_attr.bandwidth * ucp_tl_iface_bandwidth_ratio( context, remote_dev_count[remote_addr->dev_index],