1
在GPU上使用查找表时的最佳内存访问?
我正在为单身汉的项目探索GPU上的等值面算法(特别是仅关注二进制输入/输出体素数据,而不是实值字段)。因此,我有一个良好的旧行军多维数据集的CPU实现,并在OpenFrameworks中运行,现在处于尝试将其移植到GLSL计算着色器的阶段,并在下潜之前考虑了陷阱。我只写了vert和frag着色器在此之前,这对我来说都是全新的。 我的第一个问题是如何有效地在工作组中的数十个或数百个线程中使用查找表?我了解GPU可以为不同的任务提供不同类型的内存,但不能完全确定每个GPU的工作方式或使用哪种类型。 Paul Bourke的经典copypasta表是256 * 16的数组,因此,如果使用标量字节类型,则可以将其打包为4kb纹理或SSBO。 问题是,如何阻止不同的线程相互跳闸?每个工作组中的许多多维数据集都可能具有相同的配置,因此尝试同时访问缓冲区中的相同位置。有解决方法或优化来解决吗?