revert-11610-move_hooks
commit
15913d92c5
@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
PADDLE_TRAINING_ROLE=PSERVER PADDLE_PSERVER_PORT=7164 PADDLE_PSERVER_IPS=127.0.0.1 PADDLE_TRAINERS=2 PADDLE_CURRENT_IP=127.0.0.1 PADDLE_TRAINER_ID=0 python fluid_benchmark.py --model resnet --device CPU --update_method pserver --iterations=10000 &
|
||||
|
||||
sleep 15
|
||||
|
||||
CUDA_VISIBLE_DEVICES=0,1 PADDLE_TRAINING_ROLE=TRAINER PADDLE_PSERVER_PORT=7164 PADDLE_PSERVER_IPS=127.0.0.1 PADDLE_TRAINERS=2 PADDLE_CURRENT_IP=127.0.0.1 PADDLE_TRAINER_ID=0 python fluid_benchmark.py --model resnet --device GPU --update_method pserver --iterations=10000 --gpus 2 &
|
||||
|
||||
CUDA_VISIBLE_DEVICES=2,3 PADDLE_TRAINING_ROLE=TRAINER PADDLE_PSERVER_PORT=7164 PADDLE_PSERVER_IPS=127.0.0.1 PADDLE_TRAINERS=2 PADDLE_CURRENT_IP=127.0.0.1 PADDLE_TRAINER_ID=1 python fluid_benchmark.py --model resnet --device GPU --update_method pserver --iterations=10000 --gpus 2 &
|
@ -0,0 +1,26 @@
|
||||
// Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "paddle/fluid/operators/detail/rpc_client.h"
|
||||
|
||||
namespace paddle {
|
||||
namespace operators {
|
||||
namespace detail {
|
||||
|
||||
std::once_flag RPCClient::init_flag_;
|
||||
std::unique_ptr<RPCClient> RPCClient::rpc_client_(nullptr);
|
||||
|
||||
} // namespace detail
|
||||
} // namespace operators
|
||||
} // namespace paddle
|
@ -0,0 +1,82 @@
|
||||
// Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "paddle/fluid/framework/data_type.h"
|
||||
#include "paddle/fluid/framework/lod_tensor.h"
|
||||
#include "paddle/fluid/framework/scope.h"
|
||||
|
||||
namespace paddle {
|
||||
namespace operators {
|
||||
namespace detail {
|
||||
|
||||
class RPCClient {
|
||||
public:
|
||||
virtual bool AsyncSendVar(const std::string& ep,
|
||||
const platform::DeviceContext& ctx,
|
||||
const framework::Scope& scope,
|
||||
const std::string& var_name,
|
||||
int64_t time_out = rpc_time_out) = 0;
|
||||
|
||||
virtual bool AsyncGetVar(const std::string& ep,
|
||||
const platform::DeviceContext& ctx,
|
||||
const framework::Scope& scope,
|
||||
const std::string& var_name,
|
||||
int64_t time_out = rpc_time_out) = 0;
|
||||
|
||||
virtual bool AsyncPrefetchVar(const std::string& ep,
|
||||
const platform::DeviceContext& ctx,
|
||||
const framework::Scope& scope,
|
||||
const std::string& in_var_name,
|
||||
const std::string& out_var_name,
|
||||
int64_t time_out = rpc_time_out) = 0;
|
||||
|
||||
virtual void AsyncSendBatchBarrier(const std::string& ep,
|
||||
int64_t time_out = rpc_time_out) = 0;
|
||||
|
||||
virtual void AsyncSendFetchBarrier(const std::string& ep,
|
||||
int64_t time_out = rpc_time_out) = 0;
|
||||
|
||||
virtual void Wait() = 0;
|
||||
|
||||
static constexpr int64_t rpc_time_out = 120 * 1000;
|
||||
|
||||
template <typename T>
|
||||
static RPCClient* GetInstance() {
|
||||
std::call_once(init_flag_, &RPCClient::Init<T>);
|
||||
return rpc_client_.get();
|
||||
}
|
||||
|
||||
// Init is called by GetInstance.
|
||||
template <typename T>
|
||||
static void Init() {
|
||||
if (rpc_client_.get() == nullptr) {
|
||||
rpc_client_.reset(new T());
|
||||
rpc_client_->InitImpl();
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual void InitImpl() {}
|
||||
|
||||
private:
|
||||
static std::once_flag init_flag_;
|
||||
static std::unique_ptr<RPCClient> rpc_client_;
|
||||
};
|
||||
} // namespace detail
|
||||
} // namespace operators
|
||||
} // namespace paddle
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue