我从一开始就在学习 OpenCL,但对平台 = 主机 + 设备的想法感到困惑。在我的工作 PC 中,检测到 2 个平台:平台 0 只有 CPU,平台 1 只有 NVIDIA GPU。检测到的平台
这台电脑实际上也有一个英特尔 GPU,但我认为它不支持 OpenCL,所以它没有在这里显示。我的问题是:在 OpenCL 应用程序中,有主机和设备。根据我从书中的理解,通常主机和设备来自一个平台。然后在我的 PC 中,我需要使用 CPU 或 NVIDIA GPU 作为 OpenCL 应用程序的主机和设备。这是真的?
我试着自己搜索,一些答案确实帮助我了解更多关于这个主题的内容:什么是 opencl 中的主机?. 但是我的搜索并没有回答或确认关于主机和设备使用一种硬件的问题。
我认为你在这里混淆了一些术语。
一个平台可能提供多个不同的设备:例如,如果您安装了 Nvidia OpenCL 驱动程序,它会为每个支持的 GPU 提供一个 OpenCL 设备。同时,Intel 驱动程序提供 Intel CPU 作为 OpenCL 设备。
通常,您的程序流程如下所示:
clGetPlatformIdsclGetDeviceIds适用于您要使用的任何平台的OpenCL 设备。clCreateContext,clCreateProgram等等。clEnqueueNDRangeKernel.在一台或多台设备上执行内核。| 归档时间: |
|
| 查看次数: |
473 次 |
| 最近记录: |