Skip to content

gpu lock (#14963 suites): verification mono-GPU silencieuse sur machine multi-GPU + rc=0 sur verrou non verifie #14975

Description

@myia-ai-01

Deux reserves posees sur #14963 (MERGED 2026-09-06T23:35Z) par ses reviewers, declarees non bloquantes par leurs auteurs et donc non traitees au merge. Elles sont reelles et concernent le meme organe (scripts/genai-stack/commands/gpu.py) : ce ticket les porte pour que la deuxieme iteration du verrou GPU les solde.

Reserve 1 — la verification multi-GPU ne sonde qu'un seul GPU (silencieusement)

_parse_clocks_stdout retourne la derniere valeur Graphics rencontree dans la sortie nvidia-smi -q -d CLOCK. Sur une machine multi-GPU, le rapport enchaine une section par carte : le verdict reflete donc le dernier GPU du rapport, jamais le premier ni un agregat, et sans avertissement.

Le reviewer l'a mesure firsthand : sur une sortie 2-GPU simulee, current=1230 ecrase 1380 en silence.

Pourquoi ca compte au-dela du cas simule : -lgc sans -i s'applique a tous les GPU, mais la verification post-lock n'en sonde qu'un. L'asymetrie est le defaut : on pose un verrou sur N cartes et on en verifie une. Sur une machine ou une seule carte refuserait le verrou, le verdict serait OK malgre l'echec partiel.

La machine cible du grain etait mono-GPU, ce qui rend l'effet nul aujourd'hui — mais ai-01 porte 3x4090 et le repo documente un profil 3090+3080 dans GPU_PROFILES. Le premier deploiement du verrou sur ai-01 rencontre ce cas.

Acceptance : le parseur rend une valeur par GPU (index issu des en-tetes GPU 00000000:XX:00.0 de nvidia-smi -q), _verify_lock rend un verdict par carte, et le verdict agrege est ECHEC des qu'une carte diverge. Controle positif obligatoire : un test sur une fixture 2-GPU reelle ou les deux cartes portent des valeurs differentes, verifiant que le verdict distingue « les deux OK » de « une seule OK » — la fixture actuelle est mono-GPU, elle ne peut pas attraper ce defaut.

Reserve 2 — gpu_lock_apply rend True sur verdict ECHEC / INDETERMINE

Le code de sortie ne distingue pas « verrou pose et verifie » de « pose, etat inconnu » ni de « pose, verification en echec » : gpu_lock_apply retourne True des que nvidia-smi sort en 0. gpu lock on sort donc en 0 avec un verrou non verifie.

Les tests actuels figent ce comportement (assertTrue alors que le verdict est ECHEC) : les corriger fait partie du grain, ce n'est pas une regression de test.

Pourquoi ca compte : l'appelant scripte de cette fonction est la tache schtasks au boot — precisement celui qui ne peut pas lire un journal et qui n'a que le rc pour alerter. Un verrou silencieusement non pose au demarrage est indiscernable d'un verrou pose, ce qui est le mode de panne que #14955 existe pour empecher.

Acceptance : rc=1 sur verdict ECHEC, rc=0 sur OK. Le cas INDETERMINE se tranche explicitement dans la PR (rc=0 avec avertissement, ou rc=2) — le choix se justifie par ecrit, il ne se subit pas.

Hors scope

L'hypothese « Max Clocks reflete la butee » reste non confirmee — le body de #14963 le documente honnetement et le journal du premier run reel la tranchera. Ce n'est pas un defaut a corriger a l'aveugle : si elle tombe, le plan B nomme par le reviewer est Clocks Event Reasons / clocks.current.graphics borne. Attendre la mesure.

See #14955

Activity

  1. added a commit that references this issue on Sep 7, 2026
  2. jsboige commented on Sep 7, 2026

    @jsboige
    Owner

    [CLAIMED] #14975 -- myia-po-2026:CoursIA 2026-09-07T12:15:20Z -- paths: scripts/genai-stack/commands/gpu.py, scripts/genai-stack/tests/test_genai_stack_gpu_lock.py

  3. added a commit that references this issue on Sep 7, 2026
  4. added a commit that references this issue on Sep 8, 2026
  5. jsboige commented on Sep 30, 2026

    @jsboige
    Owner

    Verification G.9 de fermeture (tranche 8 de #15258, lane myia-po-2024:CoursIA) : fermeture legitime, aucune reouverture.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions