You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hama.apache.org by ed...@apache.org on 2009/02/13 09:32:28 UTC

svn commit: r744029 - in /incubator/hama/trunk/src/java/org/apache/hama: AbstractMatrix.java DenseMatrix.java DenseVector.java HamaAdminImpl.java

Author: edwardyoon
Date: Fri Feb 13 08:32:27 2009
New Revision: 744029

URL: http://svn.apache.org/viewvc?rev=744029&view=rev
Log:
Added some comments.

Modified:
    incubator/hama/trunk/src/java/org/apache/hama/AbstractMatrix.java
    incubator/hama/trunk/src/java/org/apache/hama/DenseMatrix.java
    incubator/hama/trunk/src/java/org/apache/hama/DenseVector.java
    incubator/hama/trunk/src/java/org/apache/hama/HamaAdminImpl.java

Modified: incubator/hama/trunk/src/java/org/apache/hama/AbstractMatrix.java
URL: http://svn.apache.org/viewvc/incubator/hama/trunk/src/java/org/apache/hama/AbstractMatrix.java?rev=744029&r1=744028&r2=744029&view=diff
==============================================================================
--- incubator/hama/trunk/src/java/org/apache/hama/AbstractMatrix.java (original)
+++ incubator/hama/trunk/src/java/org/apache/hama/AbstractMatrix.java Fri Feb 13 08:32:27 2009
@@ -134,17 +134,32 @@
   }
 
   /** {@inheritDoc} */
-  public void set(int i, int j, double value) throws IOException {
-    VectorUpdate update = new VectorUpdate(i);
-    update.put(j, value);
-    table.commit(update.getBatchUpdate());
+  public String getRowLabel(int row) throws IOException {
+    Cell rows = null;
+    rows = table.get(BytesUtil.getRowIndex(row), Bytes
+        .toBytes(Constants.ATTRIBUTE + "string"));
 
+    return (rows != null) ? Bytes.toString(rows.getValue()) : null;
   }
 
   /** {@inheritDoc} */
-  public void add(int i, int j, double value) throws IOException {
+  public String getColumnLabel(int column) throws IOException {
+    Cell rows = null;
+    rows = table.get(Constants.CINDEX, (Constants.ATTRIBUTE + column));
+    return (rows != null) ? Bytes.toString(rows.getValue()) : null;
+  }
+
+  /** {@inheritDoc} */
+  public void setRowLabel(int row, String name) throws IOException {
+    VectorUpdate update = new VectorUpdate(row);
+    update.put(Constants.ATTRIBUTE + "string", name);
+    table.commit(update.getBatchUpdate());
+  }
+  
+  /** {@inheritDoc} */
+  public void set(int i, int j, double value) throws IOException {
     VectorUpdate update = new VectorUpdate(i);
-    update.put(j, value + this.get(i, j));
+    update.put(j, value);
     table.commit(update.getBatchUpdate());
 
   }
@@ -158,6 +173,14 @@
     table.commit(update.getBatchUpdate());
   }
 
+  /** {@inheritDoc} */
+  public void add(int i, int j, double value) throws IOException {
+    VectorUpdate update = new VectorUpdate(i);
+    update.put(j, value + this.get(i, j));
+    table.commit(update.getBatchUpdate());
+
+  }
+  
   /**
    * Just full scan a table.
    */
@@ -234,27 +257,7 @@
     return this;
   }
 
