提交 8a4bd171 编写于 作者: F fengjiayi

add brief explanation of DDim usage

上级 f7396293
...@@ -48,7 +48,9 @@ int main() ...@@ -48,7 +48,9 @@ int main()
} }
``` ```
In Majel, `DDimVar` is derived from `Dim`, `DArrayVar` is from `Array`. In Majel, `DDimVar` is derived from `Dim`, `DArrayVar` is from
`Array`.
```c++ ```c++
template<int i> template<int i>
...@@ -68,8 +70,8 @@ private: ...@@ -68,8 +70,8 @@ private:
Dim<D> stride_; Dim<D> stride_;
T* ptr_; T* ptr_;
}; };
``` ```
```c++ ```c++
typedef boost::variant<GpuPlace, CpuPlace> Place; typedef boost::variant<GpuPlace, CpuPlace> Place;
typedef boost::variant<Dim<1>, Dim<2>, Dim<3>, Dim<4>, Dim<5>, typedef boost::variant<Dim<1>, Dim<2>, Dim<3>, Dim<4>, Dim<5>,
...@@ -93,6 +95,20 @@ typedef boost::variant< ...@@ -93,6 +95,20 @@ typedef boost::variant<
Because `variant` may be thought of as "multi-type, single value", we can utilize it to implement unified interfaces for PaddlePaddle. Because `variant` may be thought of as "multi-type, single value", we can utilize it to implement unified interfaces for PaddlePaddle.
`DDim` plays two kinds of roles in Majel. First, it is used to indicate the size of a tensor. For example, we can construct a new `DArray` by following way:
```c++
DArray arr = make_darray(make_ddim({2,3}), 0.0f);
```
It means that `arr` will be a two-dimension tensor, or a matrix. The size of its first dimension is 2 and the second is 3. All the element value of `arr` will be initialized as 0.0 .
The second meaning of `DDim` is tensor index. For example, if we want to access the value in the 1st row and 2nd column of `arr` and set it to 1.0, we can do like this:
```c++
arr[make_ddim({0, 1})] = 1.0
```
## implement Tensor in Paddle ## implement Tensor in Paddle
Before writing code, please make sure you already look through Majel Source Code and grabbed the design philosophy of `DArray` in Majel. Before writing code, please make sure you already look through Majel Source Code and grabbed the design philosophy of `DArray` in Majel.
...@@ -113,8 +129,8 @@ To assign subtasks to our colleagues, we have to discuss how to divide it to ind ...@@ -113,8 +129,8 @@ To assign subtasks to our colleagues, we have to discuss how to divide it to ind
- [ ] 3. Re-implement `Dim`. - [ ] 3. Re-implement `Dim`.
`Dim` is an excellent implementation in Majel. `Dim` is an excellent implementation in Majel.
> ??? > ???
- [ ] 4. Re-implement `Array/Tensor`. - [ ] 4. Re-implement `Array/Tensor`.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册