@@ -607,6 +607,7 @@ static UCS_F_NOINLINE ucs_status_t ucp_wireup_select_transport(
607
607
}
608
608
609
609
score = criteria -> calc_score (wiface , md_attr , address , ae ,
610
+ select_params -> ep_init_flags ,
610
611
criteria -> arg );
611
612
priority = iface_attr -> priority + ae -> iface_attr .priority ;
612
613
is_reachable = 1 ;
@@ -664,7 +665,8 @@ static UCS_F_NOINLINE ucs_status_t ucp_wireup_select_transport(
664
665
static inline double
665
666
ucp_wireup_tl_iface_latency (const ucp_worker_iface_t * wiface ,
666
667
const ucp_unpacked_address_t * unpacked_addr ,
667
- const ucp_address_iface_attr_t * remote_iface_attr )
668
+ const ucp_address_iface_attr_t * remote_iface_attr ,
669
+ unsigned ep_init_flags )
668
670
{
669
671
ucp_context_h context = wiface -> worker -> context ;
670
672
double local_lat , lat_lossy ;
@@ -673,9 +675,11 @@ ucp_wireup_tl_iface_latency(const ucp_worker_iface_t *wiface,
673
675
local_lat = ucp_wireup_iface_lat_distance_v1 (wiface );
674
676
/* Address v1 contains just latency overhead */
675
677
return ((local_lat + remote_iface_attr -> lat_ovh ) / 2 ) +
676
- (wiface -> attr .latency .m * context -> config .est_num_eps );
678
+ (ucp_wireup_adjusted_lat_multiplier (& wiface -> attr .latency ,
679
+ ep_init_flags ) *
680
+ context -> config .est_num_eps );
677
681
} else {
678
- local_lat = ucp_wireup_iface_lat_distance_v2 (wiface );
682
+ local_lat = ucp_wireup_iface_lat_distance_v2 (wiface , ep_init_flags );
679
683
/* FP8 is a lossy compression method, so in order to create a symmetric
680
684
* calculation we pack/unpack the local latency as well */
681
685
lat_lossy = ucp_wireup_fp8_pack_unpack_latency (local_lat );
@@ -988,7 +992,7 @@ static double ucp_wireup_rma_score_func(const ucp_worker_iface_t *wiface,
988
992
const uct_md_attr_v2_t * md_attr ,
989
993
const ucp_unpacked_address_t * unpacked_addr ,
990
994
const ucp_address_entry_t * remote_addr ,
991
- void * arg )
995
+ unsigned ep_init_flags , void * arg )
992
996
{
993
997
/* best for 4k messages */
994
998
double local_bw ;
@@ -1001,8 +1005,9 @@ static double ucp_wireup_rma_score_func(const ucp_worker_iface_t *wiface,
1001
1005
}
1002
1006
1003
1007
return 1e-3 /
1004
- (ucp_wireup_tl_iface_latency (
1005
- wiface , unpacked_addr , & remote_addr -> iface_attr ) +
1008
+ (ucp_wireup_tl_iface_latency (wiface , unpacked_addr ,
1009
+ & remote_addr -> iface_attr ,
1010
+ ep_init_flags ) +
1006
1011
wiface -> attr .overhead +
1007
1012
(4096.0 / ucs_min (local_bw , remote_addr -> iface_attr .bandwidth )));
1008
1013
}
@@ -1022,12 +1027,13 @@ static double ucp_wireup_aux_score_func(const ucp_worker_iface_t *wiface,
1022
1027
const uct_md_attr_v2_t * md_attr ,
1023
1028
const ucp_unpacked_address_t * unpacked_addr ,
1024
1029
const ucp_address_entry_t * remote_addr ,
1025
- void * arg )
1030
+ unsigned ep_init_flags , void * arg )
1026
1031
{
1027
1032
/* best end-to-end latency and larger bcopy size */
1028
1033
return (1e-3 /
1029
- (ucp_wireup_tl_iface_latency (
1030
- wiface , unpacked_addr , & remote_addr -> iface_attr ) +
1034
+ (ucp_wireup_tl_iface_latency (wiface , unpacked_addr ,
1035
+ & remote_addr -> iface_attr ,
1036
+ ep_init_flags ) +
1031
1037
wiface -> attr .overhead + remote_addr -> iface_attr .overhead ));
1032
1038
}
1033
1039
@@ -1170,12 +1176,13 @@ double ucp_wireup_amo_score_func(const ucp_worker_iface_t *wiface,
1170
1176
const uct_md_attr_v2_t * md_attr ,
1171
1177
const ucp_unpacked_address_t * unpacked_addr ,
1172
1178
const ucp_address_entry_t * remote_addr ,
1173
- void * arg )
1179
+ unsigned ep_init_flags , void * arg )
1174
1180
{
1175
1181
/* best one-sided latency */
1176
1182
return 1e-3 /
1177
- (ucp_wireup_tl_iface_latency (
1178
- wiface , unpacked_addr , & remote_addr -> iface_attr ) +
1183
+ (ucp_wireup_tl_iface_latency (wiface , unpacked_addr ,
1184
+ & remote_addr -> iface_attr ,
1185
+ ep_init_flags ) +
1179
1186
wiface -> attr .overhead );
1180
1187
}
1181
1188
@@ -1228,12 +1235,14 @@ static double
1228
1235
ucp_wireup_am_score_func (const ucp_worker_iface_t * wiface ,
1229
1236
const uct_md_attr_v2_t * md_attr ,
1230
1237
const ucp_unpacked_address_t * unpacked_addr ,
1231
- const ucp_address_entry_t * remote_addr , void * arg )
1238
+ const ucp_address_entry_t * remote_addr ,
1239
+ unsigned ep_init_flags , void * arg )
1232
1240
{
1233
1241
/* best end-to-end latency */
1234
1242
return 1e-3 /
1235
- (ucp_wireup_tl_iface_latency (
1236
- wiface , unpacked_addr , & remote_addr -> iface_attr ) +
1243
+ (ucp_wireup_tl_iface_latency (wiface , unpacked_addr ,
1244
+ & remote_addr -> iface_attr ,
1245
+ ep_init_flags ) +
1237
1246
wiface -> attr .overhead + remote_addr -> iface_attr .overhead );
1238
1247
}
1239
1248
@@ -1327,7 +1336,8 @@ static double
1327
1336
ucp_wireup_rma_bw_score_func (const ucp_worker_iface_t * wiface ,
1328
1337
const uct_md_attr_v2_t * md_attr ,
1329
1338
const ucp_unpacked_address_t * unpacked_addr ,
1330
- const ucp_address_entry_t * remote_addr , void * arg )
1339
+ const ucp_address_entry_t * remote_addr ,
1340
+ unsigned ep_init_flags , void * arg )
1331
1341
{
1332
1342
ucp_wireup_dev_usage_count * dev_count = arg ;
1333
1343
ucp_context_t * context = wiface -> worker -> context ;
@@ -1342,7 +1352,8 @@ ucp_wireup_rma_bw_score_func(const ucp_worker_iface_t *wiface,
1342
1352
ucp_wireup_iface_avail_bandwidth (wiface , unpacked_addr ,
1343
1353
remote_addr , dev_count )) +
1344
1354
ucp_wireup_tl_iface_latency (wiface , unpacked_addr ,
1345
- & remote_addr -> iface_attr ) +
1355
+ & remote_addr -> iface_attr ,
1356
+ ep_init_flags ) +
1346
1357
wiface -> attr .overhead +
1347
1358
ucs_linear_func_apply (mem_reg_cost ,
1348
1359
UCP_WIREUP_RMA_BW_TEST_MSG_SIZE ));
@@ -1467,7 +1478,8 @@ static double
1467
1478
ucp_wireup_am_bw_score_func (const ucp_worker_iface_t * wiface ,
1468
1479
const uct_md_attr_v2_t * md_attr ,
1469
1480
const ucp_unpacked_address_t * unpacked_addr ,
1470
- const ucp_address_entry_t * remote_addr , void * arg )
1481
+ const ucp_address_entry_t * remote_addr ,
1482
+ unsigned ep_init_flags , void * arg )
1471
1483
{
1472
1484
ucp_wireup_dev_usage_count * dev_count = arg ;
1473
1485
@@ -1480,7 +1492,8 @@ ucp_wireup_am_bw_score_func(const ucp_worker_iface_t *wiface,
1480
1492
wiface , unpacked_addr , remote_addr , dev_count )) +
1481
1493
wiface -> attr .overhead + remote_addr -> iface_attr .overhead +
1482
1494
ucp_wireup_tl_iface_latency (wiface , unpacked_addr ,
1483
- & remote_addr -> iface_attr );
1495
+ & remote_addr -> iface_attr ,
1496
+ ep_init_flags );
1484
1497
1485
1498
return size / t * 1e-5 ;
1486
1499
}
@@ -2106,7 +2119,7 @@ ucp_wireup_keepalive_score_func(const ucp_worker_iface_t *wiface,
2106
2119
const uct_md_attr_v2_t * md_attr ,
2107
2120
const ucp_unpacked_address_t * unpacked_addr ,
2108
2121
const ucp_address_entry_t * remote_addr ,
2109
- void * arg )
2122
+ unsigned ep_init_flags , void * arg )
2110
2123
{
2111
2124
uct_perf_attr_t perf_attr ;
2112
2125
ucs_status_t status ;
@@ -2122,7 +2135,8 @@ ucp_wireup_keepalive_score_func(const ucp_worker_iface_t *wiface,
2122
2135
return 0 ;
2123
2136
}
2124
2137
2125
- return ucp_wireup_am_score_func (wiface , md_attr , unpacked_addr , remote_addr , arg ) *
2138
+ return ucp_wireup_am_score_func (wiface , md_attr , unpacked_addr , remote_addr ,
2139
+ ep_init_flags , arg ) *
2126
2140
((double )perf_attr .max_inflight_eps / (double )SIZE_MAX );
2127
2141
}
2128
2142
0 commit comments