Quick documentation on ALS for Ligra

Here is the link and a short documentation to the ALS implementation in Ligra. Right now, it is about 1.5-2x faster than GraphChi depending on the input. I believe that it is faster only because of the overhead in GraphChi.

A few notes
This version works with a directed graph. As a result, we need two edges in both direction for each
It would be a graph with vertexIDs 0 to n (n users), n to n+m (m movies).
An example graph can be found here, but it is not symmetric (https://github.com/yunmingzhang17/ligra/blob/master/inputs/test_weighted_adj.txt) . The netflix graphs I have are too big to put it up in the repository, so may be we can arrange for some other methods to transfer the netflix graphs.
(2) To see the RMSE

define flag COMPUTE_RMSE (line 6)

and you need to specify the number of users, because we only want to compute the error for the users.  Right now computing RMSE only works in single threaded mode, so the command to run it
taskset -c 0 ./ALS -nusers #users inputGraph
(3) Somewhat more detailed documentation
I realized that I did a somewhat messy but more comprehensive summary of my work on ALS in Ligra if you are interested in more details
This entry was posted in High Performance Computing and tagged . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s