You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@singa.apache.org by "wangwei (JIRA)" <ji...@apache.org> on 2018/03/05 05:35:00 UTC
[jira] [Created] (SINGA-341) Add stride field to Tensor class
wangwei created SINGA-341:
-----------------------------
Summary: 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
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)