2011-10-16 14 views
9

Bazı hesaplamalar yapıyorum ve farklı BLAS uygulamalarının güçleri ve zayıflıkları üzerine bazı analizler yapıyorum. ancak bir problemle karşılaştım.Bir matrisi blas kullanarak en iyi şekilde nasıl aktarılır?

cuBlas'i test ediyorum, GPU üzerinde linAlg yapmak iyi bir fikir gibi görünebilir, ancak bir sorun var.

Kolon-ana formatı kullanarak cuBlas uygulaması, ve sonunda ihtiyacım olan şey olmadığı için, BLAS'ın matris-transpoze olmasını sağlayabilecek bir yöntem varsa merak ediyorum.

+1

".... ve sonuçta bunun sonu değil .....". Birkaç kelimeyi mi özledin? – talonmies

+2

CUDA 5.0'dan başlayarak cuBLAS, matris aktarımını gerçekleştirmek için çok verimli bir rutin olan " geam" küplerine sahiptir. Bu çözümü uygulayan ve Thrust kullanarak matris aktarımı ile performansı karşılaştıran tam bir kod için, [CUDA'da bir matrisi dönüştürmenin en etkili yolu nedir?] (Http://stackoverflow.com/questions/15458552/what-is- -en verimli yollu için-devrik-a-matrisini-içinde-cuda/21803459 # 21803459). – JackOLantern

cevap

10

BLAS, yerleşik bir matris aktarım yordamına sahip değildir. CUDA SDK, bir aktarım gerçekleştirmek için en uygun stratejiyi ele alan bir kağıt içeren bir matris dönüşüm örneği içerir. En iyi stratejiniz muhtemelen çağrıların transpoze giriş versiyonunu kullanarak CUBLAS'a satır büyük girdilerini kullanmak, daha sonra sütun majöründe ara hesaplamaları yapmak ve son olarak SDK transpoze çekirdeğini kullanarak bir transpoze operasyonu gerçekleştirmek.


CUBLAS GPU belleğine matris transpozisyonu gerçekleştirilen ve kullandığınız her türlü mimari için optimum olarak kabul edilmelidir CUBLAS sürüm 5, geam bir devrik rutin ekledi eklemek Düzenlendi.

İlgili konular