2012-03-29 21 views
6

Trabajo en la conversión de un código grande de Matlab en C++ y CUDA. Tengo problemas de conversión de algunas operaciones de matrices dispersas como:Operaciones de matriz dispersa en 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) 

yo era capaz de resolver 2 usando CUSPARSE y 3 usando cambio de signo, sin embargo, no era capaz de utilizar CÚSPIDE (o CUSPARSE) para la multiplicación de matrices elementwise o para el problema 1.

Me interesa saber si hay una biblioteca CUDA que implemente todas las operaciones anteriores (preferiblemente una de código abierto).

Gracias

+2

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

+0

@Anycorn Si bien teóricamente correcto, estás haciendo 3 transposiciones que pueden ser excesivas (depende del tamaño de tus matrices, por supuesto). – mmisu

+0

debe ser capaz de especificar banderas de transposición, por lo tanto, solo 1 transpone. – Anycorn

Respuesta

Cuestiones relacionadas