Search code examples
cudacusparse

Meaning of 'i' in function names `cusparse<t>axpyi` and `cusparse<t>doti`


cusparse<t>axpyi and cusparse<t>doti are function names in cuSPARSE, the CUDA sparse matrix library.

The naming conventions section explains <t> denotes data types, and axpyi, doti, roti all denote operations. However it does not further explain what the 'i' means in those names.

FYI, cusparse<t>axpyi performs a * x + y (so I guess 'axpy' means 'ax plus y').
cusparse<t>doti performs dot product of a sparse vector x and a dense vector y.
cusparse<t>roti performs rotations (actually I'm not clear on how that works either).


Solution

  • Thank @talonmies for the info!

    Very likely cuSPARSE is following the sparse BLAS naming conventions (read the paper therein):

    If a sparse BLAS routine is an extension of a dense BLAS, the subprogram name is formed by appending a suffix character, I, standing for indexed, to the dense name.


    Or you can read that from the Intel MKL website (which is much more direct):

    If a sparse BLAS routine is an extension of a "dense" one, the subprogram name is formed by appending the suffix i (standing for indexed) to the name of the corresponding "dense" subprogram.