[ 
https://issues.apache.org/jira/browse/SYSTEMML-2131?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matthias Boehm updated SYSTEMML-2131:
-------------------------------------
    Description: 
The functions bias_add and bias_mult (see 
http://apache.github.io/systemml/dml-language-reference for the semantics) are 
language constructs and operators that aim to improve performance by fusing 
element-wise operations with the replication of bias terms. For example, 
bias_add is defined as follows:
{code}
ones = matrix(1, rows=1, cols=height*width);
output = input + matrix(bias %*% ones, rows=1, cols=numChannels*height*width)
{code}

The code generation frameworks will makes such custom operators obsolete. 
However, because bias_add and bias_mult are mapped to specific 
{{ConvolutionOp}} instances they are not yet supported by the codegen framework.

In detail this task entails:
1) Create new cell template tests in {{functions.codegen.CellwiseTmplTest}} for 
both functions.

2) Modify the open/merge/close conditions for cell templates in 
{{codegen.template.TemplateCell}} 

3) Create a new codegen primitive for a mapped index lookups (for each cell in 
input we want to access a specific cell in the bias vector)

4) Modify the CPlan construction in {{codegen.template.TemplateCell}} to create 
binary plus or multiply and the mapped index lookup for all ConvolutionOp 
instances of type {{BIAS_ADD}} or {{BIAS_MULTIPLY}}


> Add support for bias_add and bias_mult
> --------------------------------------
>
>                 Key: SYSTEMML-2131
>                 URL: https://issues.apache.org/jira/browse/SYSTEMML-2131
>             Project: SystemML
>          Issue Type: Sub-task
>            Reporter: Matthias Boehm
>            Priority: Major
>
> The functions bias_add and bias_mult (see 
> http://apache.github.io/systemml/dml-language-reference for the semantics) 
> are language constructs and operators that aim to improve performance by 
> fusing element-wise operations with the replication of bias terms. For 
> example, bias_add is defined as follows:
> {code}
> ones = matrix(1, rows=1, cols=height*width);
> output = input + matrix(bias %*% ones, rows=1, cols=numChannels*height*width)
> {code}
> The code generation frameworks will makes such custom operators obsolete. 
> However, because bias_add and bias_mult are mapped to specific 
> {{ConvolutionOp}} instances they are not yet supported by the codegen 
> framework.
> In detail this task entails:
> 1) Create new cell template tests in {{functions.codegen.CellwiseTmplTest}} 
> for both functions.
> 2) Modify the open/merge/close conditions for cell templates in 
> {{codegen.template.TemplateCell}} 
> 3) Create a new codegen primitive for a mapped index lookups (for each cell 
> in input we want to access a specific cell in the bias vector)
> 4) Modify the CPlan construction in {{codegen.template.TemplateCell}} to 
> create binary plus or multiply and the mapped index lookup for all 
> ConvolutionOp instances of type {{BIAS_ADD}} or {{BIAS_MULTIPLY}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to