Skip to content

Commit 5a9987a

Browse files
committed
Fix bugs in lizhao's code
1 parent d34322e commit 5a9987a

File tree

3 files changed

+24
-15
lines changed

3 files changed

+24
-15
lines changed

paddle/capi/Arguments.cpp

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ int PDArgsSetIds(PD_Arguments args, uint64_t ID, PD_IVector ids) {
8787
int PDArgsSetSequenceStartPos(PD_Arguments args,
8888
uint64_t ID,
8989
PD_IVector seqPos) {
90-
//! TODO(lizhao): Complete this method.
9190
if (args == nullptr || seqPos == nullptr) return kPD_NULLPTR;
9291
auto iv = paddle::capi::cast<paddle::capi::CIVector>(seqPos);
9392
if (iv->vec == nullptr) return kPD_NULLPTR;
@@ -101,40 +100,37 @@ int PDArgsSetSequenceStartPos(PD_Arguments args,
101100
int PDArgsSetSubSequenceStartPos(PD_Arguments args,
102101
uint64_t ID,
103102
PD_IVector subSeqPos) {
104-
//! TODO(lizhao): Complete this method.
105103
if (args == nullptr || subSeqPos == nullptr) return kPD_NULLPTR;
106104
auto iv = paddle::capi::cast<paddle::capi::CIVector>(subSeqPos);
107105
if (iv->vec == nullptr) return kPD_NULLPTR;
108106
auto a = castArg(args);
109107
if (ID >= a->args.size()) return kPD_OUT_OF_RANGE;
110-
a->args[ID].sequenceStartPositions =
108+
a->args[ID].subSequenceStartPositions =
111109
std::make_shared<paddle::ICpuGpuVector>(iv->vec);
112110
return kPD_NO_ERROR;
113111
}
114112

115113
int PDArgsGetSequenceStartPos(PD_Arguments args,
116114
uint64_t ID,
117115
PD_IVector seqPos) {
118-
//! TODO(lizhao): Complete this method.
119116
if (args == nullptr || seqPos == nullptr) return kPD_NULLPTR;
120117
auto iv = castIVec(seqPos);
121118
auto a = castArg(args);
122119
if (ID >= a->args.size()) return kPD_OUT_OF_RANGE;
123-
std::make_shared<paddle::ICpuGpuVector>(iv->vec) =
124-
a->args[ID].sequenceStartPositions;
120+
paddle::Argument& arg = a->args[ID];
121+
iv->vec = arg.sequenceStartPositions->getMutableVector(false);
125122
return kPD_NO_ERROR;
126123
}
127124

128125
int PDArgsGetSubSequenceStartPos(PD_Arguments args,
129126
uint64_t ID,
130127
PD_IVector subSeqPos) {
131-
//! TODO(lizhao): Complete this method.
132128
if (args == nullptr || subSeqPos == nullptr) return kPD_NULLPTR;
133129
auto iv = castIVec(subSeqPos);
134130
auto a = castArg(args);
135131
if (ID >= a->args.size()) return kPD_OUT_OF_RANGE;
136-
std::make_shared<paddle::ICpuGpuVector>(iv->vec) =
137-
a->args[ID].sequenceStartPositions;
132+
paddle::Argument& arg = a->args[ID];
133+
iv->vec = arg.subSequenceStartPositions->getMutableVector(false);
138134
return kPD_NO_ERROR;
139135
}
140136
}

paddle/capi/Vector.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ int PDIVecCreateNone(PD_IVector* ivec) {
2727
}
2828

2929
int PDIVectorCreate(PD_IVector* ivec, int* array, uint64_t size, bool copy) {
30-
//! TODO(lizhao): Complete this method.
3130
if (ivec == nullptr) return kPD_NULLPTR;
3231
auto ptr = new paddle::capi::CIVector();
3332
if (copy) {
@@ -55,7 +54,6 @@ int PDIVectorGet(PD_IVector ivec, int** buffer) {
5554
}
5655

5756
int PDIVectorResize(PD_IVector ivec, uint64_t size) {
58-
//! TODO(lizhao): Complete this method.
5957
if (ivec == nullptr) return kPD_NULLPTR;
6058
auto v = cast<paddle::capi::CIVector>(ivec);
6159
if (v->vec == nullptr) return kPD_NULLPTR;
@@ -64,7 +62,6 @@ int PDIVectorResize(PD_IVector ivec, uint64_t size) {
6462
}
6563

6664
int PDIVectorGetSize(PD_IVector ivec, uint64_t* size) {
67-
//! TODO(lizhao): Complete this method.
6865
if (ivec == nullptr) return kPD_NULLPTR;
6966
auto v = cast<paddle::capi::CIVector>(ivec);
7067
if (v->vec == nullptr) return kPD_NULLPTR;

paddle/capi/tests/test_Arguments.cpp

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,20 +89,36 @@ TEST(CAPIArguments, ids) {
8989
ASSERT_EQ(kPD_NO_ERROR, PDArgsDestroy(args));
9090
}
9191

92-
TEST(CAPIArguments, Sequence) {
92+
template <typename T1, typename T2>
93+
void testSequenceHelper(T1 setter, T2 getter) {
9394
PD_Arguments args;
9495
ASSERT_EQ(kPD_NO_ERROR, PDArgsCreateNone(&args));
9596
ASSERT_EQ(kPD_NO_ERROR, PDArgsResize(args, 1));
9697

9798
PD_IVector ivec;
9899
int array[3] = {1, 2, 3};
99100
ASSERT_EQ(kPD_NO_ERROR, PDIVectorCreate(&ivec, array, 3, true));
100-
ASSERT_EQ(kPD_NO_ERROR, PDArgsSetSequenceStartPos(args, 0, ivec));
101+
ASSERT_EQ(kPD_NO_ERROR, setter(args, 0, ivec));
101102

102103
PD_IVector val;
103104
ASSERT_EQ(kPD_NO_ERROR, PDIVecCreateNone(&val));
104-
ASSERT_EQ(kPD_NO_ERROR, PDArgsGetSequenceStartPos(args, 0, val));
105+
ASSERT_EQ(kPD_NO_ERROR, getter(args, 0, val));
106+
uint64_t size;
107+
ASSERT_EQ(kPD_NO_ERROR, PDIVectorGetSize(val, &size));
108+
109+
int* rawBuf;
110+
ASSERT_EQ(kPD_NO_ERROR, PDIVectorGet(val, &rawBuf));
111+
for (size_t i = 0; i < size; ++i) {
112+
ASSERT_EQ(array[i], rawBuf[i]);
113+
}
114+
105115
ASSERT_EQ(kPD_NO_ERROR, PDIVecDestroy(ivec));
106116
ASSERT_EQ(kPD_NO_ERROR, PDIVecDestroy(val));
107117
ASSERT_EQ(kPD_NO_ERROR, PDArgsDestroy(args));
108118
}
119+
120+
TEST(CAPIArguments, Sequence) {
121+
testSequenceHelper(PDArgsSetSequenceStartPos, PDArgsGetSequenceStartPos);
122+
testSequenceHelper(PDArgsSetSubSequenceStartPos,
123+
PDArgsGetSubSequenceStartPos);
124+
}

0 commit comments

Comments
 (0)