是否可以动态指出哪个Cuda 3DSurface使用

时间:2013-01-29 20:08:36

标签: cuda

该项目涉及使用3D网格(模板模拟)模拟的流体模拟。

在每一步中,我都在从一个表面读取值,计算并保存到第二个表面。问题在于,在每一步中都需要交换指向表面的指针(在第一次迭代中我想从第一个表面读取,写入第二个,在第二次迭代中我想从第二个表面读取,写入第一个等等) )。是否有可能以动态的方式进行?现在我正在使用一些if子句。

例如,如果是2D模拟,我可以使用2DlayeredSurface两层,我可以指出要使用哪个表面,但遗憾的是3DlayeredSurface不存在。

是否可以创建一个类型的数组,然后通过索引指向它?

1 个答案:

答案 0 :(得分:1)

你不能按照你描述的方式去做,但是对于你所说的少量指令,预测效果很好。绑定两个表面,然后编写if语句以确定要读/写的表面。编译器将发出谓词指令,只有一个指令处于活动状态。

类似的策略用于在此文件中引用> 2 ^ 27个纹理元素(通过预测最多4个纹理的读取):https://github.com/ArchaeaSoftware/cudahandbook/blob/master/texturing/tex1dfetch_big.cu