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 *
|
from utils import *
|
||||||
|
|
||||||
|
|
||||||
def load_dataset(args, logger, placement=None):
|
def load_dataset(args, logger, params):
|
||||||
rawdb, gpdb = None, None
|
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()
|
parser = IOParser()
|
||||||
if args.load_from_raw:
|
if args.load_from_raw:
|
||||||
logger.info("loading from original benchmark...")
|
logger.info("loading from original benchmark...")
|
||||||
@ -116,9 +107,8 @@ class PlaceData(object):
|
|||||||
self.region_boxes = region_boxes
|
self.region_boxes = region_boxes
|
||||||
self.region_boxes_end = region_boxes_end
|
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)
|
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):
|
for node_id, celltype_name in enumerate(node_id2celltype_name):
|
||||||
if celltype_name.startswith("CORE/BUF"):
|
if celltype_name.startswith("CORE/BUF"):
|
||||||
self.node_special_type[node_id] = 1
|
self.node_special_type[node_id] = 1
|
||||||
@ -452,6 +442,7 @@ class PlaceData(object):
|
|||||||
:obj:`*keys`.
|
:obj:`*keys`.
|
||||||
If :obj:`*keys` is not given, the conversion is applied to all present
|
If :obj:`*keys` is not given, the conversion is applied to all present
|
||||||
attributes."""
|
attributes."""
|
||||||
|
self.device = device
|
||||||
return self.apply(lambda x: x.to(device, **kwargs), *keys)
|
return self.apply(lambda x: x.to(device, **kwargs), *keys)
|
||||||
|
|
||||||
def cpu(self, *keys):
|
def cpu(self, *keys):
|
||||||
@ -539,14 +530,15 @@ class PlaceData(object):
|
|||||||
|
|
||||||
def prescale_by_site_width(self):
|
def prescale_by_site_width(self):
|
||||||
# inplace scaling
|
# inplace scaling
|
||||||
self.die_info /= self.site_width
|
scalar_at = torch.tensor([self.site_width], dtype=torch.float32, device=self.die_info.device)
|
||||||
self.region_boxes /= self.site_width
|
self.die_info /= scalar_at
|
||||||
self.node_pos /= self.site_width
|
self.region_boxes /= scalar_at
|
||||||
self.node_lpos /= self.site_width
|
self.node_pos /= scalar_at
|
||||||
self.node_size /= self.site_width
|
self.node_lpos /= scalar_at
|
||||||
self.pin_rel_cpos /= self.site_width
|
self.node_size /= scalar_at
|
||||||
self.pin_rel_lpos /= self.site_width
|
self.pin_rel_cpos /= scalar_at
|
||||||
self.pin_size /= self.site_width
|
self.pin_rel_lpos /= scalar_at
|
||||||
|
self.pin_size /= scalar_at
|
||||||
self.__die_scale__ *= self.site_width
|
self.__die_scale__ *= self.site_width
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
|||||||
@ -12,8 +12,8 @@ def get_trunc_node_pos_fn(mov_node_size, data):
|
|||||||
|
|
||||||
def run_placement_main_nesterov(args, logger):
|
def run_placement_main_nesterov(args, logger):
|
||||||
total_start = time.time()
|
total_start = time.time()
|
||||||
setup_dataset_args(args)
|
params = find_design_params(args, logger)
|
||||||
data, rawdb, gpdb = load_dataset(args, logger)
|
data, rawdb, gpdb = load_dataset(args, logger, params)
|
||||||
device = torch.device(
|
device = torch.device(
|
||||||
"cuda:{}".format(args.gpu) if torch.cuda.is_available() else "cpu"
|
"cuda:{}".format(args.gpu) if torch.cuda.is_available() else "cpu"
|
||||||
)
|
)
|
||||||
|
|||||||
@ -3,4 +3,4 @@ from .logger import setup_logger
|
|||||||
from .visualization import *
|
from .visualization import *
|
||||||
from .tools 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 .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"]:
|
if args.design_name in ["adaptec1", "bigblue1"]:
|
||||||
args.num_bin_x = args.num_bin_y = 512
|
args.num_bin_x = args.num_bin_y = 512
|
||||||
args.target_density = 1.0
|
args.target_density = 1.0
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user