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/06/08 08:31:15 UTC

svn commit: r782540 - in /incubator/hama/trunk/src: examples/org/apache/hama/examples/ java/org/apache/hama/ java/org/apache/hama/mapred/ java/org/apache/hama/util/ test/org/apache/hama/mapred/ test/org/apache/hama/util/

Author: edwardyoon
Date: Mon Jun  8 06:31:10 2009
New Revision: 782540

URL: http://svn.apache.org/viewvc?rev=782540&view=rev
Log:
Fix random matrix bug

Modified:
    incubator/hama/trunk/src/examples/org/apache/hama/examples/RandomMatrix.java
    incubator/hama/trunk/src/java/org/apache/hama/DenseMatrix.java
    incubator/hama/trunk/src/java/org/apache/hama/SparseMatrix.java
    incubator/hama/trunk/src/java/org/apache/hama/mapred/RandomMatrixMap.java
    incubator/hama/trunk/src/java/org/apache/hama/util/RandomVariable.java
    incubator/hama/trunk/src/test/org/apache/hama/mapred/TestRandomMatrixMapReduce.java
    incubator/hama/trunk/src/test/org/apache/hama/util/TestRandomVariable.java

Modified: incubator/hama/trunk/src/examples/org/apache/hama/examples/RandomMatrix.java
URL: http://svn.apache.org/viewvc/incubator/hama/trunk/src/examples/org/apache/hama/examples/RandomMatrix.java?rev=782540&r1=782539&r2=782540&view=diff
==============================================================================
--- incubator/hama/trunk/src/examples/org/apache/hama/examples/RandomMatrix.java (original)
+++ incubator/hama/trunk/src/examples/org/apache/hama/examples/RandomMatrix.java Mon Jun  8 06:31:10 2009
@@ -32,7 +32,7 @@
       System.out
           .println("rand [-m maps] [-r reduces] <rows> <columns> <density> <matrix_name>");
       System.out
-      .println("ex) rand -m 10 -r 10 2000 2000 30% matrixA");
+      .println("ex) rand -m 10 -r 10 2000 2000 30.5% matrixA");
       System.exit(-1);
     } else {
       parseArgs(args);
@@ -40,7 +40,7 @@
 
     int row = Integer.parseInt(ARGS.get(0));
     int column = Integer.parseInt(ARGS.get(1));
-    int percent = Integer.parseInt(ARGS.get(2).substring(0, ARGS.get(2).length()-1));
+    double percent = Double.parseDouble(ARGS.get(2).substring(0, ARGS.get(2).length()-1));
     
     Matrix a;
     if(percent == 100)

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=782540&r1=782539&r2=782540&view=diff
==============================================================================
--- incubator/hama/trunk/src/java/org/apache/hama/DenseMatrix.java (original)
+++ incubator/hama/trunk/src/java/org/apache/hama/DenseMatrix.java Mon Jun  8 06:31:10 2009
@@ -245,7 +245,7 @@
     jobConf.setSpeculativeExecution(false);
     jobConf.setInt("matrix.column", n);
     jobConf.set("matrix.type", TABLE_PREFIX);
-    jobConf.setInt("matrix.density", 100);
+    jobConf.set("matrix.density", "100");
     
     jobConf.setInputFormat(SequenceFileInputFormat.class);
     final FileSystem fs = FileSystem.get(jobConf);

Modified: incubator/hama/trunk/src/java/org/apache/hama/SparseMatrix.java
URL: http://svn.apache.org/viewvc/incubator/hama/trunk/src/java/org/apache/hama/SparseMatrix.java?rev=782540&r1=782539&r2=782540&view=diff
==============================================================================
--- incubator/hama/trunk/src/java/org/apache/hama/SparseMatrix.java (original)
+++ incubator/hama/trunk/src/java/org/apache/hama/SparseMatrix.java Mon Jun  8 06:31:10 2009
@@ -109,7 +109,7 @@
     return rand;
   }
   
