提交 0064fcb0 编写于 作者: H Helin Wang

update C API

上级 66a3cfe3
...@@ -12,6 +12,13 @@ For an overview of trainer's role, please refer to [distributed training design ...@@ -12,6 +12,13 @@ For an overview of trainer's role, please refer to [distributed training design
#define PADDLE_ELEMENT_TYPE_FLOAT32 4 #define PADDLE_ELEMENT_TYPE_FLOAT32 4
#define PADDLE_ELEMENT_TYPE_FLOAT64 5 #define PADDLE_ELEMENT_TYPE_FLOAT64 5
typedef struct {
char* name;
int element_type;
void* content;
int content_len;
} paddle_parameter, paddle_gradient;
typedef struct paddle_pserver_client paddle_pserver_client; typedef struct paddle_pserver_client paddle_pserver_client;
/** /**
...@@ -27,33 +34,36 @@ paddle_pserver_client* paddle_new_pserver_client(); ...@@ -27,33 +34,36 @@ paddle_pserver_client* paddle_new_pserver_client();
void paddle_pserver_client_release(paddle_pserver_client* client); void paddle_pserver_client_release(paddle_pserver_client* client);
/** /**
* @brief paddle_begin_init_param begins to initialize parameters * @brief paddle_begin_init_params begins to initialize parameters
* on parameter servers. * on parameter servers.
* *
* paddle_begin_init_param will be called from multiple trainers, only * paddle_begin_init_params will be called from multiple trainers, only
* one trainer will be selected to initialize the parameters on * one trainer will be selected to initialize the parameters on
* parameter servers. Other trainers will be blocked until the * parameter servers. Other trainers will be blocked until the
* initialization is done, and they need to get the initialized * initialization is done, and they need to get the initialized
* parameters from parameter servers using @paddle_get_param. * parameters from parameter servers using @paddle_get_params.
* *
* @return 1 if trainer is selected to initialize parameter * @param config_proto serialized parameter server configuration
* servers, otherwise 0. * protobuffer.
* @return 1 if trainer is selected to initialize parameter servers,
* otherwise 0.
*/ */
int paddle_begin_init_param(paddle_pserver_client* client); int paddle_begin_init_params(paddle_pserver_client* client, const char* config_proto);
/** /**
* @brief paddle_init_param initializes the parameter on parameter * @brief paddle_init_param initializes the parameter on parameter
* servers. * servers.
* *
* @param param the parameter to initialize.
* @return 0 if successful, otherwise -1. On failure the trainer need * @return 0 if successful, otherwise -1. On failure the trainer need
* to restart the entire initialization process starting from * to restart the entire initialization process starting from
* paddle_begin_init_param. Or simply exit the program and wait for * paddle_begin_init_param. Or simply exit the program and wait for
* cluster management system to restart trainer. * cluster management system to restart trainer.
*/ */
int paddle_init_param(paddle_pserver_client* client, const char* name, int element_type, const void* content); int paddle_init_param(paddle_pserver_client* client, paddle_parameter params);
/** /**
* @brief paddle_finish_init_param tells parameter servers client has * @brief paddle_finish_init_params tells parameter servers client has
* sent all parameters to parameter servers as initialization. * sent all parameters to parameter servers as initialization.
* *
* @return 0 if successful, otherwise -1. On failure the trainer need * @return 0 if successful, otherwise -1. On failure the trainer need
...@@ -61,34 +71,43 @@ int paddle_init_param(paddle_pserver_client* client, const char* name, int eleme ...@@ -61,34 +71,43 @@ int paddle_init_param(paddle_pserver_client* client, const char* name, int eleme
* paddle_begin_init_param. Or simply exit the program and wait for * paddle_begin_init_param. Or simply exit the program and wait for
* cluster management system to restart trainer. * cluster management system to restart trainer.
*/ */
int paddle_finish_init_param(paddle_pserver_client* client); int paddle_finish_init_params(paddle_pserver_client* client);
/** /**
* @brief paddle_send_grad sends gradients to parameter servers for * @brief paddle_send_grads sends gradients to parameter servers for
* updating parameters. * updating parameters.
* *
* @param grads the array of gradients to send.
* @param total the total number of gradient inside the gradient array.
* @param learning_rate the learning rate for the gradients.
* @return 0 if successful, otherwise -1. * @return 0 if successful, otherwise -1.
*/ */
int paddle_send_grad(paddle_pserver_client* client, const char* name, int element_type, const void* content); int paddle_send_grads(paddle_pserver_client* client, const paddle_gradient* grads, int total, double learning_rate);
/** /**
* @brief paddle_set_param sets a parameter on parameter servers. * @brief paddle_set_params sets parameters to parameter servers.
* *
* @param params the array of parameters to set to parameter servers.
* @param total number of parameters inside the parameter array.
* @return 0 if successful, otherwise -1. * @return 0 if successful, otherwise -1.
*/ */
int paddle_set_param(paddle_pserver_client* client, const char* name, int element_type, const void* content); int paddle_set_params(paddle_pserver_client* client, const paddle_parameter* params, int total);
/** /**
* @brief paddle_get_param gets the parameter from parameter servers. * @brief paddle_get_params gets parameters from parameter servers.
* *
* @param names the array of names of the parameters to get.
* @param dst the destination array of parameters to save to.
* @param total the total number of parameters to get.
* @return 0 if successful, otherwise -1. * @return 0 if successful, otherwise -1.
*/ */
int paddle_get_param(paddle_pserver_client* client, const char* name, void** dst, int* dstLen); int paddle_get_params(paddle_pserver_client* client, const char** names, paddle_parameter* dst, int total);
/** /**
* @brief paddle_save_model indicates parameters to save the parameter * @brief paddle_save_model indicates parameters to save the parameter
* to the given path * to the given path
* *
* @param path the path to save parameters.
* @return 0 if successful, otherwise -1. * @return 0 if successful, otherwise -1.
*/ */
int paddle_save_model(paddle_pserver_client* client, const char* path); int paddle_save_model(paddle_pserver_client* client, const char* path);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册