首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从c中运行nvidia-smi

从c中运行nvidia-smi
EN

Stack Overflow用户
提问于 2020-03-13 17:04:54
回答 1查看 534关注 0票数 0

我尝试使用popen从c中获取nvidia-smi命令的输出,如下所示

C:运行一个系统命令并得到输出?

命令存储在缓冲区字符串中,并使用相同的字符串存储输出:

代码语言:javascript
复制
    const size_t pid = getpid();

    char pid_s[1000];

    sprintf(pid_s, "%lu", pid);

    FILE *file_command = NULL;

    char buffer[1000];

    sprintf(buffer, "nvidia-smi | grep %s |awk '{print $6}'", pid_s);

    file_command = popen(buffer, "r");

    if (file_command == NULL) //No error : file_command is not NULL
    {
        throw std::runtime_error("Command failed to execute");
    }

    sleep(4); //To get time for the command to be executed.

    while (fgets(buffer, sizeof(buffer), file_command) != NULL) //Read output
    {
        printf("Result from command %s \n", buffer); //Nothing printed
    }

..。

我试图获得nvidia输出的第6个参数,它是当前运行的程序的内存(它的pid来自getpid())。

屏幕上没有打印出来的东西。

fgets返回NULL,尽管在GPU上已经分配了内存(使用cudaMalloc)。

我一直在按照这篇文章中的建议来使用睡眠

为popen返回的文件返回错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-16 14:33:00

我终于找到了一种更好的方法,通过使用NVML从c++中获取GPU内存。

这个职位中所建议的那样。

使用c++非常简单(例如,请参阅这里 )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60674575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档