gpt4 book ai didi

cuda - 多次调用 get_global_id() 还是将结果保存在局部变量中?

转载 作者:行者123 更新时间:2023-12-04 12:14:26 27 4
gpt4 key购买 nike

这可能是一个愚蠢的问题,但是:
打个电话多贵get_* OpenCL 内核中的功能?将结果保存在某些本地变量中以备将来使用还是在需要时调用所需的函数更好?

还是平台依赖?

聚苯乙烯
我认为,cuda 使用各种 threadIdx 变量可以更好地解决它。

最佳答案

我认为这对于所有 GPU 架构都应该是免费的。它应该由相应的硬件寄存器或缓存组中的常量代替。

编译器也可以对其进行不断的传播。您可以使用 AMD Stream Analyser 检查自己:

OpenCL:

__kernel 
void testKernel(__global uint * uintArray)
{
uint threadId = get_global_id(0);

uintArray[threadId] = 0xbaadf00d;
}

Radeon HD 5870 (Cypress) 组装:
0 ALU: ADDR(32) CNT(10) KCACHE0(CB0:0-15) KCACHE1(CB1:0-15) 
0 x: MOV R1.x, (0xBAADF00D, -0.001327039325f).x
t: MULLO_INT ____, R1.x, KC0[1].x
1 x: ADD_INT ____, R0.x, PS0
2 w: ADD_INT ____, PV1.x, KC0[6].x
3 z: LSHL ____, PV2.w, (0x00000002, 2.802596929e-45f).x
4 y: ADD_INT ____, KC1[0].x, PV3.z
5 x: LSHR R0.x, PV4.y, (0x00000002, 2.802596929e-45f).x
01 MEM_RAT_CACHELESS_STORE_RAW: RAT(1)[R0].x___, R1, VPM

这里 get_global_id(0)映射到常量缓存组值 KC0[1].x .
因此,为了回答您的问题,我将使用最易读的形式。

关于cuda - 多次调用 get_global_id() 还是将结果保存在局部变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3256253/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com