Page 1 sur 1
[R] Comportement étrange de CMD (Get NVidia GPU's infos)
Posté : mar. 03 sept. 2024 06:14
par Anthony
Bonjour à tous,
Je viens de tomber sur un os, je sent que je ne suis pas loin mais je ne reçois pas le retour de ma ligne de commande.
Le but est d'afficher le taux d'utilisation de mon GPU mais ici étrangement je n'ai rien en retour...
Pourtant en batch çà fonctionne bien
Et le code de "gpu_usage.au3"
► Afficher le texte
Code : Tout sélectionner
; Chemin complet vers nvidia-smi
Local $sNvidiaSMIPath = "C:\Windows\System32\nvidia-smi.exe"
Local $sTempFile = @TempDir & "\gpu_usage.txt"
Local $sCommand = '"' & $sNvidiaSMIPath & '" --query-gpu=utilization.gpu --format=csv,noheader,nounits > "' & $sTempFile & '"'
ConsoleWrite("DEBUG: Commande à exécuter: " & $sCommand & @CRLF)
; Exécuter la commande et rediriger la sortie vers un fichier temporaire
Local $iPID = Run(@ComSpec & " /c " & $sCommand, "", @SW_HIDE, 6)
; Attendre un court instant pour que le fichier soit écrit
Sleep(1000)
; Vérifier si le fichier a été créé et lire son contenu
If FileExists($sTempFile) Then
ConsoleWrite("DEBUG: Fichier temporaire trouvé: " & $sTempFile & @CRLF)
Local $sResult = FileRead($sTempFile)
ConsoleWrite("DEBUG: Contenu du fichier temporaire: " & $sResult & @CRLF)
FileDelete($sTempFile) ; Supprimer le fichier temporaire après lecture
If StringStripWS($sResult, 8) <> "" Then
MsgBox(0, "Utilisation des GPU", $sResult)
Else
MsgBox(16, "Erreur", "Impossible de récupérer l'utilisation des GPU, aucune donnée reçue.")
EndIf
Else
ConsoleWrite("DEBUG: Fichier temporaire non trouvé ou commande n'a pas fonctionné." & @CRLF)
MsgBox(16, "Erreur", "Erreur lors de l'exécution de nvidia-smi ou fichier de sortie introuvable.")
EndIf
Re: [..] Comportement étrange de CMD
Posté : mer. 04 sept. 2024 04:07
par Nine
Je soupçonne que c'est un problème de redirection. Essaie d'utiliser la ligne suivante au début du script :
Code : Tout sélectionner
If @OSArch = "X64" And Not @AutoItX64 Then _WinAPI_Wow64EnableWow64FsRedirection(False)
Re: [..] Comportement étrange de CMD
Posté : mer. 04 sept. 2024 23:44
par Anthony
Bonjour Nine,
Idem jusqu'à maintenant.
#include <WinAPIFiles.au3>If @OSArch = "X64" And Not @AutoItX64 Then _WinAPI_Wow64EnableWow64FsRedirection(False); Chemin complet vers nvidia-smiLocal $sNvidiaSMIPath = "C:\Windows\System32\nvidia-smi.exe"Local $sTempFile = @TempDir & "\gpu_usage.txt"Local $sCommand = '"' & $sNvidiaSMIPath & '" --query-gpu=utilization.gpu --format=csv,noheader,nounits > "' & $sTempFile & '"'ConsoleWrite("DEBUG: Commande à exécuter: " & $sCommand & @CRLF) ; Exécuter la commande et rediriger la sortie vers un fichier temporaireLocal $iPID = Run(@ComSpec & " /c " & $sCommand, "", @SW_HIDE, 6) ; Attendre un court instant pour que le fichier soit écritSleep(1000) ; Vérifier si le fichier a été créé et lire son contenuIf FileExists($sTempFile) Then ConsoleWrite("DEBUG: Fichier temporaire trouvé: " & $sTempFile & @CRLF) Local $sResult = FileRead($sTempFile) ConsoleWrite("DEBUG: Contenu du fichier temporaire: " & $sResult & @CRLF) FileDelete($sTempFile) ; Supprimer le fichier temporaire après lecture If StringStripWS($sResult, 8) <> "" Then MsgBox(0, "Utilisation des GPU", $sResult) Else MsgBox(16, "Erreur", "Impossible de récupérer l'utilisation des GPU, aucune donnée reçue.") EndIfElse ConsoleWrite("DEBUG: Fichier temporaire non trouvé ou commande n'a pas fonctionné." & @CRLF) MsgBox(16, "Erreur", "Erreur lors de l'exécution de nvidia-smi ou fichier de sortie introuvable.")EndIf
Re: [..] Comportement étrange de CMD
Posté : jeu. 05 sept. 2024 04:41
par Nine
Ah, ouais, il n'aime pas les guillemets autour du fichier d'output. Mais tu devrais plutôt opter pour une solution plus propre...
Code : Tout sélectionner
#include <WinAPIFiles.au3>
_WinAPI_Wow64EnableWow64FsRedirection(False)
; Chemin complet vers nvidia-smi
Local $sNvidiaSMIPath = "C:\Windows\System32\nvidia-smi.exe"
Local $sCommand = '"' & $sNvidiaSMIPath & '" --query-gpu=utilization.gpu --format=csv,noheader,nounits'
ConsoleWrite("DEBUG: Commande à exécuter: " & $sCommand & @CRLF)
; Exécuter la commande
Local $iPID = Run($sCommand, "", @SW_HIDE, $STDERR_MERGED)
ProcessWaitClose($iPID)
ConsoleWrite(StdoutRead($iPID) & @CRLF)
Re: [R] Comportement étrange de CMD
Posté : ven. 06 sept. 2024 15:59
par Anthony
Super,
Merci bien Nine, tout est bon.
Résolu
#include <WinAPIFiles.au3>_WinAPI_Wow64EnableWow64FsRedirection(False); Chemin complet vers nvidia-smiLocal $sNvidiaSMIPath = "nvidia-smi.exe"Local $sCommand = '"' & $sNvidiaSMIPath & '" --query-gpu=gpu_bus_id,index,gpu_name,utilization.gpu,fan.speed,pstate,memory.used,memory.total,temperature.gpu,temperature.memory --format=csv,noheader,nounits' ; nvidia-smi.exe --help-query-gpuConsoleWrite("DEBUG: Commande à exécuter: " & $sCommand & @CRLF) ; Exécuter la commande et rediriger la sortie vers un fichier temporaireLocal $iPID = Run($sCommand, "", @SW_HIDE, $STDERR_MERGED)ProcessWaitClose($iPID)ConsoleWrite(StdoutRead($iPID) & @CRLF)