add more detailed comment

wangkuiyi-patch-1
qiaolongfei 8 years ago
parent 7ebef493d5
commit 2e48ab623e

@ -30,25 +30,46 @@ class MergeIdsOpMaker : public framework::OpProtoAndCheckerMaker {
AddComment(R"DOC( AddComment(R"DOC(
Merge multi LoDTensor's into one according to Ids's shard num. Merge multi LoDTensor's into one according to Ids's shard num.
The values in the input LoDTensor are lookuped from the output of split_ids_op
split_ids_op -> prefetch_op -> merge_ids_op
merge_ids_op should be used after split_ids_op and prefetch_op, split_ids_op
will split input Ids into multiple tensors according to Id's shard number.
prefetch_op will send them to parameter server to prefetch embedding value
back. During split, the order of ids is disordered. In merge_ids_op we use
the original Ids to restore the order of the fetched embedding value and
also pass the lod information to the merged output.
Example: Example:
Input:
Ids = [1,2,3,4,5,6] Ids = [1,2,3,4,5,6] # 3 shared
X0 = [[0.1 0.2] # 3
[0.2 0.3]] # 6 split_ids_op ->
X1 = [[0.3 0.4] # 1
[0.4 0.5]] # 4 Id0 = [3, 6]
X2 = [[0.5 0.6] # 2 Id1 = [1, 4]
[0.6 0.7]] # 5 Id2 = [2, 5]
Output: prefetch_op ->
Out = [[0.3 0.4] # 1
[0.5 0.6] # 2 X0 = [[0.3 0.3] # 3
[0.1 0.2] # 3 [0.6 0.6]] # 6
[0.4 0.5] # 4 X1 = [[0.1 0.1] # 1
[0.6 0.7] # 5 [0.4 0.4]] # 4
[0.2 0.3]] # 6 X2 = [[0.2 0.2] # 2
[0.5 0.5]] # 5
merge_ids_op ->
Out = [[0.1 0.1] # 1
[0.2 0.2] # 2
[0.3 0.3] # 3
[0.4 0.4] # 4
[0.5 0.5] # 5
[0.6 0.6]] # 6
)DOC"); )DOC");
} }
}; };

Loading…
Cancel
Save