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