Boost logo

Ublas :

Subject: Re: [ublas] Banded matrix storage
From: Nasos Iliopoulos (nasos_i_at_[hidden])
Date: 2013-08-01 14:27:19


To all:
it would be of great help if at least another pair of eyes can review
the code before it moves forward into an official release. Here is the
github branch:

modified test cases (added non square matrices):
https://github.com/uBLAS/ublas/blob/ublas_bugfix0002_fix_banded_tc7549/test/test_banded_storage_layout.cpp

and modified banded.hpp:
https://github.com/uBLAS/ublas/blob/ublas_bugfix0002_fix_banded_tc7549/include/boost/numeric/ublas/banded.hpp

relevant lines are 25-56 and and anything that contains the
"banded_indexing" specializations.

One important change I made relatively to the old code is that I
enabled range checking only in debug builds (where appropriate).

Please also note that I didn't follow Gunter's suggestion on adding a
new template argument, since I felt it would break backwards
compatibility in certain cases.
(https://svn.boost.org/trac/boost/ticket/7549)

test instructions (not final but they should work):
https://github.com/uBLAS/ublas/wiki
please do a git checkout ublas_bugfix0002_fix_banded_tc7549 prior to
compiling with b2 otherwise you will be compiling the master branch.

I will megre it into ublas_develop after 1-2months so that there is
enough time for review and maybe apply some minor modifications I have
in mind.

On 08/01/2013 01:05 PM, pmamales_at_[hidden] wrote:
> PS: Although I asked a very-related question, I did not see any answer, so I thought it was ignored as
> trivial/already answered elsewhere. However, I did receive these very relevant emails. Am I doing something wrong ?
Petro,
Gunter had created some test cases and a bug report on boost trac, so I
figured it would help the discussion more to answer to that thread. I
restrained myself flooding the mailing list with responses, since yours
was just around the corner.

Best,
Nasos
> ---- Rutger ter Borg <rutger_at_[hidden]> wrote:
>> On 2013-07-31 17:22, Nasos Iliopoulos wrote:
>>> Gunter,
>>> I am working on this bug, but based on the test case I am wondering why
>>> should the expected row-major data layout be:
>>>
>>> 0, 0, 11, 12, 0, 21, 22, 23, 31, 32, 33, 34, 42, 43, 44, 45, 53, 54, 55, 0
>>>
>>> And not
>>>
>>> 0, 12, 23, 34, 45, 11, 22, 33, 44, 55, 21, 32, 43, 54, 0, 31, 42, 53, 0, 0 ?
>>>
>>> For the moment I got the column-major implementation working as
>>> expected, but I need to add some more tests cases to make sure it is
>>> working for non-square matrices as well.
>>>
>>> Regards,
>>>
>>> -Nasos
>>>
>>
>> Hey Nasos,
>>
>> great work. The data in banded matrices is stored either row-by-row
>> (row-major), or column-by-column (column-major). This is defined by
>> netlib. AFAIK, a diagonal-by-diagonal storage scheme is not supported by
>> CBLAS.
>>
>> Cheers,
>>
>> Rutger
>>
>>
>>
>> _______________________________________________
>> ublas mailing list
>> ublas_at_[hidden]
>> http://lists.boost.org/mailman/listinfo.cgi/ublas
>> Sent to: pmamales_at_[hidden]
> _______________________________________________
> ublas mailing list
> ublas_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/ublas
> Sent to: athanasios.iliopoulos.ctr.gr_at_[hidden]