fix nvidia-smi folder search (windows)
This commit is contained in:
parent
42bc5a7655
commit
5231c64cb6
@ -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();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user