Finding CRS format of matrix in Mex
Mostrar comentarios más antiguos
Hi,
I am using mex bridge to perform some operations sparse matrices from matlab.One of the operations requires me to convert matrix from CSC to CRS format. I was able to get values and col_indices arrays. However, I am not able to understand the exact method by which I can extract row_pointers array of a given matrix in CSC format.
Any help/suggestions will be appreciated.
Thanks in advance.
Cheers.
Respuestas (2)
James Tursa
el 8 de Jul. de 2012
0 votos
Can't you just transpose it within MATLAB, and then treat the resulting row indexes as column indexes and column "pointers" as row "pointers" in the CRS format?
Abhishek
el 8 de Jul. de 2012
0 votos
3 comentarios
James Tursa
el 8 de Jul. de 2012
Editada: James Tursa
el 8 de Jul. de 2012
The CSC format that MATLAB uses stores the data in column order. As I understand it, the CSR format stores the data in row order. You will never get the MATLAB data into a routine (e.g., your CUDA) expecting the data in row order without transposing it. Does your CUDA routine have any options for using the transpose of the input w/o physically doing the transpose up front? Also, I think you misunderstood my first reply. The physical transpose of the CSC format is the CSR format ... i.e. transposing it does the conversion for you. You don't need a separate routine for this. You just need to interpret the resulting row indexes as column indexes, and treat the resulting column pointers as row pointers.
Abhishek
el 8 de Jul. de 2012
James Tursa
el 8 de Jul. de 2012
You can use mexCallMATLAB with your MATLAB variable as the input and call the "transpose" function.
Categorías
Más información sobre GPU Computing en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!