Skip to content

PERFTEST/FT: Adds validation mode to pingpong perftests#11592

Merged
gleon99 merged 6 commits into
openucx:masterfrom
william-gallagher-nv:perftest_data_validate
Jul 16, 2026
Merged

PERFTEST/FT: Adds validation mode to pingpong perftests#11592
gleon99 merged 6 commits into
openucx:masterfrom
william-gallagher-nv:perftest_data_validate

Conversation

@william-gallagher-nv

Copy link
Copy Markdown
Contributor

What?

Adds a new mode to UCX perftest to validate that buffers are transferred completely.

Why?

Allows for validation of data transfers during fault tolerance testing when end point lanes fail and are restored.

How?

UCP Pingpong perftests set send buffers to a known value on the sender side. The buffer contents are received and echoed back by the receiving side. The contents of the buffer are validated back on the sender side.

Comment thread src/tools/perf/lib/ucp_tests.cc Outdated
remote_addr = m_perf.ucp.remote_addr;
rkey = m_perf.ucp.rkey;
sn = 0;
sn = 1;

@ofirfarjun7 ofirfarjun7 Jun 28, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not starting from 0?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My thinking was that it was safer to start with 1. 0 isn't a good starting value because buffers are often full of 0s. But it probably doesn't matter because the test will quickly cycle through sequence numbers.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Check reset_buffers I don't think 0 is a problem here but maybe I'm wrong.

@william-gallagher-nv william-gallagher-nv Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. With seq number byte initialized to UNKNOWN_SN, starting at 0 isn't an issue. Reverted back to using 0.

Comment thread src/tools/perf/lib/ucp_tests.cc
@william-gallagher-nv

Copy link
Copy Markdown
Contributor Author

@svc-nvidia-pr-review

@svc-nvidia-pr-review

Copy link
Copy Markdown

🚫 @william-gallagher-nv — not authorized to trigger a review on this repo. Contact a repo admin to be added to the allowed-users list.

@william-gallagher-nv

Copy link
Copy Markdown
Contributor Author

@svc-nvidia-pr-review

@svc-nvidia-pr-review

Copy link
Copy Markdown

🚫 @william-gallagher-nv — not authorized to trigger a review on this repo. Contact a repo admin to be added to the allowed-users list.

Comment thread src/tools/perf/lib/ucp_tests.cc Outdated
UCX_PERF_TEST_FOREACH(&m_perf) {

if (validate) {
memset(send_buffer, sn, send_length);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With -D iov, send_buffer is the descriptor array and send_length is the IOV count, so this corrupts the descriptors. -V has to require contig or validate the IOV payloads.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IOV payloads supported in latest commit

return UCS_ERR_INVALID_PARAM;
}

if (params->test_type != UCX_PERF_TEST_TYPE_PINGPONG) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AM pingpong doesn’t copy into recv_buffer unless -y is set, so -V will fail w/o corruption. Maybe imply -y or reject this combo?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. I was testing AM pingpong with large buffers which use RNDV and don't hit this issue. Latest commit implicitly sets -y with AM tests.

Comment thread src/tools/perf/perftest_params.c Outdated
optind = 1;
while ((c = getopt_long(argc, argv,
"p:b:6NfvXc:P:hK:g:G:k" TEST_PARAMS_ARGS,
"p:b:6NfvXc:P:hK:g:G:kV" TEST_PARAMS_ARGS,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-V isn’t accepted in batch files. Should it be added to TEST_PARAMS_ARGS?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Comment thread src/tools/perf/lib/ucp_tests.cc Outdated
Comment thread src/tools/perf/lib/ucp_tests.cc Outdated
@gleon99
gleon99 merged commit b68a434 into openucx:master Jul 16, 2026
161 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants