[GPU] Make cl_dump to distinguish program (#8763)

* Make cl_dump to distinguish program

* Applied review comment
This commit is contained in:
Taylor Yeonbok Lee
2022-01-21 12:37:08 +09:00
committed by GitHub
parent d977b7238a
commit 78db56d92d
4 changed files with 12 additions and 12 deletions

View File

@@ -174,7 +174,7 @@ std::vector<std::chrono::nanoseconds> kernel_runner::run_kernels(const kernel_se
batch_end = batch_start + current_compilation_batch;
std::vector<kernel::ptr> kernels;
kernels_cache cache(_engine);
kernels_cache cache(_engine, program_id);
for (auto it = batch_start; it < batch_end; it++) {
auto kernel_id = cache.set_kernel_source(it->kernels[0].code.kernelString, false);

View File

@@ -94,7 +94,6 @@ program::program(engine& engine_ref,
bool is_body_program)
: _engine(engine_ref),
_stream(_engine.create_stream()),
_kernels_cache(std::unique_ptr<kernels_cache>(new kernels_cache(_engine))),
options(options),
processing_order(),
tuning_cache(nullptr),
@@ -103,7 +102,8 @@ program::program(engine& engine_ref,
set_options();
pm = std::unique_ptr<pass_manager>(new pass_manager(*this));
prepare_nodes(topology);
_kernels_cache->set_batch_header_str(kernel_selector::KernelBase::get_db().get_batch_header_str());
_kernels_cache = std::unique_ptr<kernels_cache>(new kernels_cache(_engine, prog_id,
kernel_selector::KernelBase::get_db().get_batch_header_str()));
if (no_optimizations) {
init_graph();
} else {
@@ -116,13 +116,13 @@ program::program(engine& engine_ref,
build_options const& options,
bool is_internal)
: _engine(engine_ref),
_kernels_cache(std::unique_ptr<kernels_cache>(new kernels_cache(_engine))),
options(options),
processing_order(),
tuning_cache(nullptr) {
init_primitives();
set_options();
_kernels_cache->set_batch_header_str(kernel_selector::KernelBase::get_db().get_batch_header_str());
_kernels_cache = std::unique_ptr<kernels_cache>(new kernels_cache(_engine, prog_id,
kernel_selector::KernelBase::get_db().get_batch_header_str()));
pm = std::unique_ptr<pass_manager>(new pass_manager(*this));
prepare_nodes(nodes);
build_program(is_internal);

View File

@@ -162,7 +162,6 @@ void kernels_cache::get_program_source(const kernels_code& kernels_source_code,
for (const auto& code : kernels_source_code) {
std::string full_code = code.kernel_strings->jit + code.kernel_strings->str + code.kernel_strings->undefs;
const source_code org_source_code = { full_code };
std::string entry_point = code.kernel_strings->entry_point;
std::string options = code.kernel_strings->options;
bool batch_compilation = code.kernel_strings->batch_compilation;
@@ -202,9 +201,7 @@ void kernels_cache::get_program_source(const kernels_code& kernels_source_code,
current_batch.dump_custom_program = dump_custom_program;
current_batch.entry_point_to_id[entry_point] = code.id;
assert(org_source_code.size() == 1);
current_batch.source.push_back(std::move(org_source_code.front()));
current_batch.source.push_back(std::move(full_code));
current_batch.kernels_counter++;
}
@@ -226,7 +223,8 @@ void kernels_cache::get_program_source(const kernels_code& kernels_source_code,
}
}
kernels_cache::kernels_cache(engine& engine) : _engine(engine) { }
kernels_cache::kernels_cache(engine& engine, uint32_t prog_id, const std::vector<std::string>& batch_header_str)
: _engine(engine), _prog_id(prog_id), batch_header_str(std::move(batch_header_str)) { }
kernel_id kernels_cache::set_kernel_source(
const std::shared_ptr<kernel_string>& kernel_string,
@@ -283,7 +281,8 @@ void kernels_cache::build_batch(const engine& build_engine, const batch_program&
if (!current_dump_file_name.empty() && current_dump_file_name.back() != '/')
current_dump_file_name += '/';
current_dump_file_name += "clDNN_program_" + std::to_string(batch.bucket_id) + "_part_" + std::to_string(batch.batch_id) + ".cl";
current_dump_file_name += "clDNN_program_" + std::to_string(_prog_id) + "_bucket_" + std::to_string(batch.bucket_id)
+ "_part_" + std::to_string(batch.batch_id) + ".cl";
}
std::ofstream dump_file;

View File

@@ -73,6 +73,7 @@ public:
private:
static std::mutex _mutex;
engine& _engine;
uint32_t _prog_id = 0;
kernels_code _kernels_code;
std::atomic<bool> _pending_compilation{false};
std::map<const std::string, kernel::ptr> _kernels;
@@ -86,7 +87,7 @@ private:
size_t get_max_kernels_per_batch() const;
public:
explicit kernels_cache(engine& engine);
explicit kernels_cache(engine& engine, uint32_t prog_id, const std::vector<std::string>& batch_header_str = {});
kernel_id set_kernel_source(const std::shared_ptr<kernel_string>& kernel_string,
bool dump_custom_program);
kernel::ptr get_kernel(kernel_id id) const;