Show HN: Deterministic PCIe Diagnostics for GPUs on Linux

2025/12/17 6:03

Show HN: Deterministic PCIe Diagnostics for GPUs on Linux

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

GPU PCIe Diagnostic & Bandwidth Analysis v2.7.4 は、観測可能なハードウェアデータのみを使用して NVIDIA GPU の PCI Express リンクの健全性と実際の帯域幅を検証する決定論的なコマンドラインツールです。
ユーティリティは NVML から現在/最大世代とレーン幅を照会し、CUDA

memcpy
操作を計測してピークホスト↔デバイスコピースループットを測定し、持続的な TX/RX レートを記録します。これらの数値を理論上のペイロード帯域幅と比較し、この情報だけで各 GPU を OKDEGRADED、または UNDERPERFORMING と分類します—BIOS、ファームウェア、ドライバ設定を変更することなく。
BIOS/ファームウェア更新後に発生し得る一般的な PCIe の問題(レーン幅の誤り(x8/x4/x1 ではなく x16)、世代ダウングレード、スロット分割、リッサーまたはマザーボードのレーン共有問題など)はすべて検出可能であり、ユーザーが実際のリンク障害とワークロードボトルネックを区別できるようにします。
ツールは Linux 上で動作し、対応する NVIDIA GPU、CUDA Toolkit、および NVML ライブラリ(Ubuntu 24.04.3 LTS でテスト済み)が必要です。ビルド手順には
make
または
nvcc -O3 pcie_diagnostic_pro.cu …
が含まれます。
使用例:
./pcie_diag 1024
、オプションフラグとして
--duration-ms 8000
--integrity
--all-gpus
--gpu-index <n>
、およびログオプション
--log --csv
または
--json
。ログは
results/csv/pcie_log.csv
および/または
results/json/pcie_sessions.json
に書き込まれ、安定した UUID と BDF を保持し、長期的な時系列分析を可能にします。
範囲は PCIe 伝送動作に限定されます;カーネルやアプリケーションのパフォーマンス測定も行わず、システムファームウェアを変更することもありません。

このバージョンでは欠落していた例/効率性の詳細、ビルドコマンド、明示的なログパスが組み込まれ、判定が測定データのみから行われることが明確にされました。主メッセージは明瞭で曖昧さを排除しています。

本文

GPU PCIe 診断 & 帯域幅解析

GPU の PCIe リンクの健全性、帯域幅、および実際の利用率を「観測可能なハードウェアデータ」のみで検証する決定論的コマンドラインツールです。


このツールが行うこと

本ツールはハードウェアから直接観測できる PCIe 診断を実施し、決定論的に評価された結果を報告します。
GPU ハードウェアから直接計測される項目は以下の通りです。

  • PCIe の現在値と最大リンク世代/幅(NVML 経由)
  • ホスト→デバイス / デバイス→ホスト コピー帯域幅のピーク(CUDA
    memcpy
    タイミング)
  • 負荷下での PCIe 持続利用率(NVML TX/RX カウンタ)
  • 理論上の PCIe ペイロード帯域幅に対する効率

ツールはシステム設定を調整・修正したり、最適化を試みたりしません。


評価結果(Verdict)の意味

Verdict意味
OK交渉されたリンクと測定済みスループットが期待通りである。
DEGRADEDGPU がサポートしている最大世代または幅より低い状態で動作している。
UNDERPERFORMINGフルリンクが交渉されているが、持続帯域幅が期待値に比べ著しく低い。

評価は規則ベースであり、測定データのみから導出されます。


このツールを作った理由

現代のシステムでは PCIe の問題が診断しにくいケースが多々あります:

  • GPU が x16 ではなく x8 / x4 / x1 を交渉している
  • BIOS/ファームウェア更新後に世代が下げられる
  • スロット分割、リッサーケーブル、マザーボードのレーン共有問題
  • システム状態は正常に見えるのに帯域幅が低下する
  • トランスポート制限とワークロードボトルネックを混同してしまう

本ツールは以下を提供します:

  • 再現性のある PCIe 診断ベースライン
  • ハードウェアレベルでの PCIe 行動証明
  • カーネル/ワークロード効果からリンク交渉を分離

出力例

GPU PCIe Diagnostic & Bandwidth Analysis v2.7.4
GPU:   NVIDIA GeForce GTX 1080
BDF:   00000000:01:00.0
UUID:  GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (redacted)

PCIe Link
  Current: Gen3 x16
  Max Cap: Gen3 x16
  Theoretical (payload): 15.76 GB/s
  Transfer Size: 1024 MiB

Peak Copy Bandwidth
  Host → Device: 12.5 GB/s
  Device → Host: 12.7 GB/s

Telemetry (NVML)
  Window:   5.0 s (50 samples @ 100 ms)
  TX avg:   7.6 GB/s
  RX avg:   7.1 GB/s
  Combined: 14.7 GB/s

Verdict
  State:      OK
  Reason:     Throughput and link state are consistent with a healthy PCIe path
  Efficiency: 93.5%

System Signals (informational)
  MaxReadReq: 512 bytes
  Persistence Mode: Disabled
  ASPM Policy (sysfs string): [default] performance powersave powersupersave
  IOMMU: Platform default (no explicit flags)

