从 APU 强制显示并具有用于 OpenCL 的独立 GPU?

Force display from APU and have discrete GPU for OpenCL?

我需要一个具有以下限制的 OpenCL 编程系统:

  1. 独立 GPU 不能 运行 作为显示卡 --> 我可以做到 来自 BIOS
  2. AMD APU 的内部 GPU 必须用作显示 GPU --> 我可以做到 来自 BIOS
  3. OpenCL 不得识别内部 APU 的 GPU,并且必须始终 默认为独立 GPU

为什么我需要这个?

  1. 这是因为我正在处理需要 GPU BIOS 的 GPU 代码 进行刷新并安装自定义 BIOS,这使得 GPU 无法用于显示。
  2. AMD 主板在没有 VGA 卡的情况下无法启动,所以我得到了一个 APU 有内部 GPU。
  3. 我正在处理的代码库无法处理冲突的 GPU,所以我 需要从 OpenCL 中禁用它(APU 的 GPU)。

我该如何处理?

根据 AMD OpenCL Programming Guide,AMD 的驱动程序支持 GPU_DEVICE_ORDINAL 环境变量来配置使用哪些设备(第 2.3.3 节):

In some cases, the user might want to mask the visibility of the GPUs seen by the OpenCL application. One example is to dedicate one GPU for regular graphics operations and the other three (in a four-GPU system) for Compute. To do that, set the GPU_DEVICE_ORDINAL environment parameter, which is a comma-separated list variable:

  • Under Windows: set GPU_DEVICE_ORDINAL=1,2,3
  • Under Linux: export GPU_DEVICE_ORDINAL=1,2,3

您首先需要确定要包含的设备的序号。为此,我建议使用 clinfo-l 开关,这将为您提供可用 OpenCL 平台和设备的基本树。如果列出的设备首先是 APU,然后是专用 GPU,则您可能只想启用设备 1(GPU),并将环境变量设置为 GPU_DEVICE_ORDINAL=1.