Skip to content

TransferBench v1.71.00 - #359

Open
AtlantaPepsi wants to merge 10 commits into
developfrom
candidate-1.71
Open

AtlantaPepsi wants to merge 10 commits into
developfrom
candidate-1.71

Conversation

@AtlantaPepsi

Copy link
Copy Markdown
Contributor

Motivation

  • Pingpong latency testing integration and presets
  • NIC executor check against max message size
  • fixing logical CU ID report
  • inclusion of gfx1250-strict target

Technical Details

Test Plan

Test Result

To be filled

Submission Checklist

Copilot AI lite review requested due to automatic review settings September 23, 2026 15:27
@AtlantaPepsi
AtlantaPepsi requested review from a team as code owners September 23, 2026 15:27

Copilot AI left a comment

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.

Copilot review overview

🟡 Changes recommended

Unresolved critical and moderate correctness, portability, parsing, and build-target issues remain.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 4 High severity · 4 Medium severity

Open (8)
What changed in this PR

Adds pingpong latency testing, NIC message-size validation, logical CU reporting fixes, and gfx1250-strict support.

Changes:

  • Adds pingpong parsing, execution, timing, and latency presets.
  • Adds NIC max_msg_sz validation and reporting.
  • Updates GPU architecture and TDM handling.
File Review summary
src/​header/​TransferBench.hpp Critical and moderate issues in XCC handling, pingpong validation, NIC limits, subindex selection, dump parsing, and timing scaling.
src/​header/​tdmCopy.h Critical architecture guard mismatch enables unsupported TDM targets.
src/​client/​Utilities.hpp Reviewed result and topology utilities.
src/​client/​Topology.hpp Reviewed NIC message-size reporting.
src/​client/​Presets/​Presets.hpp Reviewed latency preset registration.
src/​client/​Presets/​Latency.hpp Moderate issues with failed-run result handling and diagonal pair measurement.
src/​client/​EnvVars.hpp Reviewed pingpong configuration variables.
src/​client/​Client.cpp Reviewed pingpong transfer display updates.
docs/​install/​build_from_source.rst Reviewed strict GPU target documentation.
CMakeLists.txt Moderate issue: package build targets omit gfx1250-strict.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@@ -788,7 +855,7 @@ __device__ __forceinline__ uint32_t GetXccId()
uint32_t xccReg = 0;
asm volatile("s_getreg_b32 %0, hwreg(HW_REG_XCC_ID)" : "=s"(xccReg));
return xccReg & 0xF;
#elif defined(__gfx1250__)
#elif defined(__GFX12__)
exeInfo.totalSubExecs += t.numSubExecs;
} else {
exeInfo.totalPingpong ++;
}
exeInfo.useSubIndices |= (t.exeSubIndex != -1 || (t.exeDevice.exeType == EXE_GPU_GFX && !cfg.gfx.prefXccTable.empty()));
Comment on lines +8858 to +8867
fprintf(dumpCfgFile, " +");
if (t.numLaps != 1)
fprintf(dumpCfgFile, "%d", t.numLaps);
fprintf(dumpCfgFile, " ");
printMem(t.srcs[1]);
fprintf(dumpCfgFile, "->");
printExe(t.exeDevicePong, t.exeSubIndexPong, t.exeSubSlotPong);
fprintf(dumpCfgFile, "->");
printMem(t.dsts[1]);
fprintf(dumpCfgFile, " %d %lu)", t.numSubExecs, t.numBytes);
Comment thread src/header/tdmCopy.h
Comment on lines +115 to 117
# if defined(__GFX12__) && \
__has_builtin(__builtin_amdgcn_tensor_load_to_lds) && \
TDM_TOOLCHAIN_AVAILABLE
Comment on lines +157 to +161
if (!TransferBench::RunTransfers(cfg, transfers, results))
Utils::PrintErrors(results.errResults);

for (size_t k = 0; k < pairs.size(); k++)
latencyUs[pairs[k].first][pairs[k].second] = results.tfrResults[k].avgDurationMsec * 1000.0;
Comment on lines +3692 to +3696
// Any active port may be selected for QP setup via cfg.nic.ibPort, which is
// not visible here, so keep the most restrictive limit across all of them.
if (portAttr.max_msg_sz &&
(!ibvDevice.maxMsgSize || portAttr.max_msg_sz < ibvDevice.maxMsgSize))
ibvDevice.maxMsgSize = portAttr.max_msg_sz;
Comment on lines +6759 to +6762
if (numCopyTasks == 0) {
exeInfo.totalDurationMsec += hasPingpong
? std::chrono::duration_cast<std::chrono::duration<double>>(cpuDelta).count() * scale
: 0.0;
Comment on lines +8370 to +8373
auto singleMemOrNull = [](vector<MemDevice> const& mems) {
if (mems.empty()) return MemDevice{MEM_NULL, 0, 0};
return mems[0];
};
Copilot AI review requested due to automatic review settings September 23, 2026 15:36

Copilot AI left a comment

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.

Comment on lines +6660 to +6661
dim3 const gridSize(xccDim, numPingpong, 1);
dim3 const blockSize(1);
@AtlantaPepsi AtlantaPepsi changed the title Candidate 1.71 TransferBench v1.71.00 Sep 23, 2026
Copilot AI review requested due to automatic review settings September 23, 2026 21:06

Copilot AI left a comment

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.

#else
useSubIndexCount[exe]++;
int numSubIndices = GetNumExecutorSubIndices(exe);
if (subIndex >= numSubIndices) {
Comment on lines +6660 to +6661
dim3 const gridSize(xccDim, numPingpong, 1);
dim3 const blockSize(1);
Comment on lines 3111 to +3115
if (t.numSubExecs <= 0)
errors.push_back({ERR_FATAL, "Transfer %d: # of subexecutors must be positive", i});
else
else if (isPingpong) {
if (t.numSubExecs != 1)
errors.push_back({ERR_WARN,
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.

2 participants