Andrew Palumbo created MAHOUT-1960:
--------------------------------------

             Summary: Flipped sign in the SparseSparseDrmTimer.mscala causes 
Desnse Matrix multiplication
                 Key: MAHOUT-1960
                 URL: https://issues.apache.org/jira/browse/MAHOUT-1960
             Project: Mahout
          Issue Type: Bug
    Affects Versions: 0.13.0
            Reporter: Andrew Palumbo
            Assignee: Andrew Palumbo
            Priority: Blocker
             Fix For: 0.13.0


In {{SparseSparseDrmTimer.mscala}} with the signature: 
{code}
 def timeSparseDRMMMul(m: Int, n: Int, s: Int, para: Int, pctDense: Double = 
.20, seed: Long = 1234L): Long = {
{code}
the {{pctDense}} argument indicates the percent of nonZero elements in the 
matrix. 

As is the code to produce a random DRM for testing is as follows:

{code}
  val drmA = drmParallelizeEmpty(m , s, para).mapBlock(){
       case (keys,block:Matrix) =>
         val R =  scala.util.Random
         R.setSeed(seed)
         val blockB = new SparseRowMatrix(block.nrow, block.ncol) 
         blockB := {x => if (R.nextDouble > pctDense) R.nextDouble else x }
       (keys -> blockB)
}
{code)

The greater than sign in line:
{code}
         blockB := {x => if (R.nextDouble > pctDense) R.nextDouble else x }
{code}

 should be less than; i.e.:
{code}
         blockB := {x => if (R.nextDouble < pctDense) R.nextDouble else x }
{code}

This incorrect sign produces matrices of Incorrect density and can cause OOM 
errors.
 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to