2016-04-04 34 views
1

我有一个大矩阵 - 1045506 x 3,我想基于第1列进行排序。因为,这是一个numpy的矩阵,我可以使用argsort得到结果排序gpu上的numpy矩阵

mat_sorted = mat[mat[:,0].argsort()]

大约需要69ms完成这一步,这似乎有点高了我。

我的问题是如果有一种方法可以加速使用GPU的计算?我在看一些像pycuda,theano这样的图书馆,但我发现很难理解文档。特别是,将numpy数组和矩阵传递给gpu的部分。任何指针都会非常有帮助。

+0

有趣的问题。原则上,如果有一种简单的并行排序操作方法,对我而言并不明显。 – roadrunner66

+0

@ roadrunner66:google“基数排序”。 – talonmies

回答

0

我知道PyCUDA或scikit-cuda没有本地排序功能。然而,在GPU上进行高效的并行排序是一个基本解决的问题,您可以在Thrust模板库中找到最先进的排序算法,该库自该CUDA 4.0以来随每个版本的工具包一起提供。

PyCUDA wiki包含调用PyCUDA的Thrust排序算法的complete example