in design_utils/des_handler.py [0:0]
def populate_system_improvement_log(self):
# communication vs computation
if self.get_block_ref().type in ["ic","mem"]:
comm_comp = "comm"
else:
comm_comp = "comp"
# which exact optimization targgeted: topology/mapping/tunning
if self.get_transformation_name() in ["swap"]:
exact_optimization = self.get_customization_type(self.get_block_ref(), self.get_des_block())
elif self.get_transformation_name() in ["split_swap"]:
if self.get_block_ref() == "pe":
exact_optimization = self.get_customization_type(self.get_block_ref(), self.get_des_block()) +";" +self.get_block_ref().type +"_"+"allocation"
else:
exact_optimization = self.get_customization_type(self.get_block_ref(), self.get_des_block())
elif self.get_transformation_name() in ["migrate"]:
exact_optimization = self.get_block_ref().type +"_"+"mapping"
elif self.get_transformation_name() in ["split_swap", "split", "transfer", "routing"]:
exact_optimization = self.get_block_ref().type +"_"+"allocation"
elif self.get_transformation_name() in ["transfer", "routing"]:
exact_optimization = self.get_block_ref().type +"_"+self.get_transformation_name()
elif self.get_transformation_name() in ["cost"]:
exact_optimization = "cost"
elif self.get_transformation_name() in ["dram_fix"]:
exact_optimization = "dram_fix"
elif self.get_transformation_name() in ["identity"]:
exact_optimization = "identity"
else:
print(self.get_transformation_name() + " high level optimization is not specified")
exit(0)
# which high level optimization targgeted: topology/mapping/tunning
if self.get_transformation_name() in ["swap", "split_swap"]:
high_level_optimization = "hardware_tunning"
elif self.get_transformation_name() in ["split_swap"]:
high_level_optimization = "hardware_tunning;topology"
elif self.get_transformation_name() in ["migrate"]:
high_level_optimization = "mapping"
elif self.get_transformation_name() in ["split_swap", "split", "transfer","routing"]:
high_level_optimization = "topology"
elif self.get_transformation_name() in ["cost"]:
high_level_optimization = "cost"
elif self.get_transformation_name() in ["dram_fix"]:
high_level_optimization = "dram_fix"
elif self.get_transformation_name() in ["identity"]:
high_level_optimization = "identity"
else:
print(self.get_transformation_name() + " high level optimization is not specified")
exit(0)
# which architectural variable targgeted: topology/mapping/tunning
if self.get_transformation_name() in ["split"]:
architectural_principle = ""
for el in self.parallelism_type:
architectural_principle += el+";"
architectural_principle = architectural_principle[:-1]
elif self.get_transformation_name() in ["migrate"]:
architectural_principle = ""
for el in self.parallelism_type:
architectural_principle += el+";"
for el in self.locality_type:
architectural_principle += el+";"
architectural_principle = architectural_principle[:-1]
elif self.get_transformation_name() in ["split_swap", "swap"]:
if "loop_iteration_modulation" in exact_optimization:
architectural_principle = "loop_level_parallelism"
else:
architectural_principle = "customization"
elif self.get_transformation_name() in ["transfer","routing"]:
architectural_principle = "spatial_locality"
elif self.get_transformation_name() in ["cost"]:
architectural_principle = "cost"
elif self.get_transformation_name() in ["dram_fix"]:
architectural_principle = "dram_fix"
elif self.get_transformation_name() in ["identity"]:
architectural_principle = "identity"
else:
print(self.get_transformation_name() + " high level optimization is not specified")
exit(0)
self.system_improvement_dict["comm_comp"] = comm_comp
self.system_improvement_dict["high_level_optimization"] = high_level_optimization
self.system_improvement_dict["exact_optimization"] = exact_optimization
self.system_improvement_dict["architectural_principle"] = architectural_principle