单个主机上的多个OpenCL CPU设备?

3

一个主机上是否会有多个CPU类型的设备?多核CPU会被识别为单个设备,但是双插槽主板呢?在OpenCL中,每个处理器是否都会被识别为两个独立的设备?

我正在尝试规划我正在开发的应用程序。

3个回答

4
基于我的经验,在双插槽主板上你仍然只有一个CPU设备。操作系统通常会隐藏核心是否位于同一物理CPU或不同的物理CPU上,即使在NUMA机器上(当然你可以获得详细信息但这并不是那么简单)。我认为这种行为在SMP机器上是相当合理的,因为物理核心的位置几乎没有什么区别(对于GPU而言,访问其他设备内存非常麻烦;对于CPU,将所有线程固定到同一个物理CPU上很少值得担忧),因此将两个物理CPU融合成一个OpenCL设备几乎没有任何缺点,并且它具有简化使用的优点。

然而,我没有在OpenCL规范中看到这一点,所以这完全是实现特定的,并不能保证总是成立。


1
@T3hD0gg 如果你安装了两个或更多平台(Intel 和 AMD,或两个版本的 AMD),那么每个平台都有一个 CPU 设备。OpenCL 平台是完全独立的。 - aland

2
在多 CPU 环境或者多核 CPU 上,可能有不止一个设备。以 IBM 的 Cell 为例,OpenCL 驱动程序将 9 核 CPU 视为两个不同的设备。其中一个是 PPU(主处理器单元)的设备,另一个代表 SPU(协处理器单元),具有 CL_DEVICE_TYPE_ACCELERATOR 档案配置文件。

http://oscarbg.blogspot.com/2009/11/about-imd-open.html


1
一个计算集群(多个具有独立内存的物理机器)可能被抽象为单个“主”节点上的多个OpenCL设备,尽管我不知道是否有任何实现实际上这样做。

MOSIX VCL,它承诺能够做到你所说的事情,但我还没有听说它在实际应用中的表现如何。 - aland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接