From 5231c64cb605d368ad5ee3b88fc765bb7924fdf0 Mon Sep 17 00:00:00 2001 From: Sebastian Hildebrandt Date: Mon, 19 Jan 2026 23:11:58 +0100 Subject: [PATCH] fix nvidia-smi folder search (windows) --- lib/graphics.js | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/lib/graphics.js b/lib/graphics.js index f7438a0..a084a9e 100644 --- a/lib/graphics.js +++ b/lib/graphics.js @@ -14,11 +14,12 @@ // ---------------------------------------------------------------------------------- const fs = require('fs'); +const path = require('path'); const exec = require('child_process').exec; const execSync = require('child_process').execSync; const util = require('./util'); -let _platform = process.platform; +const _platform = process.platform; let _nvidiaSmiPath = ''; const _linux = _platform === 'linux' || _platform === 'android'; @@ -225,10 +226,8 @@ function graphics(callback) { for (let i = 0; i < pciIDs.length; i++) { pciIDs[i] = pciIDs[i].replace('Bus Address:', '').replace('0000:', '').trim(); } - pciIDs = pciIDs.filter(function (el) { - return el != null && el; - }); - } catch (e) { + pciIDs = pciIDs.filter((el) => el != null && el); + } catch { util.noop(); } let i = 1; @@ -422,25 +421,24 @@ function graphics(callback) { if (_windows) { try { - const basePath = util.WINDIR + String.raw`\System32\DriverStore\FileRepository`; - // find all directories that have an nvidia-smi.exe file - - const candidateDirs = fs.readdirSync(basePath).filter((dir) => { - if (fs.statSync([basePath, dir].join('/')).isDirectory()) { - return fs.readdirSync([basePath, dir].join('/')).includes('nvidia-smi.exe'); - } else { - return false; - } - }); - // use the directory with the most recently created nvidia-smi.exe file - const targetDir = candidateDirs.reduce((prevDir, currentDir) => { - const previousNvidiaSmi = fs.statSync([basePath, prevDir, 'nvidia-smi.exe'].join('/')); - const currentNvidiaSmi = fs.statSync([basePath, currentDir, 'nvidia-smi.exe'].join('/')); - return previousNvidiaSmi.ctimeMs > currentNvidiaSmi.ctimeMs ? prevDir : currentDir; - }); - - if (targetDir) { - _nvidiaSmiPath = [basePath, targetDir, 'nvidia-smi.exe'].join('/'); + const basePath = path.join(util.WINDIR, 'System32', 'DriverStore', 'FileRepository'); + // find all directories that have an nvidia-smi.exe file with date + const candidates = fs + .readdirSync(basePath, { withFileTypes: true }) + .filter((dir) => dir.isDirectory()) + .map((dir) => { + const nvidiaSmiPath = path.join(basePath, dir.name, 'nvidia-smi.exe'); + try { + const stats = fs.statSync(nvidiaSmiPath); + return { path: nvidiaSmiPath, ctime: stats.ctimeMs }; + } catch { + return null; + } + }) + .filter(Boolean); + if (candidates.length > 0) { + // take the most recent + _nvidiaSmiPath = candidates.reduce((prev, curr) => (curr.ctime > prev.ctime ? curr : prev)).path; } } catch { util.noop();