首页 > 解决方案 > 从 APU 强制显示并为 OpenCL 配备独立 GPU?

问题描述

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

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

为什么我需要这个?

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

我该如何接近它?

标签: gpuopenclgpgpuamd-processor

解决方案


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

在某些情况下,用户可能想要屏蔽 OpenCL 应用程序看到的 GPU 的可见性。一个例子是将一个 GPU 专用于常规图形操作,另外三个(在四 GPU 系统中)用于计算。为此,请设置 GPU_DEVICE_ORDINAL 环境参数,这是一个逗号分隔的列表变量:

  • Windows 下:设置 GPU_DEVICE_ORDINAL=1,2,3
  • Linux下:导出GPU_DEVICE_ORDINAL=1,2,3

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


推荐阅读