三维立方体采样

现在准备在一个400400400的三维立方体进行采样,以1为步长, 每个三维点都依据一定的规则判断是否是valid,那怎样存储valid的数据呢?不可能开400400400的数组存储,超出显存,如果考虑每个线程,是不是也不能顺序存储?

楼主您好,那要看您的“点”是如何定义的了。

如果只是4B的普通数据,然后对每个此数据都判断是否符合一定的标准,果断可以直接进行,这才200多MB。您说呢?

反之,如果每个点的数据较大,或者贵卡的显存只有128MB, 那么唯一能做的就是一次一次的将数据移动到显卡里,例如,一共200MB数据,贵卡只能分配30MB显存,可以分7批次处理,每次1/7。

您觉得呢?

版主忒客气,让人受宠若惊啊。。。

虽然全部数据确实只有200+M,但是这只是处理的第一步,后边还有别的处理。而且数据也可能不止4B,可能要有五个float,两个int至少。
现在想把valid的数据存到一个数组里,手动维护数组下标,下标增加时用原子操作,就是不知道这种做法对效率的影响如何。。。

这样做可以。

如果如果每个元素数据量大的话,60多M个元素可能显存也放不下。

既然如此,您可以分步筛选出您需要的(您说的valid)的元素。
就是用您的原子加法维护下标(或者说队列的尾巴位置),将数据帅选出来再说。
效率则是另外一个问题,您先正确实现,然后我们再讨论效率。

您觉得如何?