Intel GPU 上是否有等效的“扭曲尺寸”或“波前宽度”

问题描述 投票:0回答:1

在 Nvidia 上,将

CL_DEVICE_WARP_SIZE_NV
查询放入
clGetDeviceInfo
中,通常返回 32。

在 AMD 上,

CL_DEVICE_WAVEFRONT_WIDTH_AMD
过去是 64,现在在更新的 AMD GPU 上也是 32。

英特尔有一组查询,我想其中一些乘法是否相当于“扭曲大小”。他们是:

CL_DEVICE_NUM_SLICES_INTEL
CL_DEVICE_NUM_SUB_SLICES_PER_SLICE_INTEL
CL_DEVICE_NUM_EUS_PER_SUB_SLICE_INTEL
CL_DEVICE_NUM_THREADS_PER_EU_INTEL

对于 Intel HD530,外观值的顺序为 1、3、8、7。对于 Intel Arc A380:2、8、8、8。对于 Intel Arc A750:7、8、8、8。

通常,此“扭曲大小”查询用于确定共享内存缓冲区的数量,以确定“设备能够支持的最大线程数量”等。

我已经阅读了“Xe-HPG 架构简介”,但仍然怀疑英特尔的“扭曲尺寸”是什么。

opencl
1个回答
0
投票

英特尔发布了OpenCL 开发人员指南,我强烈建议您详细阅读该指南。第一章,“OpenCL™ 工作项的执行:SIMD 机器” 解释了什么是切片、子切片和 EU。

与 AMD 和 Nvidia GPU 不同,Intel GPU 似乎具有更灵活的 SIMD 分组:

内核的 SIMD 宽度是启发式驱动的编译器选择。 SIMD-8、SIMD-16、SIMD-32 是常见的 SIMD 宽度示例。

第一章以“工作组规模建议摘要”一节结束,其中内容如下:

如果您的内核使用本地内存和/或屏障,[…]每个子片[…]不能同时执行超过 16 个工作组。 [...] 每个子片可用的共享本地内存量 (64KB)。 […] 每个工作组的最小 SLM 分配大小是 4k

和:

因此,为了在工作组数量有限的情况下保持较高的设备利用率,需要更大的工作组大小。使用 64 到 256 之间的二次方工作组大小。

但如果不使用本地内存,建议不同:

如果您的内核未使用本地内存或屏障,则这些限制不适用,并且 32 个工作项的工作组大小对于大多数情况来说是最佳的。

© www.soinside.com 2019 - 2024. All rights reserved.