在gpu上对numpy矩阵进行排序

在gpu上对numpy矩阵进行排序,numpy,gpu,theano,pycuda,Numpy,Gpu,Theano,Pycuda,我有一个大矩阵-1045506x3,我想根据第一列对其进行排序。因为它是一个numpy矩阵,所以我可以使用argsort得到结果 mat_sorted=mat[mat[:,0].argsort()] 完成这一步大约需要69ms,我觉得这一步有点高 我的问题是,是否有一种方法可以使用GPU加速计算?我看了一些库,比如pycuda,theano,但我发现很难理解文档。特别是将numpy数组和矩阵传递给gpu的部分。任何指针都会非常有用。据我所知,PyCUDA或scikit-cuda中没有本机排序功能

我有一个大矩阵-
1045506x3
,我想根据第一列对其进行排序。因为它是一个numpy矩阵,所以我可以使用argsort得到结果

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

完成这一步大约需要
69ms
,我觉得这一步有点高


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

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


PyCUDA wiki包含一个从PyCUDA调用推力排序算法的示例。

有趣的问题。原则上,我不清楚是否有一种简单的方法来并行排序操作。@roadrunner66:google“基数排序”。