parent
106620ea06
commit
fdb64acc50
@ -1,49 +1,61 @@
|
||||
#include "PaddleCAPI.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" {
|
||||
int PDArgsCreateNone(PD_Arguments* args) {
|
||||
auto ptr = new paddle::capi::CArguments();
|
||||
*args = ptr;
|
||||
return PD_NO_ERROR;
|
||||
return kPD_NO_ERROR;
|
||||
}
|
||||
|
||||
int PDArgsDestroy(PD_Arguments args) {
|
||||
if (args == nullptr) return PD_NULLPTR;
|
||||
delete cast(args);
|
||||
return PD_NO_ERROR;
|
||||
if (args == nullptr) return kPD_NULLPTR;
|
||||
delete castArg(args);
|
||||
return kPD_NO_ERROR;
|
||||
}
|
||||
|
||||
int PDArgsGetSize(PD_Arguments args, uint64_t* size) {
|
||||
if (args == nullptr || size == nullptr) return PD_NULLPTR;
|
||||
*size = cast(args)->args.size();
|
||||
return PD_NO_ERROR;
|
||||
if (args == nullptr || size == nullptr) return kPD_NULLPTR;
|
||||
*size = castArg(args)->args.size();
|
||||
return kPD_NO_ERROR;
|
||||
}
|
||||
|
||||
int PDArgsResize(PD_Arguments args, uint64_t size) {
|
||||
if (args == nullptr) return PD_NULLPTR;
|
||||
cast(args)->args.resize(size);
|
||||
return PD_NO_ERROR;
|
||||
if (args == nullptr) return kPD_NULLPTR;
|
||||
castArg(args)->args.resize(size);
|
||||
return kPD_NO_ERROR;
|
||||
}
|
||||
|
||||
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);
|
||||
if (m->mat == nullptr) return PD_NULLPTR;
|
||||
auto a = cast(args);
|
||||
if (ID >= a->args.size()) return PD_OUT_OF_RANGE;
|
||||
if (m->mat == nullptr) return kPD_NULLPTR;
|
||||
auto a = castArg(args);
|
||||
if (ID >= a->args.size()) return kPD_OUT_OF_RANGE;
|
||||
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) {
|
||||
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 a = cast(args);
|
||||
if (ID >= a->args.size()) return PD_OUT_OF_RANGE;
|
||||
auto a = castArg(args);
|
||||
if (ID >= a->args.size()) return kPD_OUT_OF_RANGE;
|
||||
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 "PaddleCAPIPrivate.h"
|
||||
|
||||
#define cast(v) paddle::capi::cast<paddle::capi::CVector>(v)
|
||||
using paddle::capi::cast;
|
||||
|
||||
extern "C" {
|
||||
int PDVecCreate(PD_Vector* vec, uint64_t size, bool useGpu) {
|
||||
auto ptr = new paddle::capi::CVector();
|
||||
ptr->vec = paddle::Vector::create(size, useGpu);
|
||||
*vec = ptr;
|
||||
return PD_NO_ERROR;
|
||||
|
||||
int PDIVecCreateNone(PD_IVector* ivec) {
|
||||
if (ivec == nullptr) return kPD_NULLPTR;
|
||||
auto ptr = new paddle::capi::CIVector();
|
||||
*ivec = ptr;
|
||||
return kPD_NO_ERROR;
|
||||
}
|
||||
int PDVecDestroy(PD_Vector vec) {
|
||||
auto v = cast(vec);
|
||||
v->vec.reset();
|
||||
delete v;
|
||||
return PD_NO_ERROR;
|
||||
|
||||
int PDIVecDestroy(PD_IVector ivec) {
|
||||
if (ivec == nullptr) return kPD_NULLPTR;
|
||||
delete cast<paddle::capi::CIVector>(ivec);
|
||||
return kPD_NO_ERROR;
|
||||
}
|
||||
|
||||
int PDVecIsSparse(PD_Vector vec, bool* isSparse) {
|
||||
if (isSparse == nullptr || vec == nullptr) {
|
||||
return PD_NULLPTR;
|
||||
}
|
||||
*isSparse = cast(vec)->vec->isSparse();
|
||||
return PD_NO_ERROR;
|
||||
int PDIVectorGet(PD_IVector ivec, int** buffer) {
|
||||
if (ivec == nullptr || buffer == nullptr) return kPD_NULLPTR;
|
||||
auto v = cast<paddle::capi::CIVector>(ivec);
|
||||
if (v->vec == nullptr) return kPD_NULLPTR;
|
||||
*buffer = v->vec->getData();
|
||||
return kPD_NO_ERROR;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,2 @@
|
||||
w
|
||||
b
|
@ -1,35 +1,10 @@
|
||||
function(add_capi_unittest_without_exec TARGET_NAME)
|
||||
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
|
||||
add_unittest(capi_test_mats test_Vector.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