[GPU] Make cl_dump to distinguish program (#8763)
* Make cl_dump to distinguish program * Applied review comment
This commit is contained in:
committed by
GitHub
parent
d977b7238a
commit
78db56d92d
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user