我的内核的本地内存和注册使用情况与工作组大小呈线性关系。除了反复试验之外,是否有选择最佳工作组规模的指导原则?我的目标是AMD硬件,最大工作组大小为256;我是否应该尝试最大化组中的工作项数,或者这是否会降低占用率并创建寄存器溢出?
答案 0 :(得分:0)
您应该同时执行以下操作:尝试最大限度地提高占用率,避免不惜一切代价发生注册溢出,即获取您平台上可用的大部分资源。
如果您使用的是nvcc,则可以获得执行内核like this所需的单个线程的寄存器数量。然后将此信息与所需的本地内存(这是您的输入)一起使用,您可以使用the CUDA occupancy calculator查看对占用率的影响。但这并不能取代旧的“试错”。
编辑:你正在使用AMD。我不知道如何将NVIDIA计算能力映射到AMD设备。