You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@singa.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2018/06/30 13:31:00 UTC

[jira] [Commented] (SINGA-341) Add stride field to Tensor class

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

ASF subversion and git services commented on SINGA-341:
-------------------------------------------------------

Commit f9e7caaf5bf91bd3236b8d1532b192d4416999e6 in incubator-singa's branch refs/heads/master from Vaan Ng
[ https://git-wip-us.apache.org/repos/asf?p=incubator-singa.git;h=f9e7caa ]

SINGA-370 Improvement to tensor reshape and various misc. changes related to SINGA-341 and 351

converted some upper-case functions to lower-case

fixed return types for some non-void cuda functions

added check_cudnn to check for CUDNN_STATUS_SUCCESS for all cudnn functions

removal of set_strides usage in cuda file and replacement with additional cudnn transform functions

updated all unary and binary cuda functions for transform

updated reshape function to return tensor

fixed FromProto function by removing original reshape

change to reshape to support in-place operations as well as return new tensor

added constructors for Transform function (GenUnaryTensorFn) similar to cudnn's transform function

updated tensor_math.h for transform

added Transform function for cpp and cuda

added Transform to reshape instead of add


> Add stride field to Tensor class
> --------------------------------
>
>                 Key: SINGA-341
>                 URL: https://issues.apache.org/jira/browse/SINGA-341
>             Project: Singa
>          Issue Type: Improvement
>            Reporter: wangwei
>            Priority: Major
>
> The current Tensor class stores data in a contiguous chunk of memory. It is a very simple implementation. However, it is difficult to support some operations. For example,
> {code}
> Tensor a = b.transpose()
> Tensor d = a + c
> {code}
>  
> Like other tensor implementation (e.g. numpy), Tensor a and b shares memory. The addition operation has to do real transpose, which incurs some overhead. With stride, we can avoid the transpose operation. Instead, we enumerate each element of a and c using the index, shape and stride information. https://stackoverflow.com/questions/32034237/how-does-numpys-transpose-method-permute-the-axes-of-an-array
> More over, stride is necessary for broadcasting operations. [https://stackoverflow.com/questions/39626233/how-did-numpy-implement-multi-dimensional-broadcasting.]
>  
> Code in src/core/tensor.cc tensor_math_cpp.h tensor_math_cuda.h needs modification when stride is added as a field/member of Tensor.



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