bkochuna / ners570f23-SpMV

1 stars 0 forks source link

Implement a matvec method for the CSR matrix class #30

Open KyleVaughn opened 11 months ago

KyleVaughn commented 11 months ago

Description:

Performing matrix-vector multiplication is the crux of this library's functionality.

This method will perform matrix-vector multiplication using the the sparse matrix data stored in the CSR format and an input vector (stored densely). The method will return the computed RHS vector (stored densely). The implementation of the matrix-vector multiplication will use the CSR row pointers vector, column index vector, and values vector directly rather than using the accessor functions.

Tasks:

Definition of done:

Evidence of a functional matvec implementation that can properly carry out matrix-vector multiplication showing the RHS matrix and vector and the computed LHS vector posted somewhere under this ticket.

KyleVaughn commented 11 months ago

Review by @marchier

Lazy-Beee commented 11 months ago

I would suggest using the function interface virtual fp_type* matvec(fp_type* vecin) and I'll add this to the SparseMatrix class.


Edit: change the api to avoid memory leak void matvec(fp_type* vecin, fp_type* vecout)

marchier commented 11 months ago

Description for the CSR matvec operation looks well defined

For the tasks section, I would suggest including more detail about operations to perform matvec in the CSR format (for example, including an operation to determine the row index value from the CSR vector variables)

Definition of done for CSR matvec operation looks well defined

jacob-umich commented 11 months ago

@tjayasa will the vector input to the matvec method be a vector datatype or will it be a file pointer to a vector file? if it is a vector type, will there be any methods for importing a vector file into a vector type? Asking for testing purposes.

lwh1106 commented 10 months ago

Hi, the CSR class has been added to the "csr" branch. Feel free to use & test it -- I write a simple "test" for it in the examples/mwe.cpp file. Just let me know if there are any bugs ...