要件

  • 対応ドライバを搭載した NVIDIA GPU
  • CUDA Toolkit (
    nvcc
    )
  • NVML 開発ライブラリ(
    -lnvidia-ml

プラットフォーム互換性: Linux(Ubuntu 24.04.3 LTS でテスト済み)


権限・ログに関する注意

PCIe と NVML の診断には昇格した権限が必要な場合があります。

sudo
でログを作成したときは結果ディレクトリが root 所有になるため、以降の実行時にパスワードプロンプトが表示されることがあります。

sudo chown -R $USER:$USER results/

ビルド

make
# もしくは手動:
nvcc -O3 pcie_diagnostic_pro.cu -lnvidia-ml -Xcompiler -pthread -o pcie_diag

使用方法

./pcie_diag 1024            # デフォルト実行、1 GB 転送量
./pcie_diag 1024 --log      # ログを書き出す
./pcie_diag 1024 --log --csv
./pcie_diag 1024 --log --json

ログは次の場所に書き込まれます:

  • results/csv/pcie_log.csv
  • results/json/pcie_sessions.json

拡張テレメトリウィンドウ

./pcie_diag 1024 --duration-ms 8000   # 安定性向上のため長めに測定

オプションで整合性カウンタを読み取る

./pcie_diag 1024 --integrity   # sysfs が利用可能なら PCIe AER カウンタを取得

マルチ GPU のログ挙動

  • --all-gpus
    は検出された各 GPU を独立して評価します。
  • 実行ごとに 1 行(CSV)/ 1 オブジェクト(JSON)が作成され、UUID と BDF が含まれるため曖昧さがありません。

例:

./pcie_diag 1024 --all-gpus --log --csv

ログと再現性

  • CSV/JSON ログは安定したデバイス識別子を含みます。
  • UUID は NVML を通じて実行時に報告され、複数回の実行で一貫します。
  • 時系列解析や自動監視に適したアペンド可能形式です。

スコープと制限

  • PCIe トランスポート挙動のみを評価します。
  • カーネルレベルまたはアプリケーションレベルのパフォーマンスは測定しません。
  • BIOS、ファームウェア、レジストリ、PCIe 設定を変更・修正しません。
  • 観測可能な事実のみを報告し、利用可能データ以外の推論は行いません。

検証

memcpy
タイミングと PCIe 行動は開発中に Nsight Systems で交差検証されました(ツール使用時に必須ではありません)。


作者 & ライセンス

作者: Joe McLaren(Human–AI 協働エンジニアリング)
GitHub: https://github.com/parallelArchitect

ライセンス: MIT License(リポジトリ内の全文を参照)


参考文献

同じ日のほかのニュース

一覧に戻る →

2025/12/17 6:14

Prediction: AI will make formal verification go mainstream

## Japanese Translation: > 記事は、人工知能がソフトウェアが仕様を満たしていることを数学的に証明する「形式検証」を、ニッチな研究活動から日常のエンジニアリング実務へと導くと主張しています。Coq、Isabelle、Lean、F*、Agda などの証明支援ツールはすでに OS カーネル、コンパイラ、暗号スタックなど大規模システムを形式的に検証することを可能にしています。現在では言語モデル型コーディングアシスタントが実装コードとそれに付随する証明スクリプトの両方をドラフトでき、極小の検証済みチェッカーは無効な証明を拒否し、AI エージェントが幻覚(hallucinate)した場合には再試行を強制します。2009 年に公開された seL4 マイクロカーネル(8,700 行の C コードで 20 人年と 20 万行の Isabelle コード)が示すように、従来は労力集約的な検証が行われてきましたが、世界中で数百人程度の専門家しかそのような証明を作成できず、コストはバグ修正費用を上回ることも多いです。著者は AI がこれらのコストを低減するにつれて、より多くのソフトウェアが形式検証され、人間によるレビューではなく AI 生成コードに依存するようになると予測しています。残された最大の障壁は正確な仕様書を書くことです——仕様書作成は証明より容易ですが、それでも専門知識を要します。AI は自然言語での要求を形式的に翻訳する手助けができるかもしれませんが、ニュアンスの損失リスクがあります。広範な採用はバグと脆弱性を削減し、エンジニアリングワークフローを再構築し、仕様書作成に関する新たなスキルを要求しますが、文化的受容こそが主流化への主要障壁となります。

2025/12/17 1:54

alpr.watch

## Japanese Translation: 米国全土の自治体は急速に監視技術を導入しており、既に8万台以上のカメラが設置されています。 新しいプラットフォーム **alpr.watch** は、市議会の議題リストから「flock」「license plate reader」「ALPR」などのキーワードをスキャンし、それぞれの議論をマップ上にピン留めします。住民はこれらのシステムについて議論が行われている場所を確認でき、必要に応じて行動を起こすことができます。ユーザーはメールアドレスで登録すると、自分のエリア内の会議通知を受け取ることが可能です。 12月中旬以前に収集された全データは未検証です。今後提出される情報は正確性を確認するためにモデレートされます。 **ALPR** システムは、24時間365日すべての通行車両からナンバープレートデータを取得し、読み取り、保存します。最大規模のメーカーの一つである **Flock Safety** は、そのユニットを直接近隣住民や警察署に販売しています。カメラは機関・管轄区域間でデータを共有し、数百万の米国人を追跡する監視ウェブを構築します。これらのシステムは、意図された範囲を超えて拡張されることが多く、例えば移民取り締まりに使用されたり、恒久的なインフラストラクチャーとなったりします。 Electronic Frontier Foundation(EFF)、ACLU、Fight for the Future、STOP、Institute for Justice、および地域コミュニティグループなどのプライバシー擁護団体は、すでにこれらの動向を監視しています。 *この改訂された要約はリストからすべての主要ポイントを反映し、未確認推測を含まず、メインメッセージを明確かつ簡潔に保っています。*

2025/12/17 4:20

No Graphics API