我有一个产生结果值数组的内核,我想高效地找到这些值的最大值。该数组在内核开始时被初始化为一些负值(例如-1)。例如,内核使用5个块,每块256个线程执行。CUDA在共享内存中找到最大值
这里有问题:
因为我的数据,我必须终止线程,无效的,所以我有256个线程,有时50,20等,有时工作。
在共享内存中写入块的结果,但正如我所提到的,某些数组有50个结果,有些结果有256个......(因此共享数组看起来像这样)8,6,4,9,1, -1,-1,-1 ...
在那种情况下如何在一个块中有效地找到最大值?
在这些类型的数组上并行压缩会很复杂,不是吗?这个怎么做 ?
完成,sry我很新:) – Hlavson 2012-04-19 12:27:29
你是什么意思与'终止'线程?为该线程做一个“返回”?因为不推荐 – pQB 2012-04-19 14:03:52
您是否考虑过使用其中一个免费库来查找最大值(例如ArrayFire)? – arrayfire 2012-04-19 14:53:13