Matrixmarket output not compliant with standard mmread.m
meteotester opened this issue · 1 comments
I think I found a bug in MMOutputter_vec (io.hpp), in relation to U, V storage to matrixmarket dense format. Actual output is not compliant with mmread.m expectations, causing wrong data load from octave/Matlab. It affects at least als.cpp and wals.cpp by default, when not using R_output_format=1.
It is easy to reproduce with latest version of graphchi (October 21 2013):
./toolkits/collaborative_filtering/wals --unittest=1
Then in octave:
U = mmread('test_wals_U.mm');
V = mmread('test_wals_V.mm');
full(U_V') #very different from actual test_wals matrix
[U(1:20); U(21:40); U(41:60); U(61:80)]_[V(1:20); V(21:40); V(41:60); V(61:80)]' #that seems the real matrix
Analogous with als: starting with als --unittest=1 --training=test_als
Regards
I can see on https://groups.google.com/forum/#!msg/graphlab-kdd/WSSIyt6Iork/3Bb3RKqdmgkJ that this lack of compatibility with standard mmread.m is not considered a bug, but a known issue. And that it is circumvented by using http://www.select.cs.cmu.edu/code/graphlab/mmread.m
I close this issue, and update the title according to this information.