-  public String getRowLabel(int row) throws IOException {
-    Cell rows = null;
-    rows = table.get(BytesUtil.getRowIndex(row), Bytes
-        .toBytes(Constants.ATTRIBUTE + "string"));
-
-    return (rows != null) ? Bytes.toString(rows.getValue()) : null;
-  }
-
-  public void setRowLabel(int row, String name) throws IOException {
-    VectorUpdate update = new VectorUpdate(row);
-    update.put(Constants.ATTRIBUTE + "string", name);
-    table.commit(update.getBatchUpdate());
-
-  }
-
-  public String getColumnLabel(int column) throws IOException {
-    Cell rows = null;
-    rows = table.get(Constants.CINDEX, (Constants.ATTRIBUTE + column));
-    return (rows != null) ? Bytes.toString(rows.getValue()) : null;
-  }
-
+  /** {@inheritDoc} */
   public void setColumnLabel(int column, String name) throws IOException {
     VectorUpdate update = new VectorUpdate(Constants.CINDEX);
     update.put(column, name);

Modified: incubator/hama/trunk/src/java/org/apache/hama/DenseMatrix.java
URL: http://svn.apache.org/viewvc/incubator/hama/trunk/src/java/org/apache/hama/DenseMatrix.java?rev=744029&r1=744028&r2=744029&view=diff
==============================================================================
--- incubator/hama/trunk/src/java/org/apache/hama/DenseMatrix.java (original)
+++ incubator/hama/trunk/src/java/org/apache/hama/DenseMatrix.java Fri Feb 13 08:32:27 2009
@@ -57,6 +57,9 @@
 import org.apache.hama.util.JobManager;
 import org.apache.hama.util.RandomVariable;
 
+/**
+ * This class represents a dense matrix.
+ */
 public class DenseMatrix extends AbstractMatrix implements Matrix {
   static int tryPathLength = Constants.DEFAULT_PATH_LENGTH;
   static final String TABLE_PREFIX = DenseMatrix.class.getSimpleName() + "_";
@@ -339,6 +342,74 @@
     return (c != null) ? BytesUtil.bytesToDouble(c.getValue()) : 0;
   }
 
+  /**
+   * Gets the vector of row
+   * 
+   * @param i the row index of the matrix
+   * @return the vector of row
+   * @throws IOException
+   */
+  public DenseVector getRow(int i) throws IOException {
+    return new DenseVector(table.getRow(BytesUtil.getRowIndex(i)));
+  }
+  
+  /**
+   * Gets the vector of column
+   * 
+   * @param j the column index of the matrix
+   * @return the vector of column
+   * @throws IOException
+   */
+  public DenseVector getColumn(int j) throws IOException {
+    byte[] columnKey = BytesUtil.getColumnIndex(j);
+    byte[][] c = { columnKey };
+    Scanner scan = table.getScanner(c, HConstants.EMPTY_START_ROW);
+
+    HMapWritable<Integer, DoubleEntry> trunk = new HMapWritable<Integer, DoubleEntry>();
+
+    for (RowResult row : scan) {
+      trunk.put(BytesUtil.bytesToInt(row.getRow()), new DoubleEntry(row
+          .get(columnKey)));
+    }
+
+    return new DenseVector(trunk);
+  }
+
+  /**
+   * Set the row of a matrix to a given vector
+   * 
+   * @param row
+   * @param vector
+   * @throws IOException
+   */
+  public void setRow(int row, Vector vector) throws IOException {
+    VectorUpdate update = new VectorUpdate(row);
+    update.putAll(((DenseVector) vector).getEntries().entrySet());
+    table.commit(update.getBatchUpdate());
+  }
+
+  /**
+   * Set the column of a matrix to a given vector
+   * 
+   * @param column
+   * @param vector
+   * @throws IOException
+   */
+  public void setColumn(int column, Vector vector) throws IOException {
+    for (int i = 0; i < vector.size(); i++) {
+      VectorUpdate update = new VectorUpdate(i);
+      update.put(column, vector.get(i));
+      table.commit(update.getBatchUpdate());
+    }
+  }
+  
+  /**
+   * A = B + A
+   * 
+   * @param B
+   * @return A
+   * @throws IOException
+   */
   public Matrix add(Matrix B) throws IOException {
     Matrix result = new DenseMatrix(config);
     JobConf jobConf = new JobConf(config);
@@ -357,6 +428,14 @@
     return result;
   }
 
+  /**
+   * A = alpha*B + A
+   * 
+   * @param alpha
+   * @param B
+   * @return A
+   * @throws IOException
+   */
   public Matrix add(double alpha, Matrix B) throws IOException {
     Matrix temp = new DenseMatrix(config);
     temp.set(alpha, B);
@@ -364,26 +443,14 @@
     Matrix result = this.add(temp);
     return result;
   }
-
-  public DenseVector getRow(int row) throws IOException {
-    return new DenseVector(table.getRow(BytesUtil.getRowIndex(row)));
-  }
-
-  public DenseVector getColumn(int column) throws IOException {
-    byte[] columnKey = BytesUtil.getColumnIndex(column);
-    byte[][] c = { columnKey };
-    Scanner scan = table.getScanner(c, HConstants.EMPTY_START_ROW);
-
-    HMapWritable<Integer, DoubleEntry> trunk = new HMapWritable<Integer, DoubleEntry>();
-
-    for (RowResult row : scan) {
-      trunk.put(BytesUtil.bytesToInt(row.getRow()), new DoubleEntry(row
-          .get(columnKey)));
-    }
-
-    return new DenseVector(trunk);
-  }
-
+  
+  /**
+   * C = A*B using SIMD algorithm
+   * 
+   * @param B
+   * @return C
+   * @throws IOException
+   */
   public Matrix mult(Matrix B) throws IOException {
     Matrix result = new DenseMatrix(config);
 
@@ -402,7 +469,7 @@
   }
 
   /**
-   * A * B
+   * C = A * B using Blocking algorithm
    * 
    * @param B
    * @param blocks the number of blocks
@@ -412,8 +479,10 @@
   public Matrix mult(Matrix B, int blocks) throws IOException {
     Matrix collectionTable = new DenseMatrix(config);
     LOG.info("Collect Blocks");
-    collectBlocks(this, B, blocks, collectionTable);
 
+    collectBlocksMapRed(this.getPath(), collectionTable, blocks, true);
+    collectBlocksMapRed(B.getPath(), collectionTable, blocks, false);
+    
     Matrix result = new DenseMatrix(config);
 
     JobConf jobConf = new JobConf(config);
@@ -432,42 +501,49 @@
     return result;
   }
 
-  private void collectBlocks(Matrix a, Matrix b, int blocks,
-      Matrix collectionTable) throws IOException {
-    collectBlocksMapRed(a.getPath(), collectionTable, blocks, true);
-    collectBlocksMapRed(b.getPath(), collectionTable, blocks, false);
-  }
-
+  /**
+   * C = alpha*A*B + C
+   * 
+   * @param alpha
+   * @param B
+   * @param C
+   * @return C
+   * @throws IOException
+   */
   public Matrix multAdd(double alpha, Matrix B, Matrix C) throws IOException {
     // TODO Auto-generated method stub
     return null;
   }
 
+  /**
+   * Computes the given norm of the matrix
+   * 
+   * @param type
+   * @return norm of the matrix
+   * @throws IOException
+   */
   public double norm(Norm type) throws IOException {
     // TODO Auto-generated method stub
     return 0;
   }
 
-  public void setRow(int row, Vector vector) throws IOException {
-    VectorUpdate update = new VectorUpdate(row);
-    update.putAll(((DenseVector) vector).getEntries().entrySet());
-    table.commit(update.getBatchUpdate());
-  }
-
-  public void setColumn(int column, Vector vector) throws IOException {
-    for (int i = 0; i < vector.size(); i++) {
-      VectorUpdate update = new VectorUpdate(i);
-      update.put(column, vector.get(i));
-      table.commit(update.getBatchUpdate());
-    }
-  }
-
+  /**
+   * Returns type of matrix
+   */
   public String getType() {
     return this.getClass().getSimpleName();
   }
 
   /**
-   * Gets the sub matrix
+   * Returns the sub matrix formed by selecting certain rows and
+   * columns from a bigger matrix. The sub matrix is a in-memory operation only.
+   * 
+   * @param i0 the start index of row
+   * @param i1 the end index of row
+   * @param j0 the start index of column
+   * @param j1 the end index of column
+   * @return the sub matrix of matrix
+   * @throws IOException
    */
   public SubMatrix subMatrix(int i0, int i1, int j0, int j1) throws IOException {
     int columnSize = (j1 - j0) + 1;
@@ -498,9 +574,9 @@
   /**
    * Collect Blocks
    * 
-   * @param path
-   * @param collectionTable
-   * @param blockNum
+   * @param path a input path
+   * @param collectionTable the collection table
+   * @param blockNum the number of blocks
    * @param bool
    * @throws IOException
    */

Modified: incubator/hama/trunk/src/java/org/apache/hama/DenseVector.java
URL: http://svn.apache.org/viewvc/incubator/hama/trunk/src/java/org/apache/hama/DenseVector.java?rev=744029&r1=744028&r2=744029&view=diff
==============================================================================
--- incubator/hama/trunk/src/java/org/apache/hama/DenseVector.java (original)
+++ incubator/hama/trunk/src/java/org/apache/hama/DenseVector.java Fri Feb 13 08:32:27 2009
@@ -30,6 +30,9 @@
 import org.apache.hama.util.BytesUtil;
 import org.apache.log4j.Logger;
 
+/**
+ * This class represents a dense vector.
+ */
 public class DenseVector extends AbstractVector implements Vector {
   static final Logger LOG = Logger.getLogger(DenseVector.class);
 
@@ -49,6 +52,13 @@
     }
   }
 
+  /**
+   * x = alpha*v + x
+   * 
+   * @param alpha
+   * @param v
+   * @return x = alpha*v + x
+   */
   public DenseVector add(double alpha, Vector v) {
     if (alpha == 0)
       return this;
@@ -59,6 +69,12 @@
     return this;
   }
 
+  /**
+   * x = v + x
+   * 
+   * @param v2
+   * @return x = v + x
+   */
   public DenseVector add(Vector v2) {
     if (this.size() == 0) {
       DenseVector trunk = (DenseVector) v2;
@@ -75,6 +91,12 @@
     return this;
   }
 
+  /**
+   * x dot v
+   * 
+   * @param v
+   * @return x dot v
+   */
   public double dot(Vector v) {
     double cosine = 0.0;
     double q_i, d_i;
@@ -86,6 +108,12 @@
     return cosine / (this.getNorm2() * ((DenseVector) v).getNorm2());
   }
 
+  /**
+   * v = alpha*v 
+   * 
+   * @param alpha
+   * @return v = alpha*v
+   */
   public Vector scale(double alpha) {
     for(Map.Entry<Integer, DoubleEntry> e : this.entries.entrySet()) {
       this.entries.put(e.getKey(), new DoubleEntry(e.getValue().getValue() * alpha));
@@ -93,6 +121,12 @@
     return this;
   }
 
+  /**
+   * Computes the given norm of the vector
+   * 
+   * @param type
+   * @return norm of the vector
+   */
   public double norm(Norm type) {
     if (type == Norm.One)
       return getNorm1();
@@ -104,6 +138,12 @@
       return getNormInf();
   }
 
+  /**
+   * Sets the vector
+   * 
+   * @param v
+   * @return x = v
+   */
   public DenseVector set(Vector v) {
     return new DenseVector(((DenseVector) v).getEntries());
   }
@@ -145,6 +185,13 @@
     return 0;
   }
 
+  /**
+   * Returns a sub-vector.
+   * 
+   * @param i0 the index of the first element
+   * @param i1 the index of the last element
+   * @return v[i0:i1]
+   */
   public DenseVector subVector(int i0, int i1) {
     DenseVector res = new DenseVector();
     for (int i = i0; i <= i1; i++) {
@@ -154,6 +201,9 @@
     return res;
   }
 
+  /**
+   * Clears the entries.
+   */
   public void clear() {
     this.entries = null;
   }

Modified: incubator/hama/trunk/src/java/org/apache/hama/HamaAdminImpl.java
URL: http://svn.apache.org/viewvc/incubator/hama/trunk/src/java/org/apache/hama/HamaAdminImpl.java?rev=744029&r1=744028&r2=744029&view=diff
==============================================================================
--- incubator/hama/trunk/src/java/org/apache/hama/HamaAdminImpl.java (original)
+++ incubator/hama/trunk/src/java/org/apache/hama/HamaAdminImpl.java Fri Feb 13 08:32:27 2009
@@ -148,15 +148,15 @@
     matrix.deleteAll(Constants.METADATA, Constants.ALIASENAME);
   }
 
+  /**
+   * we remove the aliase entry store in Admin table, and clear the aliase info
+   * store in matrix table. And check the reference of the matrix table:
+   * 
+   * 1) if the reference of the matrix table is zero: we delete the table. 
+   * 2) if the reference of the matrix table is not zero: we let the matrix who still
+   * reference the table to do the garbage collection.
+   */
   public void delete(String matrixName) throws IOException {
-    // we remove the aliase entry store in Admin table, and
-    // clear the aliase info store in matrix table.
-    // And check the reference of the matrix table:
-    // 1) if the reference of the matrix table is zero:
-    // we delete the table.
-    // 2) if the reference of the matrix table is not zero:
-    // we let the matrix who still reference the table to
-    // do the garbage collection.
     if (matrixExists(matrixName)) {
       String tablename = getPath(matrixName);
 
@@ -164,7 +164,7 @@
       removeEntry(matrixName);
 
       if (tablename == null) { // a matrixName point to a null table. we delete
-                                // the entry.
+        // the entry.
         return;
       }