【发布时间】:2022-01-19 00:03:48
【问题描述】:
在 CPU 的情况下,(特定于 Linux 的)sys 调用 getcpu() 或 sched_getcpu() 可以在程序中用于获取执行它们的内核的 ID。例如,在 4 处理器系统的情况下,由上述调用返回的逻辑索引可以推断出正在使用 4 个 CPU 中的哪一个(假设每个 CPU 包含 10 个内核,因此如果 sched_getcpu() 返回 20 ,这意味着 CPU #2 正在使用,因为核心编号 20 在第三个 CPU 中)。
在 GPU 的情况下如何实现类似的效果?有没有办法从应用程序内部实时找到正在使用的那个?
【问题讨论】:
-
你到底想做什么?大多数应用程序不使用 GPU,因为您需要显式获取 GPU 资源。
-
似乎是 askubuntu.com/questions/5417/how-to-get-the-gpu-info 的副本,尽管该问题的一些答案已经过时了,我确信工具已经改变
-
@WillOw 您提到的链接中的任何答案都没有提供有关如何以编程方式获取当前使用的 GPU的答案。请注意,我还明确写了“inside a program”、“from inside an application”和“C/C++”。
-
@ReyReddington 没有当前使用的 GPU,除非您明确要求使用 GPU,因此您需要展示/解释您是如何做到的
-
如果系统有 OpenGL,您可以从 OpenGL 上下文中获取 GPU 信息,特别是
GL_VENDOR和GL_RENDERER。对于这个 Linux 桌面,我得到了“NVIDIA Corporation”和“GeForce GT 720/PCIe/SSE2”。要在不打开 GL 窗口的情况下执行此操作,请参阅您平台的 glxinfo.c 的源代码。如果未安装 OpenGL 硬件驱动程序,您将获得供应商的“Microsoft”或“Mesa”或类似名称。 khronos.org/opengl/wiki/…