The setting is here.

X: 6000x8000 non-sparse matrix

B: 8000x1 sparse vector with only tens of non-zeros

d: positive number

M: is sparsified X'X, i.e. thresholding the elements smaller than d in magnitude to be 0.

Only hundreds of elements are left. So (X' * X - M) have many small elements and is not sparse.

I want to compute the vector y=(X' * X - M)* B and can rewrite as y=X' * (X * B) - M*B. The first part is fast enough, but the second part involves X'*X, and is very very slow.

Could any one help me to accelerate this computation?

Thanks a million!