我想设计一个CUDA内核,该线程块在线程中可以读取自己的一维数组。假设一个有两个线程的线程块需要两个数组{1,2,3,4}和{2,4,6,8}。然后,每个warps将通过读取自己的数组来执行一些计算。计算是基于每个数组元素来完成的。这意味着线程块会对阵列中的元素2和4进行冗余计算。 这是我的问题:我如何避免这种多余的计算?有没有办法避免部分重叠阵列上的线程块中的扭曲进行冗余计算
准确地说,我希望做一个经跳过元素的计算,一旦元素已被其他经线被已经谈到,否则计算正常去,因为任何经线从未触及的元素。
使用在专用到一个线程块的共享存储器中的哈希表可以被考虑。但是我担心由于哈希表访问每当一个数组的warp访问元素时性能下降。
任何想法或意见?
你将不得不更好地解释这一点。为什么这意味着“线程块会对阵列中的元素2和4进行冗余计算”? – talonmies