12. gc-iputraffictest

This tool tests the data transfer between IPUs.

To use it to test data transfer between device 2 and device 3, for example, run:

gc-iputraffictest --device0 2 --device1 3 -j

The device numbers used are those returned by the gc-info tool.

The output will be plain text if the -j option is not specified. The JSON output will look something like this:

{
  "tile_to_tile": {
      "boards": {
          "0024.xxxx.8203321": {
              "power_sensors": {
                  "XDPE132G5C:0": "25.5",
                  "XDPE132G5C:1": "21"
              },
              "device_ids": [
                  "3",
                  "2"
              ],
              "type": "M2000",
              "board_power": "46.5"
          }
      },
      "device0": "2",
      "device1": "3",
      "duration_sec": "0.079266418000000005",
      "kbytes_transferred": "4096000",
      "gbytes_transferred": "3.90625",
      "gbps": "423.31207649625344",
      "errors": "0",
      "power": "46.5"
  }
}

The reported bandwidth is the simultaneous bi-directional bandwidth: the sum of the bandwidth from device0 to device1 and the bandwidth from device1 to device0.

If an error occurs during the test, then gc-iputraffictest will return a non-zero exit code, and output an error message.

You can use this tool to run a “soak test” of all the IPU-to-IPU links by running:

$ gc-iputraffictest --all-links

There is also a --forever option that will run either a point-to-point or all-link soak forever (until interrupted by Ctrl-C). The -j option is not available when --forever is used.

Note

The --device0 and --device1 arguments must be IDs for single IPUs, not groups of IPUs. (The test will connect to the smallest group containing both the sender and receiver.)

12.1. Usage

12.1.1. Allowed options

-j, --json-output

Emit JSON output

--device0 {arg}

First IPU of exchange

--device1 {arg}

Second IPU of exchange

-i {arg}, --iterations {arg}

Number of (64)KB transfers per tile (default: 1000)

-v, --verbose

Verbose output

--superverbose

Even more verbose output

--amp

Run high power consumption AMP loop on idle tiles

--sync-before-amp

AMP loop tiles sync with host before starting

--pulseamp

[=arg(=300)] ‘–amp’ option but with a delay between iterations.Interval specified in units of 1000 cycles

--ipum-loopback

Test using IPU-M loopback config

--all-links

[=arg(=0)] Exercise every link of a multi-ipu device at once. Defaults to the largest multi-ipu device in the system.

--min-bandwidth {arg}

Minimum bandwidth (Gbps) expected - fails if not reached

--max-errcount {arg}

Maximum error count expected - fails if exceeded

--dump-tile-overview

Dump tile overview upon failure

--forever

Transmit data forever

-h, --help

Produce help message

--version

Version number

12.1.2. Single ipu mode options

--single-ipu-mode {arg}

Run in single IPU mode. Required: run-master | setup | check

-d {arg}, --device-id {arg}

Single IPU mode device id

--num-ipus {arg}

Number of IPUs in larger device

--dnc {arg}

DNC id

12.1.3. Single ipu loopback mode

--single-ipu-loopback

Single IPU loopback mode. Requires device id.