“de8a8feeb48f981e5d75603eadc491b7eb139064”上不存在“paddle/fluid/pybind/executor_lite.h”
提交 39b5abd9 编写于 作者: L liuqi

Add lock at building program function.

上级 f07dd516
...@@ -48,8 +48,6 @@ bool SimpleNet::Run(RunMetadata *run_metadata) { ...@@ -48,8 +48,6 @@ bool SimpleNet::Run(RunMetadata *run_metadata) {
LOG(ERROR) << "Operator failed: " << ProtoDebugString(op->debug_def()); LOG(ERROR) << "Operator failed: " << ProtoDebugString(op->debug_def());
return false; return false;
} }
if (device_type_ == DeviceType::OPENCL)
OpenCLRuntime::Get()->command_queue().finish();
if (op_stats) { if (op_stats) {
op_stats->set_op_end_rel_micros(NowInMicroSec() - op_stats->set_op_end_rel_micros(NowInMicroSec() -
op_stats->all_start_micros()); op_stats->all_start_micros());
......
...@@ -104,9 +104,11 @@ cl::Device &OpenCLRuntime::device() { return device_; } ...@@ -104,9 +104,11 @@ cl::Device &OpenCLRuntime::device() { return device_; }
cl::CommandQueue &OpenCLRuntime::command_queue() { return command_queue_; } cl::CommandQueue &OpenCLRuntime::command_queue() { return command_queue_; }
cl::Program &OpenCLRuntime::program() { cl::Program &OpenCLRuntime::program() {
// TODO(heliangliang) Support binary format // TODO(liuqi) : useless, leave it for old code.
return program_; return program_;
} }
// TODO(heliangliang) Support binary format
const std::map<std::string, std::string> const std::map<std::string, std::string>
OpenCLRuntime::program_map_ = { OpenCLRuntime::program_map_ = {
{"addn", "addn.cl"}, {"addn", "addn.cl"},
...@@ -162,6 +164,7 @@ cl::Kernel OpenCLRuntime::BuildKernel(const std::string &program_name, ...@@ -162,6 +164,7 @@ cl::Kernel OpenCLRuntime::BuildKernel(const std::string &program_name,
} }
std::string built_program_key = program_name + build_options_str; std::string built_program_key = program_name + build_options_str;
std::lock_guard<std::mutex> lock(program_build_mutex_);
auto built_program_it = built_program_map_.find(built_program_key); auto built_program_it = built_program_map_.find(built_program_key);
cl::Program program; cl::Program program;
if (built_program_it != built_program_map_.end()) { if (built_program_it != built_program_map_.end()) {
......
...@@ -45,6 +45,7 @@ class OpenCLRuntime { ...@@ -45,6 +45,7 @@ class OpenCLRuntime {
cl::Device device_; cl::Device device_;
cl::CommandQueue command_queue_; cl::CommandQueue command_queue_;
cl::Program program_; cl::Program program_;
std::mutex program_build_mutex_;
std::string kernel_path_; std::string kernel_path_;
static const std::map<std::string, static const std::map<std::string,
std::string> program_map_; std::string> program_map_;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册