fix nvidia-smi folder search (windows)
This commit is contained in:
parent
42bc5a7655
commit
5231c64cb6
@ -14,11 +14,12 @@
|
|||||||
// ----------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------
|
||||||
|
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
const exec = require('child_process').exec;
|
const exec = require('child_process').exec;
|
||||||
const execSync = require('child_process').execSync;
|
const execSync = require('child_process').execSync;
|
||||||
const util = require('./util');
|
const util = require('./util');
|
||||||
|
|
||||||
let _platform = process.platform;
|
const _platform = process.platform;
|
||||||
let _nvidiaSmiPath = '';
|
let _nvidiaSmiPath = '';
|
||||||
|
|
||||||
const _linux = _platform === 'linux' || _platform === 'android';
|
const _linux = _platform === 'linux' || _platform === 'android';
|
||||||
@ -225,10 +226,8 @@ function graphics(callback) {
|
|||||||
for (let i = 0; i < pciIDs.length; i++) {
|
for (let i = 0; i < pciIDs.length; i++) {
|
||||||
pciIDs[i] = pciIDs[i].replace('Bus Address:', '').replace('0000:', '').trim();
|
pciIDs[i] = pciIDs[i].replace('Bus Address:', '').replace('0000:', '').trim();
|
||||||
}
|
}
|
||||||
pciIDs = pciIDs.filter(function (el) {
|
pciIDs = pciIDs.filter((el) => el != null && el);
|
||||||
return el != null && el;
|
} catch {
|
||||||
});
|
|
||||||
} catch (e) {
|
|
||||||
util.noop();
|
util.noop();
|
||||||
}
|
}
|
||||||
let i = 1;
|
let i = 1;
|
||||||
@ -422,25 +421,24 @@ function graphics(callback) {
|
|||||||
|
|
||||||
if (_windows) {
|
if (_windows) {
|
||||||
try {
|
try {
|
||||||
const basePath = util.WINDIR + String.raw`\System32\DriverStore\FileRepository`;
|
const basePath = path.join(util.WINDIR, 'System32', 'DriverStore', 'FileRepository');
|
||||||
// find all directories that have an nvidia-smi.exe file
|
// find all directories that have an nvidia-smi.exe file with date
|
||||||
|
const candidates = fs
|
||||||
const candidateDirs = fs.readdirSync(basePath).filter((dir) => {
|
.readdirSync(basePath, { withFileTypes: true })
|
||||||
if (fs.statSync([basePath, dir].join('/')).isDirectory()) {
|
.filter((dir) => dir.isDirectory())
|
||||||
return fs.readdirSync([basePath, dir].join('/')).includes('nvidia-smi.exe');
|
.map((dir) => {
|
||||||
} else {
|
const nvidiaSmiPath = path.join(basePath, dir.name, 'nvidia-smi.exe');
|
||||||
return false;
|
try {
|
||||||
|
const stats = fs.statSync(nvidiaSmiPath);
|
||||||
|
return { path: nvidiaSmiPath, ctime: stats.ctimeMs };
|
||||||
|
} catch {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
// use the directory with the most recently created nvidia-smi.exe file
|
.filter(Boolean);
|
||||||
const targetDir = candidateDirs.reduce((prevDir, currentDir) => {
|
if (candidates.length > 0) {
|
||||||
const previousNvidiaSmi = fs.statSync([basePath, prevDir, 'nvidia-smi.exe'].join('/'));
|
// take the most recent
|
||||||
const currentNvidiaSmi = fs.statSync([basePath, currentDir, 'nvidia-smi.exe'].join('/'));
|
_nvidiaSmiPath = candidates.reduce((prev, curr) => (curr.ctime > prev.ctime ? curr : prev)).path;
|
||||||
return previousNvidiaSmi.ctimeMs > currentNvidiaSmi.ctimeMs ? prevDir : currentDir;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (targetDir) {
|
|
||||||
_nvidiaSmiPath = [basePath, targetDir, 'nvidia-smi.exe'].join('/');
|
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
util.noop();
|
util.noop();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user