octave-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Octave-bug-tracker] [bug #53140] Solution of a system of linear equatio


From: Rik
Subject: [Octave-bug-tracker] [bug #53140] Solution of a system of linear equations takes forever and hurts OS performance.
Date: Mon, 19 Feb 2018 13:19:26 -0500 (EST)
User-agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0

Follow-up Comment #12, bug #53140 (project octave):

After some more debugging, there is definitely a problem here.  

I instrumented the code to be


octave_idx_type sz = x_nz * (b_nc - j) / b_nc;
std::cerr << "sz: " << sz << std::endl; 
std::cerr << "x_nz: " << x_nz << std::endl; 
sz = (sz > 10 ? sz : 10) + x_nz;
std::cerr << "before change_capacity" << std::endl;
retval.change_capacity (sz);
std::cerr << "after change_capacity" << std::endl;
x_nz = sz;
std::cerr << "new sz: " << sz << std::endl; 


And when running, I see that the size argument goes negative because
octave_idx_type is a sized value, but I can't see why we would ever want to
change the capacity of the sparse matrix to a negative value.

Runtime results:


resizing sparse matrix
sz: -2031109
x_nz: 3519011
before change_capacity
after change_capacity
new sz: 3519021
sz: -2031102
x_nz: 3519021
before change_capacity
after change_capacity
new sz: 3519031
sz: -2031094
x_nz: 3519031
before change_capacity
after change_capacity
new sz: 3519041
sz: -2031086
x_nz: 3519041


As you can see, the overall size keeps going up by just 10 values which means
it takes many iterations before the sparse matrix is increased sufficiently in
size.



    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?53140>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]