|
|
|
@ -29,13 +29,26 @@
|
|
|
|
|
namespace paddle {
|
|
|
|
|
namespace imperative {
|
|
|
|
|
|
|
|
|
|
class UniqueNameGenerator {
|
|
|
|
|
public:
|
|
|
|
|
explicit UniqueNameGenerator(std::string prefix = "") : prefix_(prefix) {}
|
|
|
|
|
std::string Generate(std::string key = "tmp") {
|
|
|
|
|
return prefix_ + key + "_" + std::to_string(++id_);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
std::atomic<int> id_{0};
|
|
|
|
|
std::string prefix_;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class Tracer {
|
|
|
|
|
DISABLE_COPY_AND_ASSIGN(Tracer);
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
Tracer()
|
|
|
|
|
: engine_(new BasicEngine()),
|
|
|
|
|
program_desc_tracer_(new jit::ProgramDescTracer()) {}
|
|
|
|
|
program_desc_tracer_(new jit::ProgramDescTracer()),
|
|
|
|
|
generator_(new UniqueNameGenerator()) {}
|
|
|
|
|
|
|
|
|
|
~Tracer() = default;
|
|
|
|
|
|
|
|
|
@ -64,6 +77,10 @@ class Tracer {
|
|
|
|
|
return program_desc_tracer_.get();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::string GenerateUniqueName(std::string key = "tmp") {
|
|
|
|
|
return generator_->Generate(key);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
static size_t GenerateUniqueId() {
|
|
|
|
|
static std::atomic<size_t> id{0};
|
|
|
|
@ -74,6 +91,7 @@ class Tracer {
|
|
|
|
|
std::unique_ptr<Engine> engine_;
|
|
|
|
|
std::unique_ptr<jit::ProgramDescTracer> program_desc_tracer_;
|
|
|
|
|
bool enable_program_desc_tracing_{false};
|
|
|
|
|
std::unique_ptr<UniqueNameGenerator> generator_;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
} // namespace imperative
|
|
|
|
|