0

我在双核系统上使用 Java Cl。我发现 2 个平台,一个是“AMD”,一个是 Intel,每个平台都有一个设备。

should it not return one platform and two devices ?
4

2 回答 2

1

不,该设备是您的 CPU,即使您有多个插槽,它也会显示为一个设备。

您编写代码以在尽可能多的可用内核上运行(无需知道有多少)

一些 GPUS 有数千个内核,将它们作为一个设备一起使用要容易得多。

例如,Tesla K10有 3072 个内核,您不仅不想告诉每个内核该做什么,而且您也不能轻易做到。GPU 是为每个核心做同样的事情而设计的。

于 2013-04-18T12:00:52.960 回答
1

AMD 和 Intel 都为其部分 CPU 和 GPU 提供 OpenCL 实现。对于 AMD,他们的 OpenCL 实现也支持 Intel CPU。因此,在安装 AMD Accelerated Parallel Processing (APP) SDK 之后,您的程序至少会识别一个带有一个设备的 AMD 平台,即您计算机中的 CPU。安装英特尔 OpenCL SDK 后,您将在计算机上运行第二个 OpenCL 实现,以检测您的 CPU。因此,查询可用平台将返回两个平台,每个平台都有一个设备。这两种设备是同一个东西——你的计算机的 CPU。不同之处在于 OpenCL 实现用于访问该 CPU 的方式——即 Intel 版本或 AMD 版本。

关于内核数量,OpenCL 将 CPU 视为单个设备,但它允许您查询设备(即 CPU)上存在多少计算单元(即物理内核)。

于 2013-04-19T15:35:22.323 回答