1
$\begingroup$

I use gpbsv command from Intel MKL to solve symmetric positive band system. But unfortunately when the system is large I get an error Access violating writing location in VisualStudio.

Could someone give an advice how could I solve this system. Maybe I could use more optimized library? Maybe it's simplier to write my own solver for large problems ( where can I read about realizations ) ?

PS: I have only one notebook with Core i3.

Best wishes.

$\endgroup$
  • 2
    $\begingroup$ How much memory do you have, how big is your system, is it sparse, and if it is sparse, how many nonzeros does it have? $\endgroup$ – Geoff Oxberry Mar 6 '14 at 21:55
  • 1
    $\begingroup$ I'll be honest, there's only one reason I'd expect an error like this: you're passing MKL an invalid pointer. One possibility is that you've tried to dynamically allocate storage for the result, and that allocation failed---but you did not check that fact before proceeding. Or, there could be a similar error elsewhere in your code. Either way, I find it a bit difficult to believe that this error would occur entirely within MKL. $\endgroup$ – Michael Grant Mar 7 '14 at 2:36
  • $\begingroup$ That said, his is likely most memory-efficient way to handle a dense banded matrix, at least if you're doing the solve in-place. For sparse matrices I agree with tbirdal. $\endgroup$ – Michael Grant Mar 7 '14 at 2:41
  • 1
    $\begingroup$ @ Geoff Oxberry, almost entire gsm is zero. Each row contains max 27 non-zero elements. @Michael C. Grant, the problem was resolved when I linked with libraries with a suffix "lp64.lib" instead "_ilp64.lib". This problem was also with small systems - Falsely I didn't notice it. -_- $\endgroup$ – Ivan Kush Mar 7 '14 at 19:11
  • 1
    $\begingroup$ software.intel.com/sites/products/documentation/hpc/mkl/… $\endgroup$ – Ivan Kush Mar 7 '14 at 19:19
1
$\begingroup$

If this is a large band matrix, I assume it is sparse and you could well use the sparse solvers in MKL (such as Pardiso or iterative such as conjugate gradients)

http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/GUID-78889273-7E77-426A-9B5E-23A7C2378D78.htm

$\endgroup$
  • 1
    $\begingroup$ I personally use a code that utilizes pardiso, and its performance is pretty good. 1Mx1M with 50-100 non-zeros per row in tens of ms on only 2-3 cores. $\endgroup$ – Godric Seer Mar 6 '14 at 18:56
  • $\begingroup$ Yes, it's sparse. Thanks, I'll try Paradiso. $\endgroup$ – Ivan Kush Mar 7 '14 at 18:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.