[ 
https://issues.apache.org/jira/browse/MAHOUT-1885?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15824865#comment-15824865
 ] 

ASF GitHub Bot commented on MAHOUT-1885:
----------------------------------------

Github user andrewpalumbo commented on a diff in the pull request:

    https://github.com/apache/mahout/pull/261#discussion_r96336102
  
    --- Diff: 
viennacl/src/main/scala/org/apache/mahout/viennacl/opencl/GPUMMul.scala ---
    @@ -0,0 +1,455 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one or more
    + * contributor license agreements.  See the NOTICE file distributed with
    + * this work for additional information regarding copyright ownership.
    + * The ASF licenses this file to You under the Apache License, Version 2.0
    + * (the "License"); you may not use this file except in compliance with
    + * the License.  You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +
    +package org.apache.mahout.viennacl.opencl
    +
    +import org.apache.mahout.logging._
    +import org.apache.mahout.math
    +import org.apache.mahout.math._
    +import org.apache.mahout.math.flavor.{BackEnum, TraversingStructureEnum}
    +import org.apache.mahout.math.function.Functions
    +import org.apache.mahout.math.scalabindings.RLikeOps._
    +import org.apache.mahout.math.scalabindings._
    +import org.apache.mahout.viennacl.opencl.javacpp.Functions._
    +import org.apache.mahout.viennacl.opencl.javacpp.LinalgFunctions._
    +import org.apache.mahout.viennacl.opencl.javacpp.{CompressedMatrix, 
Context, DenseRowMatrix}
    +
    +import scala.collection.JavaConversions._
    +
    +object GPUMMul extends MMBinaryFunc {
    +
    +  private final implicit val log = getLog(GPUMMul.getClass)
    +
    +  override def apply(a: Matrix, b: Matrix, r: Option[Matrix]): Matrix = {
    +
    +    require(a.ncol == b.nrow, "Incompatible matrix sizes in matrix 
multiplication.")
    +
    +    val (af, bf) = (a.getFlavor, b.getFlavor)
    +    val backs = (af.getBacking, bf.getBacking)
    +    val sd = (af.getStructure, math.scalabindings.densityAnalysis(a), 
bf.getStructure, densityAnalysis(b))
    +
    +    
    +    try {
    +
    +      val alg: MMulAlg = backs match {
    +
    +        // Both operands are jvm memory backs.
    +        case (BackEnum.JVMMEM, BackEnum.JVMMEM) ⇒
    --- End diff --
    
    Agreed (obviously this is an old comment due to my underestimation of what 
a move across the country and a new job can do to you +  a nephew destroying my 
Mahout machine)- I don't like keeping both modules around but, quoting myself 
from 6 months ago:
    
    > We may be able to get away with only one Viennacl module by setting an 
environment variable and checking for it in Context.scala if it exists we 
"#define VIENNACL_WITH_OPENCL" which will make the module OpenMP only. The 
Problem With This Is That We Can't Test GPU in this module.. without checking 
for the environment var.
    
    I guess the above is a possibility, but not especially simple.  For no, 
though all tests are passing.. though i am seeing that some of the eg. spark 
tests are not running `GPUMmul` when Built for `-Pviennacl`.  So I may need to 
fix some imports somewhere.  
    
    Either way I 'd like to get the base Architecture nailed down with this 
release.


> Inital Implementation of VCL Bindings
> -------------------------------------
>
>                 Key: MAHOUT-1885
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-1885
>             Project: Mahout
>          Issue Type: Improvement
>          Components: Math
>    Affects Versions: 0.12.2
>            Reporter: Andrew Palumbo
>            Assignee: Andrew Palumbo
>             Fix For: 0.13.0
>
>
> Push a working experimental branch of VCL bindings into master.  There is 
> still a lot of work to be done.  All tests are passing, At the moment there 
> am opening this JIRA mostly to get a number for PR and to test profiles 
> against on travis. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to