我需要一個具有以下限制的OpenCL編程系統:
- 独立GPU不得作为显示卡运行-->我可以这样做 从 BIOS
- AMD的APU的内部GPU必须用作显示GPU-->我可以这样做。 从 BIOS
- OpenCL 不得识别内部 APU 的 GPU,并且必须始终 默认为独立 GPU
我为什么需要这个?
- 这是因为我正在处理需要GPU的BIOS的GPU代码 要刷新并安装自定义 BIOS,这使得 GPU 不可用于显示。
- 没有VGA卡,AMD主板无法启动,所以我得到了一个APU 具有内置 GPU。
- 我正在处理的代码库无法处理冲突的 GPU,所以我 需要从 OpenCL 看到它时禁用它(APU 的 GPU(。
我该如何接近它?
根据 AMDOpenCL 编程指南,AMD 的驱动程序支持GPU_DEVICE_ORDINAL
环境变量来配置使用的设备(第 2.3.3 节(:
在某些情况下,用户可能希望掩盖 OpenCL 应用程序。例如,将一个 GPU 专用于常规图形操作,将另外三个 GPU 专用于计算。自 为此,设置GPU_DEVICE_ORDINAL环境参数,该参数以逗号分隔 列表变量:
- 在窗口下:设置 GPU_DEVICE_ORDINAL=1,2,3
- 在 Linux 下:导出 GPU_DEVICE_ORDINAL=1,2,3
首先需要确定要包含的设备的序号。为此,我建议将 clinfo 与-l
开关一起使用,这将为您提供可用 OpenCL 平台和设备的基本树。如果设备首先与 APU 一起列出,然后与专用 GPU 一起列出,则您可能只需要启用设备 1(GPU(,并将环境变量设置为GPU_DEVICE_ORDINAL=1
。