sen*_*iwa 0 c++ concurrency gpgpu opencl
从GPU编程的新手,我求助于你的建议,请注意我对特定的hw解决方案并不感兴趣,所以NVidia/ATI没问题,尽管OpenCL可能更好.但一切都是洁净的!
所以,我有2个系列的64位整数对,比方说list(<top, bottom>)
,我需要将列表中的每个元素与其他所有元素进行比较.是的,一个简单的N^2
算法.详细地说,我要看看,给出l1
并l2
从列表中l1.top == l2.bottom
.如果是,则存储匹配的元素,否则丢弃它们.
而已.
显然,即使在多线程方法中达到列表中的数百万个元素时,这也不会扩展.
我了解了Cuda,并尝试了很少的程序,但每个程序都修改了一些东西.没有像并发向量或列表这样的例子,我现在用它来存储匹配的对.
你能指出我将这个移植到GPU的正确方向吗?
创建列表的两个副本,按顶部和底部逐个排序.然后使用并行二进制搜索将第一个复制顶部与第二个复制底部匹配.最后使用聚集操作来收集匹配对.
可以在推力gpu库中找到聚集,二进制搜索和排序.
请参见:https://github.com/thrust/thrust
归档时间: |
|
查看次数: |
133 次 |
最近记录: |