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