我有一个问题,每个线程块(一维)必须对共享内存内的一个数组进行扫描,并执行几个其他任务。(该数组最多有 1024 个元素。)
有没有支持这种操作的好库?
我检查了 Thrust 和 CudPP 但它们都只在数据最初位于全局内存中时才起作用,这不是我想要的,因为我不想为很少的工作启动一个新内核并将数据复制回全局内存,因为它有相当大的开销。
如果没有支持此类操作的公共库,那么如果我只想编写一次此操作并在几个不同的问题中使用它,您有什么建议?
我的第一个想法是编写一个简单的设备函数来运行扫描操作,但是是否可以从不是内核函数的设备函数访问共享内存并执行 __syncthreads() 操作?我的另一个想法是在宏中编写整个函数,然后它会起作用,因为预处理器将代码复制到内核代码,但编写如此复杂的宏并不是使用宏的最佳方式。
PS.:我有流式多处理器版本 2.1,所以我不能从另一个启动新内核。