-  public static SparseMatrix random_mapred(HamaConfiguration conf, int m, int n, int percent) throws IOException {
+  public static SparseMatrix random_mapred(HamaConfiguration conf, int m, int n, double percent) throws IOException {
     SparseMatrix rand = new SparseMatrix(conf, m, n);
     LOG.info("Create the " + m + " * " + n + " random matrix : "
         + rand.getPath());
@@ -131,7 +131,7 @@
     jobConf.setSpeculativeExecution(false);
     jobConf.setInt("matrix.column", n);
     jobConf.set("matrix.type", TABLE_PREFIX);
-    jobConf.setInt("matrix.density", percent);
+    jobConf.set("matrix.density", String.valueOf(percent));
 
     jobConf.setInputFormat(SequenceFileInputFormat.class);
     final FileSystem fs = FileSystem.get(jobConf);

Modified: incubator/hama/trunk/src/java/org/apache/hama/mapred/RandomMatrixMap.java
URL: http://svn.apache.org/viewvc/incubator/hama/trunk/src/java/org/apache/hama/mapred/RandomMatrixMap.java?rev=782540&r1=782539&r2=782540&view=diff
==============================================================================
--- incubator/hama/trunk/src/java/org/apache/hama/mapred/RandomMatrixMap.java (original)
+++ incubator/hama/trunk/src/java/org/apache/hama/mapred/RandomMatrixMap.java Mon Jun  8 06:31:10 2009
@@ -40,7 +40,9 @@
 public class RandomMatrixMap extends MapReduceBase implements
     Mapper<IntWritable, IntWritable, IntWritable, MapWritable> {
   static final Logger LOG = Logger.getLogger(RandomMatrixMap.class);
-  protected int column, density;
+  protected int column;
+  protected double density;
+  protected int minNums;
   protected String type;
   protected Vector vector = new DenseVector();
 
@@ -49,16 +51,16 @@
       OutputCollector<IntWritable, MapWritable> output, Reporter report)
       throws IOException {
     if (type.equals("SparseMatrix")) {
-      ((SparseVector) vector).clear();
       for (int i = key.get(); i <= value.get(); i++) {
-        for (int j = 0; j < column; j++) {
-            ((SparseVector) vector).set(j, RandomVariable.rand(density));
+        ((SparseVector) vector).clear();
+        for (int j = 0; j < minNums; j++) {
+          ((SparseVector) vector).set(RandomVariable.randInt(0, column - 1), RandomVariable.rand());
         }
         output.collect(new IntWritable(i), vector.getEntries());
       }
     } else {
-      ((DenseVector) vector).clear();
       for (int i = key.get(); i <= value.get(); i++) {
+        ((DenseVector) vector).clear();
         for (int j = 0; j < column; j++) {
           ((DenseVector) vector).set(j, RandomVariable.rand());
         }
@@ -69,7 +71,13 @@
 
   public void configure(JobConf job) {
     column = job.getInt("matrix.column", 0);
-    density = job.getInt("matrix.density", 100);
+    density = Double.parseDouble(job.get("matrix.density"));
+    
+    double vv = (column/100.0) * density;
+    minNums = Math.round((float) vv);
+    if(minNums == 0)
+      minNums = 1;
+    
     type = job.get("matrix.type");
     if (type.equals("SparseMatrix"))
       vector = new SparseVector();

Modified: incubator/hama/trunk/src/java/org/apache/hama/util/RandomVariable.java
URL: http://svn.apache.org/viewvc/incubator/hama/trunk/src/java/org/apache/hama/util/RandomVariable.java?rev=782540&r1=782539&r2=782540&view=diff
==============================================================================
--- incubator/hama/trunk/src/java/org/apache/hama/util/RandomVariable.java (original)
+++ incubator/hama/trunk/src/java/org/apache/hama/util/RandomVariable.java Mon Jun  8 06:31:10 2009
@@ -38,23 +38,6 @@
   }
 
   /**
-   * Generate a random number
-   * 
-   * @param density percentage of the non-zero
-   * @return a double 0 or between 0 and 1
-   */
-  public static double rand(int density) {
-    int[] prob = new int[100];
-    double x = Math.random();
-    
-    for(int i = 0; i < density; i++) {
-      prob[i] = 1;
-    }
-
-    return (prob[randInt(0, 99)] == 0) ? 0 : x;
-  }
-
-  /**
    * Generate a random integer.
    * 
    * @param i0 min of the random variable.

Modified: incubator/hama/trunk/src/test/org/apache/hama/mapred/TestRandomMatrixMapReduce.java
URL: http://svn.apache.org/viewvc/incubator/hama/trunk/src/test/org/apache/hama/mapred/TestRandomMatrixMapReduce.java?rev=782540&r1=782539&r2=782540&view=diff
==============================================================================
--- incubator/hama/trunk/src/test/org/apache/hama/mapred/TestRandomMatrixMapReduce.java (original)
+++ incubator/hama/trunk/src/test/org/apache/hama/mapred/TestRandomMatrixMapReduce.java Mon Jun  8 06:31:10 2009
@@ -39,7 +39,7 @@
         assertTrue(rand.get(i, j) > -1);
       }
     }
-    
+
     rand.close();
     
     SparseMatrix rand2 = SparseMatrix.random_mapred(conf, 20, 20, 30);

Modified: incubator/hama/trunk/src/test/org/apache/hama/util/TestRandomVariable.java
URL: http://svn.apache.org/viewvc/incubator/hama/trunk/src/test/org/apache/hama/util/TestRandomVariable.java?rev=782540&r1=782539&r2=782540&view=diff
==============================================================================
--- incubator/hama/trunk/src/test/org/apache/hama/util/TestRandomVariable.java (original)
+++ incubator/hama/trunk/src/test/org/apache/hama/util/TestRandomVariable.java Mon Jun  8 06:31:10 2009
@@ -40,13 +40,6 @@
       double result = RandomVariable.rand();
       assertTrue(result >= 0.0d && result <= 1.0);
     }
-    
-    int nonZero = 0;
-    for (int i = 0; i < COUNT; i++) {
-      if(RandomVariable.rand(70) > 0)
-        nonZero++;
-    }
-    assertTrue((COUNT/2) < nonZero);
   }
 
   /**