我想映射一个thread_id.这在C/CUDA中,但它更像是我试图解决的代数问题.
所以我想要实现的映射是这样的:
等等..
注意这是映射的简化,实际上有超过128个线程,但序列如图所示,线程总是映射到三的倍数.
我可以使用什么公式,每个线程可以运行以找出它应该看到的数组位置?
我想在下面的示例中使用某种公式,而不是显式映射或任何if语句.
为了说明我如何解决这个需要不同映射的不同情况,即:
我用过代码
rintf(float(tid)/96.0)*3
Run Code Online (Sandbox Code Playgroud)
这将在C中起作用:
3 * ((n>>4 & 1) + (n>>5 & ~1))
Run Code Online (Sandbox Code Playgroud)
n线程号在哪里.
我在这里假设模式继续超过128:0,3,0,3,6,9,6,9,12,15,12,15等.
编辑:
这种形式,没有按位操作,可能更容易理解:
6 * (n/64) + 3 * ((n/16) % 2)
Run Code Online (Sandbox Code Playgroud)
它会给出相同的结果.n假定为整数,因此除法将向下舍入.
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |