有什么方法可以找出和/或限制 Windows 中进程的 GPU 使用情况吗?
我想在某些机器上启动 CPU 和 GPU 密集型进程,但这些进程不得干扰用户的任务。因此,我需要限制或至少检测我的进程对 GPU 的使用情况。这些进程是闭源的,因此我无法从内部查看 GPU 使用情况。
I'd like to launch CPU and GPU intensive process on some machines, but these processes must not interfere with user's tasks. So I need to limit or at least detect GPU usage by my processes. These processes are closed-source, so I can't watch GPU usage from inside.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的主题行问题的答案是:是(在 Windows Vista 及更高版本上),请使用 Process Explorer 来自 Microsoft,用于监控每个进程的 GPU 使用情况。 nvidia 的 parallel nsight 也可以做到这一点。现在,您的问题的正文听起来像是您想远程执行此操作。不幸的是,我不知道远程执行此操作的方法。尽管如此,还是希望这对你有用。
编辑添加:如果您启动 Process Explorer,我认为它默认情况下不会显示 GPU 统计信息,要让它们右键单击列列表并添加它们。
The answer to your subject line question is: yes (On Windows Vista and up), use Process Explorer from Microsoft to monitor per process GPU usage. nvidia's parallel nsight can do this also. Now, the body of your question sounds like you want to do this remotely. Unfortunately I'm not aware of a way to do this remotely. Still, hopefully this will be of some use to you.
edit to add: If you fire up Process Explorer I don't think it shows the GPU stats by default, to get them right click on the list of columns and add them.
GPU 是一种一次只能由一个程序使用的资源。如果另一个进程正在使用 GPU,那么您将无法访问它。
一个程序可以同时运行多个 GPU 内核,但这取决于该程序如何运行这些内核。没有像操作系统和 CPU 进程那样的真正的调度概念。
一些供应商可能有办法让您检查设备的状态,例如正在使用的核心数、热量、风扇速度等,但这不会让您更改设备上发生的情况,并且它将特定于每个设备供应商/设备。
The GPU is a resource that can only be used by one program at a time. If another process is using the GPU, then you can't get access to it.
A program may run multiple GPU kernels at the same time, but it's up to that program how those get run. There's no real concept of scheduling like there is with the OS and CPU processes.
Some vendors may have a way for you to check on the status of the device, like # cores in use, heat, fan speed, etc, but that won't let you change what's happening on it, and it will be specific to each vendor/device.