fix num_bin in custom design
This commit is contained in:
parent
33fe4bebfe
commit
21209686c5
Binary file not shown.
|
Before Width: | Height: | Size: 345 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 411 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 421 KiB |
@ -5,17 +5,8 @@ import math
|
||||
from utils import *
|
||||
|
||||
|
||||
def load_dataset(args, logger, placement=None):
|
||||
def load_dataset(args, logger, params):
|
||||
rawdb, gpdb = None, None
|
||||
if args.custom_path != "":
|
||||
params = get_custom_design_params(args)
|
||||
elif args.custom_json != "":
|
||||
logger.info("Detect json mode. Please make sure that tech_lef are included first.")
|
||||
params = get_custom_json_params(args)
|
||||
else:
|
||||
params = get_single_design_params(
|
||||
args.dataset_root, args.dataset, args.design_name, placement
|
||||
)
|
||||
parser = IOParser()
|
||||
if args.load_from_raw:
|
||||
logger.info("loading from original benchmark...")
|
||||
@ -116,9 +107,8 @@ class PlaceData(object):
|
||||
self.region_boxes = region_boxes
|
||||
self.region_boxes_end = region_boxes_end
|
||||
|
||||
# TODO: more cases?
|
||||
# TODO: more cases, hardcode?
|
||||
self.node_special_type = torch.zeros(len(node_id2celltype_name), dtype=torch.int32)
|
||||
if False:
|
||||
for node_id, celltype_name in enumerate(node_id2celltype_name):
|
||||
if celltype_name.startswith("CORE/BUF"):
|
||||
self.node_special_type[node_id] = 1
|
||||
@ -452,6 +442,7 @@ class PlaceData(object):
|
||||
:obj:`*keys`.
|
||||
If :obj:`*keys` is not given, the conversion is applied to all present
|
||||
attributes."""
|
||||
self.device = device
|
||||
return self.apply(lambda x: x.to(device, **kwargs), *keys)
|
||||
|
||||
def cpu(self, *keys):
|
||||
@ -539,14 +530,15 @@ class PlaceData(object):
|
||||
|
||||
def prescale_by_site_width(self):
|
||||
# inplace scaling
|
||||
self.die_info /= self.site_width
|
||||
self.region_boxes /= self.site_width
|
||||
self.node_pos /= self.site_width
|
||||
self.node_lpos /= self.site_width
|
||||
self.node_size /= self.site_width
|
||||
self.pin_rel_cpos /= self.site_width
|
||||
self.pin_rel_lpos /= self.site_width
|
||||
self.pin_size /= self.site_width
|
||||
scalar_at = torch.tensor([self.site_width], dtype=torch.float32, device=self.die_info.device)
|
||||
self.die_info /= scalar_at
|
||||
self.region_boxes /= scalar_at
|
||||
self.node_pos /= scalar_at
|
||||
self.node_lpos /= scalar_at
|
||||
self.node_size /= scalar_at
|
||||
self.pin_rel_cpos /= scalar_at
|
||||
self.pin_rel_lpos /= scalar_at
|
||||
self.pin_size /= scalar_at
|
||||
self.__die_scale__ *= self.site_width
|
||||
return self
|
||||
|
||||
|
||||
@ -12,8 +12,8 @@ def get_trunc_node_pos_fn(mov_node_size, data):
|
||||
|
||||
def run_placement_main_nesterov(args, logger):
|
||||
total_start = time.time()
|
||||
setup_dataset_args(args)
|
||||
data, rawdb, gpdb = load_dataset(args, logger)
|
||||
params = find_design_params(args, logger)
|
||||
data, rawdb, gpdb = load_dataset(args, logger, params)
|
||||
device = torch.device(
|
||||
"cuda:{}".format(args.gpu) if torch.cuda.is_available() else "cpu"
|
||||
)
|
||||
|
||||
@ -3,4 +3,4 @@ from .logger import setup_logger
|
||||
from .visualization import *
|
||||
from .tools import *
|
||||
from .get_design_params import get_single_design_params, get_multiple_design_params, get_custom_design_params, get_custom_json_params
|
||||
from .setup_dataset import setup_dataset_args
|
||||
from .setup_dataset import find_design_params
|
||||
|
||||
@ -1,4 +1,41 @@
|
||||
def setup_dataset_args(args):
|
||||
from .get_design_params import get_single_design_params, get_custom_design_params, get_custom_json_params
|
||||
|
||||
|
||||
def find_design_params(args, logger, placement=None):
|
||||
if args.custom_path != "":
|
||||
params = get_custom_design_params(args)
|
||||
elif args.custom_json != "":
|
||||
logger.info("Detect json mode. Please make sure that tech_lef are included first.")
|
||||
params = get_custom_json_params(args)
|
||||
else:
|
||||
params = get_single_design_params(
|
||||
args.dataset_root, args.dataset, args.design_name, placement
|
||||
)
|
||||
log_design_params(logger, params)
|
||||
setup_design_args(args)
|
||||
return params
|
||||
|
||||
|
||||
def log_design_params(logger, params: dict):
|
||||
content = "Design Info:\n"
|
||||
num_items = 0
|
||||
if "benchmark" in params.keys():
|
||||
content += f"benchmark: {params['benchmark']}\n"
|
||||
num_items += 1
|
||||
if "design_name" in params.keys():
|
||||
content += f"design_name: {params['design_name']}\n"
|
||||
num_items += 1
|
||||
for key, value in params.items():
|
||||
if key == "design_name" or key == "benchmark":
|
||||
continue
|
||||
content += f"{key}: {value}"
|
||||
if num_items < len(params) - 1:
|
||||
content += "\n"
|
||||
num_items += 1
|
||||
logger.info(content)
|
||||
|
||||
|
||||
def setup_design_args(args):
|
||||
if args.design_name in ["adaptec1", "bigblue1"]:
|
||||
args.num_bin_x = args.num_bin_y = 512
|
||||
args.target_density = 1.0
|
||||
|
||||
Loading…
Reference in New Issue
Block a user