|
From: | Nicholas Jankowski |
Subject: | Re: Critical matrix sparsity |
Date: | Fri, 9 Jun 2017 06:27:41 -0400 |
NJank wrote
>
> siko1056 wrote
>> If your matrix is really sparse, then the number of columns n should beI don't think it is a naive question, I also thought about it. In my opinion
>> smaller
>> than the number of rows m (transpose if not). Otherwise you waste space
>> for
>> storing zero columns.
> Maybe a naive side question, but wouldn't it make sense to have the
> transposition automatic and transparent as part of the storage class? A
> "transposed?" flag and the check would be the only overhead.
the programmer should control the sparse matrix orientation, especially in
regard of my second assertion:
siko1056 wrote
> 2. Do I often extract parts of the matrix or insert elements?If I construct a sparse matrix and manipulate it occasionally, and despite
> Randomly extracting or adding parts of a sparse matrix might be a real
> performance killer!
this inefficiency, Octave transposes back and forth (because the number of
columns is temporarily below a threshold value) I have a serious not
controllable performance breakdown. So Octave should remain predictive. To
mention this nuance came up to my mind, as I work with matrices like this
one, where it saves about 2/3 space to choose the "right" orientation:
>> typeinfo (A)
ans = sparse matrix
>> size (A)
ans = 2,569,260 7,230
>> nnz(A)
ans = 855,800
>> nnz(A) / prod (size (A)) % less than 1% filled
ans = 4.6071e-05
>> whos A
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
A 2,569,260x7,230 13,834,168 double
Total is 18,575,749,800 elements using 13,834,168 bytes
>> A = A'; size (A)
ans = 7230 2569260
>> whos A
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
A 7,230x2,569,260 34,246,888 double
Total is 18,575,749,800 elements using 34,246,888 bytes
>> spy(A) % as attachment
<http://octave.1599824.n4.nabble.com/file/n4683608/A.png >
Best,
Kai
[Prev in Thread] | Current Thread | [Next in Thread] |