gpt4 book ai didi

c++ - 如何在运行时检测默认 GPU?

转载 作者:行者123 更新时间:2023-11-28 05:36:05 29 4
gpt4 key购买 nike

我这里有一个奇怪的问题,我很难找到答案。

我有一个 C++ 3D 引擎,我使用 OpenCL 进行优化和 OpenGL 互操作性。

在我的机器上我安装了两个 GPU,一个 GTX 960 和一个 AMD R9 280X。

一切正常,包括检测 GPU 和 CPU 以及图形互操作性如预期的那样运行得非常快。

但是,在一台机器上,我们总是在系统上有一个默认的 GPU(这是在 Windows 上设置的,具体取决于我们安装驱动程序的顺序)。

因此,当我开始读取所有设备并检测 GPU 时,当我尝试创建互操作性上下文时,我遇到了一个奇怪的情况:

当我将 AMD 作为默认 GPU 时:在 NVIDIA 设备的情况下,OpenCL 返回给我一个错误,通知它不可能创建 CL 上下文(因为不是默认的 GPU),当我为 AMD GPU 创建 OpenGL 上下文时,上下文创建正确。

当我将 NVIDIA 作为默认 GPU 时:在 NVIDIA 设备的情况下,上下文已正确创建,但是当我尝试创建 AMD 上下文时,却返回错误,系统崩溃!

因此,我的主要问题是如何在运行时检测默认 GPU 以创建互操作性上下文,仅针对默认 GPU,因为 AMD 正在崩溃而不是返回错误...(因为有错误我可以设置一个标志通知基于此结果的默认 GPU...)。

有人知道如何使用 C++ 在运行时检测默认 GPU 吗?

亲切的问候。

最佳答案

一种技术是向 OpenGL 询问设备名称并使用它来选择 OpenCL 设备。注意:您可以在比较之前将这些减少为枚举,因为字符串不匹配(例如 AMD 与 ATI)。

关于c++ - 如何在运行时检测默认 GPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38277985/

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