chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
"""Utils file for exploitation schedule"""
|
||||
|
||||
import json
|
||||
import os
|
||||
|
||||
import numpy as np # type: ignore
|
||||
|
||||
|
||||
def write_file(json_list: list, log: str = "/tmp/file.json", mode: str = "w") -> str:
|
||||
"""Write the log file
|
||||
|
||||
Parameters
|
||||
----------
|
||||
json_list: list
|
||||
The list input json
|
||||
log: Optional[str]
|
||||
Path destiny to save the log file
|
||||
mode: Optional[str]
|
||||
Mode save, "a" means append and "w" means write
|
||||
|
||||
Returns
|
||||
-------
|
||||
ret: str
|
||||
log path file
|
||||
"""
|
||||
with open(log, mode, encoding="utf-8") as outfile:
|
||||
for j in json_list:
|
||||
outfile.write(json.dumps(j) + "\n")
|
||||
return log
|
||||
|
||||
|
||||
def clean_file(filename: str) -> None:
|
||||
"""Clean temporary files
|
||||
|
||||
Parameters
|
||||
----------
|
||||
filename: str
|
||||
The filepath with remove from the system
|
||||
"""
|
||||
if os.path.isfile(filename):
|
||||
os.remove(filename)
|
||||
|
||||
|
||||
def get_time(log: str) -> list:
|
||||
"""Get the time from the log file
|
||||
|
||||
Parameters
|
||||
----------
|
||||
log: str
|
||||
log file
|
||||
|
||||
Returns
|
||||
-------
|
||||
ret: list
|
||||
A list with the best time and the json data
|
||||
"""
|
||||
best_time = [1e10, None]
|
||||
with open(log, encoding="utf-8") as log_file:
|
||||
for line in log_file.readlines():
|
||||
data = json.loads(line)
|
||||
params = data[1]
|
||||
time = params[1]
|
||||
if np.mean(best_time[0]) > np.mean(time):
|
||||
best_time = [time, data]
|
||||
return best_time
|
||||
|
||||
|
||||
def read_cfg_file(path_tuning_file: str, path_workload_file: str) -> dict[int, list]:
|
||||
"""Colect the info from meta logfile
|
||||
|
||||
Parameters
|
||||
----------
|
||||
log: str
|
||||
The input log path with the meta parameter
|
||||
|
||||
Returns
|
||||
-------
|
||||
ret: dict[layer, Union[time, dict]]
|
||||
Returns the best time, total time, and data
|
||||
"""
|
||||
workload_list = []
|
||||
with open(path_workload_file, encoding="utf-8") as log_file:
|
||||
for line in log_file.readlines():
|
||||
workload_list.append(json.loads(line))
|
||||
|
||||
cfg: dict[int, list] = dict()
|
||||
with open(path_tuning_file, encoding="utf-8") as log_file:
|
||||
for line in log_file.readlines():
|
||||
data = json.loads(line)
|
||||
layer = data[0]
|
||||
params = data[1]
|
||||
time = params[1]
|
||||
|
||||
if layer not in cfg.keys() or np.mean(cfg[layer][0]) > np.mean(time):
|
||||
cfg[layer] = [time, data, workload_list[layer]]
|
||||
return cfg
|
||||
Reference in New Issue
Block a user