我正在设计一组数学函数,并在CPU和GPU(使用CUDA)版本中实现它们。
其中一些函数基于查找表。大多数表占用4KB,其中一些略大。基于查找表的函数接受输入,选择一个或两个查找表条目,然后通过插值或应用类似技术计算结果。
我的问题是:这些查找表应该保存在哪里?CUDA设备有许多存储值的位置(全局内存、常量内存、纹理内存等)。假设每个表都可以被许多线程同时读取,并且输入值(因此查找索引)在每个warp的线程之间完全不相关(导致不相关的内存访问),哪种内存提供最快的访问速度?
我补充说明这些表的内容是预先计算的并且完全不变的。
编辑
仅澄清一下:我需要存储约10个不同的4KB查找表。无论如何,了解针对此情况的解决方案是否与具有例如100个4KB表或例如10个16KB查找表的情况相同将是很好的。