@ -34,7 +34,6 @@ import (
log "github.com/sirupsen/logrus"
)
var nullPtr = unsafe . Pointer ( uintptr ( 0 ) )
var mu sync . Mutex
var handleMap = make ( map [ C . paddle_pserver_client ] * client . Client )
var curHandle C . paddle_pserver_client
@ -63,7 +62,7 @@ func remove(client C.paddle_pserver_client) *client.Client {
}
func cArrayToSlice ( p unsafe . Pointer , len int ) [ ] byte {
if p == nullPtr {
if p == nil {
return nil
}
@ -101,11 +100,11 @@ func paddle_new_pserver_client(addrs *C.char, selected int) C.paddle_pserver_cli
}
//export paddle_new_etcd_pserver_client
func paddle_new_etcd_pserver_client ( etcd _e ndpoints * C . char , selected int ) C . paddle_pserver_client {
func paddle_new_etcd_pserver_client ( etcd E ndpoints * C . char , selected int ) C . paddle_pserver_client {
// TODO(Longfei: use etcd lock to decide which trainer to initialize the parameters)
addr := C . GoString ( etcd _e ndpoints)
etcd _c lient := client . NewEtcd ( addr )
c := client . NewClient ( etcd _client, etcd_c lient. Desired ( ) , selector ( selected != 0 ) )
addr := C . GoString ( etcd E ndpoints)
etcd C lient := client . NewEtcd ( addr )
c := client . NewClient ( etcd Client, etcdC lient. Desired ( ) , selector ( selected != 0 ) )
return add ( c )
}
@ -124,20 +123,20 @@ func paddle_begin_init_params(client C.paddle_pserver_client) C.int {
}
//export paddle_init_param
func paddle_init_param ( client C . paddle_pserver_client , param C . paddle_parameter , param _config unsafe . Pointer , config_l en C . int ) C . int {
func paddle_init_param ( client C . paddle_pserver_client , param C . paddle_parameter , param Config unsafe . Pointer , configL en C . int ) C . int {
et := pserver . ElementType ( param . element_type )
name := C . GoString ( param . name )
content := cArrayToSlice ( unsafe . Pointer ( param . content ) , int ( param . content_len ) )
pc := pserver . ParameterWithConfig {
Param : pserver . Parameter { Name : name , ElementType : et , Content : content } ,
Config : cArrayToSlice ( param _config, int ( config_l en) ) ,
Config : cArrayToSlice ( param Config, int ( configL en) ) ,
}
c := get ( client )
err := c . InitParam ( pc )
if err != nil {
if err . Error ( ) == pserver . AlreadyInitialized {
log . Warningf ( "parameter %s already initialized, treat paddle_init_param as suc essful.", name )
log . Warningf ( "parameter %s already initialized, treat paddle_init_param as suc c essful.", name )
return C . PSERVER_OK
}
log . Errorln ( err )
@ -153,7 +152,7 @@ func paddle_finish_init_params(client C.paddle_pserver_client) C.int {
err := c . FinishInitParams ( )
if err != nil {
if err . Error ( ) == pserver . AlreadyInitialized {
log . Warningln ( "parameters already initialized, treat paddle_finish_init_params as suc essful.")
log . Warningln ( "parameters already initialized, treat paddle_finish_init_params as suc c essful.")
return C . PSERVER_OK
}
@ -223,12 +222,12 @@ func paddle_get_params(client C.paddle_pserver_client, dst **C.paddle_parameter,
p := ps [ i ]
param := * ( * * C . paddle_parameter ) ( unsafe . Pointer ( ( uintptr ( unsafe . Pointer ( dst ) ) + uintptr ( i ) * unsafe . Sizeof ( * dst ) ) ) )
if unsafe . Pointer ( param ) == nullPtr {
if unsafe . Pointer ( param ) == nil {
log . Errorln ( "must pre-allocate parameter." )
return C . PSERVER_ERROR
}
if unsafe . Pointer ( param . content ) != nullPtr {
if unsafe . Pointer ( param . content ) != nil {
if int ( param . content_len ) != len ( p . Content ) {
log . Errorf ( "the pre-allocated content len does not match parameter content len. Pre-allocated len: %d, returned len: %d" , param . content_len , len ( p . Content ) )
return C . PSERVER_ERROR