2014-03-19 144 views
0

你好,我在OpenCL文档上看到, Compute Unit有很多处理元素。 处理元素是否仅包含ALU? 上的处理单元,是单个ALU有SIMD操作吗?或4 ALU可以制作SIMD?GPU计算单位?

回答

1

我认为大多数当前设备将单个ALU映射到处理元素,而ALU是单个SIMD内核。事实上,不支持SIMD的CPU不支持OpenCL。

关于OpenCL的一点是,除非您正在为特定硬件编写内核,否则您不需要关心确切的底层架构。未来的设备可以使用尽可能多的调度程序/ ALU /内存控制器/等等,因为制造商选择实施SIMD体系结构。

如果您想遵循“一次写入,随处运行”的口号,您需要坚持OpenCL API公开的属性。 (例如CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE,和CL_DEVICE_PREFERRED_VECTOR_WIDTH_ *)

+1

我想说的重要措施是:'CL_KERNEL_PREFERRED_WORK_GROUP_SIZE'' CL_DEVICE_MAX_WORK_GROUP_SIZE',然后你需要处理一些小的事情:维度,本地内存,最大参数,最大参数大小,最大常量等。 – DarkZeros

0

有些人共享特殊功能单元每几个的ALU和一些具有每ALU FPU的等量没有任何特殊的单元有寻址单元,标量单元太。 AMD和NVIDIA和INTEL之间的SIMD组织是不同的。有些有16个宽的组,有32个组。然后这些团体联合起来,为其中一个制造商制造64个计算单位,而为另一个制造商制造192个计算单位。驱动程序优化通常会改变这些ALU所做的事情。您只需编写单一指令 - 多个数据代码和驱动程序负责优化,除非您选择优化执行参数。

您可以使用opencl api方法查询必要的信息。