Computational Speed of MLDIVIDE When Called From MEX Function
조회 수: 1 (최근 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.
댓글 수: 5
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!