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

Nakul Jindal commented on SYSTEMML-1216:
----------------------------------------

Absolutely!
Good work with the local svd implementation.
Please also consider opening a PR for documenting the {{svd}} function at 
http://apache.github.io/systemml/dml-language-reference#linear-algebra-built-in-functions
To do so, please update 
https://github.com/apache/systemml/blob/master/docs/dml-language-reference.md


Here are some resource to get you started:
SVD documentation from cusolver:
http://docs.nvidia.com/cuda/cusolver/index.html#svd_examples

Example of adding the solve function for GPU:
https://github.com/apache/systemml/pull/476
(Some stuff has been updated since that PR in the GPU infrastructure).

The basic steps to adding a GPU implementation are as follows:
1. Enable GPU implementation from the HOPS level
Pick the appropriate class for your function ({{svd}}) and enable it from the 
{{isGPUEnabled}} function. 
https://github.com/apache/systemml/blob/master/src/main/java/org/apache/sysml/hops/UnaryOp.java#L109

2. Adjust the appropriate cost if applicable in CostEstimator.
https://github.com/apache/systemml/blob/master/src/main/java/org/apache/sysml/hops/cost/CostEstimatorStaticRuntime.java#L997

3. Change GPUInstructionParser to have svd
{{src/main/java/org/apache/sysml/runtime/instructions/GPUInstructionParser.java}}

4. Make a new class class or use one of the existing classes in the 
{{src/main/java/org/apache/sysml/runtime/instructions/gpu}} package which most 
appropriately fits {{svd}}

5. Add a GPU implementation for {{svd}} in 
{{src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixCUDA.java}}

6. Add tests in the {{src/test/java/org/apache/sysml/test/gpu}} package. Either 
by adding a new class or adding the test to an existing class.

7. Thoroughly document any and all functions you add. 




> implement local svd function
> ----------------------------
>
>                 Key: SYSTEMML-1216
>                 URL: https://issues.apache.org/jira/browse/SYSTEMML-1216
>             Project: SystemML
>          Issue Type: New Feature
>            Reporter: Imran Younus
>            Assignee: Janardhan
>         Attachments: svd.txt
>
>
> SystemML currently provides several local matrix decompositions (qr(), lu(), 
> cholesky()). But local version of svd is missing. This is also needed to 
> scalable SVD implementation.
> Also, implement local {{svd()}} function with {{cusolver}}.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to