parent
106620ea06
commit
fdb64acc50
@ -1,49 +1,61 @@
|
|||||||
#include "PaddleCAPI.h"
|
#include "PaddleCAPI.h"
|
||||||
#include "PaddleCAPIPrivate.h"
|
#include "PaddleCAPIPrivate.h"
|
||||||
|
|
||||||
#define cast(v) paddle::capi::cast<paddle::capi::CArguments>(v)
|
using paddle::capi::cast;
|
||||||
|
|
||||||
|
#define castArg(v) cast<paddle::capi::CArguments>(v)
|
||||||
|
#define castIVec(v) cast<paddle::capi::CIVector>(v)
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
int PDArgsCreateNone(PD_Arguments* args) {
|
int PDArgsCreateNone(PD_Arguments* args) {
|
||||||
auto ptr = new paddle::capi::CArguments();
|
auto ptr = new paddle::capi::CArguments();
|
||||||
*args = ptr;
|
*args = ptr;
|
||||||
return PD_NO_ERROR;
|
return kPD_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PDArgsDestroy(PD_Arguments args) {
|
int PDArgsDestroy(PD_Arguments args) {
|
||||||
if (args == nullptr) return PD_NULLPTR;
|
if (args == nullptr) return kPD_NULLPTR;
|
||||||
delete cast(args);
|
delete castArg(args);
|
||||||
return PD_NO_ERROR;
|
return kPD_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PDArgsGetSize(PD_Arguments args, uint64_t* size) {
|
int PDArgsGetSize(PD_Arguments args, uint64_t* size) {
|
||||||
if (args == nullptr || size == nullptr) return PD_NULLPTR;
|
if (args == nullptr || size == nullptr) return kPD_NULLPTR;
|
||||||
*size = cast(args)->args.size();
|
*size = castArg(args)->args.size();
|
||||||
return PD_NO_ERROR;
|
return kPD_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PDArgsResize(PD_Arguments args, uint64_t size) {
|
int PDArgsResize(PD_Arguments args, uint64_t size) {
|
||||||
if (args == nullptr) return PD_NULLPTR;
|
if (args == nullptr) return kPD_NULLPTR;
|
||||||
cast(args)->args.resize(size);
|
castArg(args)->args.resize(size);
|
||||||
return PD_NO_ERROR;
|
return kPD_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PDArgsSetValue(PD_Arguments args, uint64_t ID, PD_Matrix mat) {
|
int PDArgsSetValue(PD_Arguments args, uint64_t ID, PD_Matrix mat) {
|
||||||
if (args == nullptr || mat == nullptr) return PD_NULLPTR;
|
if (args == nullptr || mat == nullptr) return kPD_NULLPTR;
|
||||||
auto m = paddle::capi::cast<paddle::capi::CMatrix>(mat);
|
auto m = paddle::capi::cast<paddle::capi::CMatrix>(mat);
|
||||||
if (m->mat == nullptr) return PD_NULLPTR;
|
if (m->mat == nullptr) return kPD_NULLPTR;
|
||||||
auto a = cast(args);
|
auto a = castArg(args);
|
||||||
if (ID >= a->args.size()) return PD_OUT_OF_RANGE;
|
if (ID >= a->args.size()) return kPD_OUT_OF_RANGE;
|
||||||
a->args[ID].value = m->mat;
|
a->args[ID].value = m->mat;
|
||||||
return PD_NO_ERROR;
|
return kPD_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PDArgsGetValue(PD_Arguments args, uint64_t ID, PD_Matrix mat) {
|
int PDArgsGetValue(PD_Arguments args, uint64_t ID, PD_Matrix mat) {
|
||||||
if (args == nullptr || mat == nullptr) return PD_NULLPTR;
|
if (args == nullptr || mat == nullptr) return kPD_NULLPTR;
|
||||||
auto m = paddle::capi::cast<paddle::capi::CMatrix>(mat);
|
auto m = paddle::capi::cast<paddle::capi::CMatrix>(mat);
|
||||||
auto a = cast(args);
|
auto a = castArg(args);
|
||||||
if (ID >= a->args.size()) return PD_OUT_OF_RANGE;
|
if (ID >= a->args.size()) return kPD_OUT_OF_RANGE;
|
||||||
m->mat = a->args[ID].value;
|
m->mat = a->args[ID].value;
|
||||||
return PD_NO_ERROR;
|
return kPD_NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
int PDArgsGetIds(PD_Arguments args, uint64_t ID, PD_IVector ids) {
|
||||||
|
if (args == nullptr || ids == nullptr) return kPD_NULLPTR;
|
||||||
|
auto iv = castIVec(ids);
|
||||||
|
auto a = castArg(args);
|
||||||
|
if (ID >= a->args.size()) return kPD_OUT_OF_RANGE;
|
||||||
|
iv->vec = a->args[ID].ids;
|
||||||
|
return kPD_NO_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,26 +1,28 @@
|
|||||||
#include "PaddleCAPI.h"
|
#include "PaddleCAPI.h"
|
||||||
#include "PaddleCAPIPrivate.h"
|
#include "PaddleCAPIPrivate.h"
|
||||||
|
|
||||||
#define cast(v) paddle::capi::cast<paddle::capi::CVector>(v)
|
using paddle::capi::cast;
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
int PDVecCreate(PD_Vector* vec, uint64_t size, bool useGpu) {
|
|
||||||
auto ptr = new paddle::capi::CVector();
|
int PDIVecCreateNone(PD_IVector* ivec) {
|
||||||
ptr->vec = paddle::Vector::create(size, useGpu);
|
if (ivec == nullptr) return kPD_NULLPTR;
|
||||||
*vec = ptr;
|
auto ptr = new paddle::capi::CIVector();
|
||||||
return PD_NO_ERROR;
|
*ivec = ptr;
|
||||||
|
return kPD_NO_ERROR;
|
||||||
}
|
}
|
||||||
int PDVecDestroy(PD_Vector vec) {
|
|
||||||
auto v = cast(vec);
|
int PDIVecDestroy(PD_IVector ivec) {
|
||||||
v->vec.reset();
|
if (ivec == nullptr) return kPD_NULLPTR;
|
||||||
delete v;
|
delete cast<paddle::capi::CIVector>(ivec);
|
||||||
return PD_NO_ERROR;
|
return kPD_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PDVecIsSparse(PD_Vector vec, bool* isSparse) {
|
int PDIVectorGet(PD_IVector ivec, int** buffer) {
|
||||||
if (isSparse == nullptr || vec == nullptr) {
|
if (ivec == nullptr || buffer == nullptr) return kPD_NULLPTR;
|
||||||
return PD_NULLPTR;
|
auto v = cast<paddle::capi::CIVector>(ivec);
|
||||||
}
|
if (v->vec == nullptr) return kPD_NULLPTR;
|
||||||
*isSparse = cast(vec)->vec->isSparse();
|
*buffer = v->vec->getData();
|
||||||
return PD_NO_ERROR;
|
return kPD_NO_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
w
|
||||||
|
b
|
@ -1,35 +1,10 @@
|
|||||||
function(add_capi_unittest_without_exec TARGET_NAME)
|
add_unittest(capi_test_mats test_Vector.cpp
|
||||||
set(with_test_main ON)
|
|
||||||
set(sources)
|
|
||||||
foreach(source_file ${ARGN})
|
|
||||||
if (${source_file} STREQUAL "NO_MAIN")
|
|
||||||
set(with_test_main OFF)
|
|
||||||
else()
|
|
||||||
list(APPEND sources ${source_file})
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
add_executable(
|
|
||||||
${TARGET_NAME}
|
|
||||||
${sources})
|
|
||||||
|
|
||||||
target_link_libraries(
|
|
||||||
${TARGET_NAME}
|
|
||||||
paddle_capi
|
|
||||||
${GTEST_LIBRARIES})
|
|
||||||
|
|
||||||
if (with_test_main)
|
|
||||||
target_link_libraries(
|
|
||||||
${TARGET_NAME} paddle_test_main)
|
|
||||||
endif()
|
|
||||||
target_include_directories(${TARGET_NAME} PUBLIC ${PADDLE_CAPI_INC_PATH})
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(add_capi_unittest TARGET_NAME)
|
|
||||||
add_capi_unittest_without_exec(${TARGET_NAME} ${ARGN})
|
|
||||||
add_test(NAME ${TARGET_NAME} COMMAND ${TARGET_NAME})
|
|
||||||
endfunction()
|
|
||||||
add_capi_unittest(capi_test_mats test_Vector.cpp
|
|
||||||
test_Matrix.cpp test_Arguments.cpp)
|
test_Matrix.cpp test_Arguments.cpp)
|
||||||
|
|
||||||
add_capi_unittest(capi_test_gradientMachine NO_MAIN test_GradientMachine.cpp)
|
target_include_directories(capi_test_mats PUBLIC ${PADDLE_CAPI_INC_PATH})
|
||||||
|
target_link_libraries(capi_test_mats paddle_capi)
|
||||||
|
add_unittest(capi_test_gradientMachine test_GradientMachine.cpp)
|
||||||
|
|
||||||
|
target_include_directories(capi_test_gradientMachine PUBLIC
|
||||||
|
${PADDLE_CAPI_INC_PATH})
|
||||||
|
target_link_libraries(capi_test_gradientMachine paddle_capi)
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
from paddle.trainer_config_helpers import *
|
||||||
|
|
||||||
|
settings(batch_size=100)
|
||||||
|
|
||||||
|
x = data_layer(name='x', size=100)
|
||||||
|
|
||||||
|
y = fc_layer(
|
||||||
|
input=x,
|
||||||
|
size=100,
|
||||||
|
bias_attr=ParamAttr(name='b'),
|
||||||
|
param_attr=ParamAttr(name='w'))
|
||||||
|
|
||||||
|
outputs(y)
|
@ -1 +0,0 @@
|
|||||||
../../../demo/image_classification/vgg_16_cifar.py
|
|
Loading…
Reference in new issue