Optional active GPU memory test for nodes without DCGM (opt-in, like AUDIT_DCGM_DIAG_R2)
メンテナーはふだん 2 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 45/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- bash
調査の方向性
Start with host-check.sh and the existing dcgmi/AUDIT_DCGM_DIAG_R2 handling to understand how audit results are emitted. Review tests/audit/ and the cmax audit entry point, then verify that the opt-in path produces each listed status while the default remains skipped and existing audit behavior is unchanged.
索引モデルが issue の本文から書いたものです。
説明
We maintain Pantheon, an open-source (Apache-2.0) GPU diagnostics suite, so please read this as a suggestion from an interested party. We would like to know if it fits before we write a pull request.
What we noticed in cmax audit
The active GPU diagnostic that host-check.sh runs is dcgmi diag -r 1, with -r 2 behind AUDIT_DCGM_DIAG_R2=true. That leaves two cases with no active result:
- A node where
dcgmiis not installed. The audit recordsWORKER_DCGM_DIAG_R1=no-dcgmi. - An AMD node. The audit records whether
rvsis installed, its version and its config directory, and does not run it.
In both cases the audit can say which tools the operator installed. It cannot say if the memory of the cards in front of it returns what was written to it.
What we suggest
One more opt-in block in the same pattern, off by default so the audit stays read-only:
AUDIT_PANTHEON=true cmax audit
It runs one memory pattern test (March C-) for 30 seconds on every GPU and records one value:
| Value | Meaning |
|---|---|
skipped |
Not requested (the default) |
not-found |
pantheon is not installed |
no-gpu-backend |
The node has no nvcc or hipcc, so nothing was tested |
no-report |
The command ended without writing a report |
pass |
Every card returned what was written, and the report counts no uncorrectable error |
fail |
A card returned wrong data or could not finish, or the report counts an uncorrectable error |
timeout |
The run did not finish in 300 seconds |
What it adds next to the vendor tools:
- The same test and the same result format on NVIDIA and AMD.
- It runs as the tenant. It needs no root access, no daemon and no kernel module (
pipx install pantheon-gpu). - The report is a JSON file that names each card by UUID, so a result can be tied to a card and repeated later by someone else.
What it does not do, so that nobody is surprised:
- It needs the CUDA or ROCm compiler on the node, because it compiles its workloads for the cards it finds. The first run took about 80 seconds longer on our machine for that reason. A node without a compiler gives
no-gpu-backend, neverpass. - It is not a replacement for
dcgmi diagor RVS. Those test more of the system (PCIe, power, pulse tests under the vendor's thresholds). This is a second opinion from outside the vendor's stack. - It loads the GPUs for 30 seconds each, which is why it should be opt-in.
Sketch of the block
We ran this block as it is on a machine with two NVIDIA GPUs. It gave skipped by default, pass on the two cards (39 seconds), no-gpu-backend without a GPU compiler, not-found without Pantheon, and fail when the command exits with an error. We have no card with uncorrectable errors, so we tested that branch with a report edited by hand.
# --- Pantheon (opt-in active GPU memory test, the same on NVIDIA and AMD) ---
if [[ "${AUDIT_PANTHEON:-false}" == "true" || "${AUDIT_PANTHEON:-0}" == "1" ]]; then
if command -v pantheon &>/dev/null; then
_pantheon_dir=$(mktemp -d)
(cd "$_pantheon_dir" && timeout 300 pantheon --test march_test --duration 30 --gpu all >/dev/null 2>&1)
PANTHEON_RC=$?
if [[ $PANTHEON_RC -eq 124 ]]; then
echo "WORKER_PANTHEON_MARCH=timeout"
elif grep -rqs '"type": "MOCK"' "$_pantheon_dir/database"; then
# No GPU compiler on the node: the workload ran on the CPU backend.
echo "WORKER_PANTHEON_MARCH=no-gpu-backend"
elif [[ $PANTHEON_RC -ne 0 ]]; then
echo "WORKER_PANTHEON_MARCH=fail"
elif grep -rqs '"RAS Status": "ERROR"' "$_pantheon_dir/database"; then
# The exit code covers the workload. Counted errors are in the report.
echo "WORKER_PANTHEON_MARCH=fail"
elif ! ls "$_pantheon_dir"/database/*.json &>/dev/null; then
echo "WORKER_PANTHEON_MARCH=no-report"
else
echo "WORKER_PANTHEON_MARCH=pass"
fi
rm -rf "$_pantheon_dir"
else
echo "WORKER_PANTHEON_MARCH=not-found"
fi
else
echo "WORKER_PANTHEON_MARCH=skipped"
fi
One row of the report it reads from, from a real run (the card's UUID is in the same file). The warning in this row is the PCIe link changing its power state, which Pantheon reports and does not count as a failure:
{
"Test Name": "march_test",
"GPU ID": 0,
"Score": 2915520000.0,
"Unit": "march-ops/s",
"Status": null,
"Failure Stage": null,
"Max Temp (C)": 55.0,
"Limit Reason": "None",
"RAS Status": "WARNING",
"RAS Error Delta": "vendor_ras.pcie.l0_to_recovery +1",
"Throttle Time (s)": 0.0
}
If this is useful we will send a pull request with the block, the report lines in the harness scripts, and tests in tests/audit/. If it is out of scope for cmax, that is a fine answer too, and we would still be glad to hear what an auditor would need from a test like this.
This issue was drafted with the help of an AI assistant. We ran the block and the workload ourselves, on our hardware.
- 主要言語
- Python
- スター
- 44
- フォーク
- 8
- 平均マージ
- 2日 17時間
- マージ済み PR(30日)
- 38
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
enhancement good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
iceboundrock/AutoForge#304 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
fossasia/visdom-dev#77 ·
メンテナーはふだん 4 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
aws-cloudformation/cfn-lint#4890 ·
メンテナーはふだん 2 日以内に返信