Computational Speed of MLDIVIDE When Called From MEX Function
4 次查看(过去 30 天)
显示 更早的评论
Has anyone ever seen significant performance reduction on
x = A \ b
when A is created in a mexFunction using mxCreateSparse and filling in the Ir, Jc, and Pr arrays?
The reason I ask is that I'm using mexCallMATLAB to invoke mldivide on a moderately sized system (about 416,000 unknowns, 1.63 million non-zeros) and there is about a factor of 3.5 difference in computational speed (35 seconds vs. 10 seconds) in calling mldivide from MEX rather than directly from within the MATLAB environment.
Moreover, if I replace the direct call to mldivide with a call to a simple wrapper that does
[i, j, v] = find(A);
x = sparse(i, j, v) \ b;
I recover MATLAB's "inline" 10 second run-time and produce the same numerical solution (relative difference in the order of eps). I am quite probably doing something wrong and/or unusual in my mexFunction that's causing the slowdown, but I can't think of anything obvious. I have verified that the row indices appear in sorted (ascending) order within each column.
Any hints, explanations or suggestions would be greatly appreciated.
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!