From 592f7982ab78bb69915b7c8dac2181854aaa9b10 Mon Sep 17 00:00:00 2001 From: PGZXB Date: Wed, 7 Dec 2022 20:13:07 +0800 Subject: [PATCH] Refactor2023: Remove IRNode::get_config and IRNode::get_kernel --- taichi/codegen/codegen.cpp | 5 ++--- taichi/codegen/dx12/codegen_dx12.cpp | 3 +-- taichi/ir/ir.h | 3 --- taichi/program/ir_node_extended_impl.cpp | 20 -------------------- taichi/transforms/compile_to_offloads.cpp | 2 +- 5 files changed, 4 insertions(+), 29 deletions(-) delete mode 100644 taichi/program/ir_node_extended_impl.cpp diff --git a/taichi/codegen/codegen.cpp b/taichi/codegen/codegen.cpp index a16cfce470388..731e11e0dd07f 100644 --- a/taichi/codegen/codegen.cpp +++ b/taichi/codegen/codegen.cpp @@ -113,10 +113,9 @@ LLVMCompiledKernel KernelCodeGen::compile_kernel_to_module() { using TaskFunc = int32 (*)(void *); std::vector task_funcs(offloads.size()); for (int i = 0; i < offloads.size(); i++) { - auto compile_func = [&, i] { + auto compile_func = [&, kernel = this->kernel, i] { tlctx->fetch_this_thread_struct_module(); - auto offload = - irpass::analysis::clone(offloads[i].get(), offloads[i]->get_kernel()); + auto offload = irpass::analysis::clone(offloads[i].get(), kernel); irpass::re_id(offload.get()); auto new_data = this->compile_task(&config, nullptr, offload->as()); diff --git a/taichi/codegen/dx12/codegen_dx12.cpp b/taichi/codegen/dx12/codegen_dx12.cpp index 99a419ae22a36..c246de04ac94b 100644 --- a/taichi/codegen/dx12/codegen_dx12.cpp +++ b/taichi/codegen/dx12/codegen_dx12.cpp @@ -232,8 +232,7 @@ KernelCodeGenDX12::CompileResult KernelCodeGenDX12::compile() { CompileResult Result; for (int i = 0; i < offloads.size(); i++) { - auto offload = - irpass::analysis::clone(offloads[i].get(), offloads[i]->get_kernel()); + auto offload = irpass::analysis::clone(offloads[i].get(), kernel); irpass::re_id(offload.get()); auto *offload_stmt = offload->as(); auto new_data = compile_task(&config, nullptr, offload_stmt); diff --git a/taichi/ir/ir.h b/taichi/ir/ir.h index 95481869700b3..ef093d7785f2e 100644 --- a/taichi/ir/ir.h +++ b/taichi/ir/ir.h @@ -206,12 +206,9 @@ class IRNode { virtual IRNode *get_parent() const = 0; IRNode *get_ir_root(); - Kernel *get_kernel() const; virtual ~IRNode() = default; - CompileConfig &get_config() const; - template bool is() const { return dynamic_cast(this) != nullptr; diff --git a/taichi/program/ir_node_extended_impl.cpp b/taichi/program/ir_node_extended_impl.cpp deleted file mode 100644 index d91b25d9fb1fa..0000000000000 --- a/taichi/program/ir_node_extended_impl.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "taichi/ir/ir.h" - -#include "taichi/program/program.h" -#include "taichi/program/kernel.h" - -// TODO(#2196): Part of the implementation of IRNode has to be placed here, in -// order to use files under "taichi/program". Ideally, we should: -// 1. Have a dedicated IR compile config that lives under "taichi/ir" -// 2. Just don't hook IRNode with a Kernel -namespace taichi::lang { - -Kernel *IRNode::get_kernel() const { - return const_cast(this)->get_ir_root()->kernel; -} - -CompileConfig &IRNode::get_config() const { - return get_kernel()->program->this_thread_config(); -} - -} // namespace taichi::lang diff --git a/taichi/transforms/compile_to_offloads.cpp b/taichi/transforms/compile_to_offloads.cpp index 7b96e829b2570..fed5d13d3e962 100644 --- a/taichi/transforms/compile_to_offloads.cpp +++ b/taichi/transforms/compile_to_offloads.cpp @@ -251,7 +251,7 @@ void offload_to_executable(IRNode *ir, irpass::analysis::verify(ir); if (is_extension_supported(config.arch, Extension::quant) && - ir->get_config().quant_opt_atomic_demotion) { + config.quant_opt_atomic_demotion) { irpass::analysis::gather_uniquely_accessed_bit_structs(ir, amgr.get()); }