gpt4 book ai didi

json - Nvidia Smi JSON 输出

转载 作者:太空宇宙 更新时间:2023-11-04 00:25:59 25 4
gpt4 key购买 nike

我想将有关机器可用 GPU 和状态的系统信息放入系统中以进行实时监控。我使用 XML 输出 GPU 信息

$ nvidia-smi -x -q

此命令将打印输出当前 GPU 状态(如使用情况、温度等)以及格式化的 XML(具有定义的 DTD)。我的 XML 输出是 here .

没有直接从 nvidia-smi 输出到 json 的选项,因此此时我看到的唯一选项是将 XML 从 Node.js 转换为 JSON。

问题是我需要它作为 JSON,所以我尝试在我的 Node 应用程序中转换为 JSON。我依次使用了几个 npm 可用模块,如 xml2json、node-xml2js 等,但每个模块都有不同的错误(null、未定义等)。在浏览器中使用简单的 DOMParser (window.DOMParser) 即可。这似乎是这个 XML 的一个错误,因为当我有一个像 here 这样的 GPU 输出时JSON 转换得很好,如 gist 所示.

我使用 Node 生成来调用 nvdia-smi 命令,然后解析输出,如下所示:

(function() {

var XMLParser = require('./xml2json');

function gpuInfo() {
var _data='';
var curl = require('child_process').spawn('nvidia-smi', ['-x','-q']);
curl.stdout.on('data', function(data) {
_data+= new Buffer(data,'utf-8').toString();
});
curl.stdout.on('end', function(data) {
var x2js = new XMLParser();
var json = x2js.xml_str2json( _data );
console.log(JSON.stringify( json,null,2));
});
curl.on('exit', function(code) {
if (code != 0) {
console.log('Failed: ' + code);
}
});

}
module.exports = {
gpuInfo:gpuInfo
}

在本例中,我使用 modified xml2json浏览器客户端模块与 xmldom 模块结合的版本,但这似乎不是一个稳定的解决方案,所以我的解析是在这里完成的,如下所示:

this.parseXmlString = function(xmlDocStr) {
if (xmlDocStr === undefined) {
return null;
}
var xmlDoc;
var DOMParser = require('xmldom').DOMParser;
var parsererrorNS = null;
try {
xmlDoc = new DOMParser().parseFromString( xmlDocStr, "text/xml" );
if( parsererrorNS!= null && xmlDoc.getElementsByTagNameNS(parsererrorNS, "parsererror").length > 0) {
xmlDoc = null;
}
}
catch(err) {
xmlDoc = null;
}
return xmlDoc;
};

离开这里

  1. 以 json 形式获取这些信息的另一种方法?
  2. 通过一些强大的 XML/JSON 解析器模块获得更高效的解决方案?

最佳答案

尝试使用https://github.com/Cheedoong/xml2json它速度更快,并且可以用作 jq 等二进制工具。你会像这样运行:

nvidia-smi -x -q | xml2json | jq

结果将是这样的:

{
"nvidia_smi_log": {
"timestamp": "Thu Aug 29 13:45:26 2019",
"driver_version": "387.34",
"attached_gpus": "9",
"gpu": [
{
"@id": "00000000:03:00.0",
"product_name": "P106-090",
"product_brand": "GeForce",
"display_mode": "Disabled",
"display_active": "Disabled",
"persistence_mode": "Enabled",
"accounting_mode": "Disabled",
"accounting_mode_buffer_size": "1920",
"driver_model": {
"current_dm": "N/A",
"pending_dm": "N/A"
},
"serial": "N/A",
...

关于json - Nvidia Smi JSON 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42769303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com