2012-03-29 4 views
6

Pracuję nad konwersją dużego kodu Matlab na C++ i CUDA. Występują problemy konwersji niektórych operacji macierzy rzadkich, takie jak:Rzadkie operacje na macierzy na CUDA

1. full_Matrix * sparse_Matrix 
2. sparse_Matrix * full_Matrix 
3. sparse_Matrix * sparse_Matrix (SOLVED WITH CUSP) 
4. full_Matrix .* sparse_Matrix (elementwise multiplication) 
5. sparse_Matrix * full_Matrix  (elementwise multiplication) 
6. sparse_Matrix .* sparse_Matrix (elementwise multiplication) 

udało mi się rozwiązać za pomocą CUSPARSE 2 i 3 za pomocą guzków, jednak nie mogła wykorzystać guzków (lub CUSPARSE) do mnożenia macierzy elementwise lub problemu 1.

Jestem zainteresowany, jeśli istnieje biblioteka CUDA, która implementuje wszystkie powyższe operacje (najlepiej open source).

Dzięki

+2

uhh, '(AB) = (B'A ')" '? – Anycorn

+0

@Anycorn Chociaż teoretycznie poprawne, robisz 3 transpozycje, które mogą być przesadzone (zależy oczywiście od rozmiaru twoich tablic). – mmisu

+0

powinieneś być w stanie określić flagi transpozycji, stąd tylko 1 transpozycja. – Anycorn

Odpowiedz