Skip to content

UCX environment parameters

Yossi Itigin edited this page Mar 26, 2019 · 13 revisions

Setting the transports to use

UCX_TLS variable controls the transports to use.
In addition to the built-in transports it's possible to use aliases which specify multiple transports.
Using a \ prefix before a transport name treats it as an explicit transport name rather than an alias.
Currently supported aliases:

all use all the available transports.
sm / shm all shared memory transports.
mm shared memory transports - without kernel-assisted copy
ugni ugni_rdma and ugni_udt.
rc rc and ud.
rc_x rc with accelerated verbs and ud.
ud_x ud with accelerated verbs.

For example:

  • UCX_TLS=rc will select rc and ud
  • UCX_TLS=rc,cm will select rc, ud, and cm
  • UCX_TLS=\rc,cm will select rc and cm

Setting the devices to use

In order to specify the devices to use for the run, please use the following environment parameters:

  • UCX_NET_DEVICES for specifying the network devices. For example: mlx5_1:1 , mlx5_1:1 GEMINI
  • UCX_SHM_DEVICES for specifying the shared memory devices. For example: sysv , knem
  • UCX_ACC_DEVICES for specifying the acceleration devices. For example: gpu0

The following command line will use the rc_x and mm transports, and their corresponding devices will be mlx5_0:1 and sysv.
mpirun -mca pml ucx -x UCX_TLS=rc_x,mm -x UCX_NET_DEVICES=mlx5_0:1 -x UCX_SHM_DEVICES=sysv ...

This way, for instance, making the choice for the HCA to use doesn't affect the devices used for the shared memory UCTs.

If one or more of these environment variables are not set, their default values will be used.
The current default for each of them is 'all', which means to use all available devices and all available transports.

The following command shows the default values of these (as well as all other) environment parameters:
$ ./bin/ucx_info -f

For these specific ones:
$ ./bin/ucx_info -f | grep DEVICES
UCX_NET_DEVICES=all
UCX_SHM_DEVICES=all
UCX_ACC_DEVICES=all

Clone this wiki locally