2016-04-04 34 views
1

1 sütununa göre sıralamak istediğiniz büyük bir matris - 1045506 x 3 var. , Bir numpy matris olduğundan, ben Bana yükseğe biraz görünüyor bu adımı tamamlamak için yaklaşık 69ms sürergpu için bir numpy matrisi sıralama

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

bir sonuç elde etmek için argsort kullanabilirsiniz.

Sorun, hesaplamayı GPU kullanarak hızlandırmanın bir yolu var mı? Pycuda, theano gibi bazı kütüphanelere bakıyordum ama belgeleri anlamakta zorlanıyorum. Özellikle, numpy dizileri ve matrisleri gpu'ya geçirme kısmı. Herhangi bir işaretçi son derece yararlı olacaktır.

+0

İlginç bir soru. İlke olarak sıralama işlemlerini paralel hale getirmenin basit bir yolu varsa, benim için açık değildir. – roadrunner66

+0

@ roadrunner66: google "radix sort". – talonmies

cevap

0

Bildiğim kadarıyla PyCUDA veya scikit-cuda'da yerel sıralama işlevi yoktur. Ancak, GPU üzerindeki verimli paralel sıralama, çoğunlukla çözülmüş bir problemdir ve yaklaşık CUDA 4.0'dan beri araç setinin her sürümü ile birlikte gelen Thrust şablon kütüphanesinde en gelişmiş sıralama algoritmalarını bulabilirsiniz.

PyCUDA wiki, PyCUDA'dan Thrust sort algoritmasını çağırmak için complete example içerir.