You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

何为与OpenCL程序相关联的OpenCL设备?

关于OpenCL中clCompileProgram()关联设备的疑问解答

首先明确:OpenCL程序(cl_program)的关联设备,本质上是其所属OpenCL上下文(cl_context)中绑定的设备集合——哪怕你创建程序时没直接指定设备列表,程序也会和上下文绑定,而上下文本身是创建时就指定了一组设备的。

具体分不同程序创建场景说明:

  • 用clCreateProgramWithSource()从源码创建程序:
    你必须传入一个cl_context,而这个上下文在创建时就已经指定了要关联的设备(比如CPU、GPU等)。此时这个程序的关联设备,就是该上下文包含的所有设备。
  • 用clCreateProgramWithBinary()或clCreateProgramWithIL()从二进制/中间语言创建程序:
    同样需要传入cl_context,程序的关联设备就是该上下文绑定的全部设备。哪怕你传入的二进制是针对某台特定设备编译的,程序的关联设备依然是上下文的设备集合——只是后续编译时可能会因为二进制不兼容报错,但这和“关联设备”的定义无关。
  • 用clCloneProgram()克隆已有程序:
    新程序的关联设备会完全继承原程序的关联设备集合。

回到clCompileProgram()的逻辑:当你把device_list设为NULL时,函数就会遍历这个程序所属上下文的所有关联设备,逐一进行编译。

内容的提问来源于stack exchange,提问作者einpoklum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 05:12:03