Boost logo

Ublas :

From: Nico Galoppo (nico_at_[hidden])
Date: 2007-11-17 10:42:34


Hi,

I'm having issues with serialization (malloc problems), and I'm trying
to figure out where the bug is (ublas or own code). I noticed
something bizarre in the output of my serialization of a
compressed_matrix, vs. Gunter's example code output.

I create and fill a compressed_matrix as follows, and then I make a
copy (just to make sure that less storage is required, see issue
below).

  ublas::compressed_matrix<double> K;
  // ... fill K ..
  // Make a copy
  ublas::compressed_matrix<double> Kcopy;

Then, the result xml file is like this:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="4">
<K class_id="0" tracking_level="0" version="0">
        <size1>1617</size1>
        <size2>1617</size2>
        <capacity>1617</capacity>
        <filled1>148</filled1>
        <filled2>147</filled2>
        <index1_data class_id="1" tracking_level="0" version="0">
                <size>1618</size>
...
        </index1_data>
        <index2_data>
                <size>1617</size>
...
                <item>3221221576</item>
                <item>0</item>
                <item>0</item>
        </index2_data>
        <value_data class_id="2" tracking_level="0" version="0">
                <size>1617</size>
....

Notice that index1_data size is 1618, where it should only be 148
(filled1). These sizes match up in Gunter's example, they don't in my
case. This causes garbage data in index1_data after item 148.

Also, why is capacity so big? Making a copy, I would expect only the
nnz() in matrix K should be required storage upon construction of
Kcopy.

Thanks!

--nico

-- 
Nico Galoppo :: http://www.ngaloppo.org