omniopt2 8328__py3-none-any.whl → 8340__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of omniopt2 might be problematic. Click here for more details.
- .omniopt.py +52 -68
- omniopt +13 -11
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt.py +52 -68
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/omniopt +13 -11
- {omniopt2-8328.dist-info → omniopt2-8340.dist-info}/METADATA +1 -1
- {omniopt2-8328.dist-info → omniopt2-8340.dist-info}/RECORD +37 -37
- omniopt2.egg-info/PKG-INFO +1 -1
- pyproject.toml +1 -1
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.colorfunctions.sh +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.general.sh +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.helpers.py +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_cpu_ram_usage.py +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_general.py +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_gpu_usage.py +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_kde.py +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_scatter.py +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_scatter_generation_method.py +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_scatter_hex.py +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_time_and_exit_code.py +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_trial_index_result.py +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_worker.py +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.random_generator.py +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.shellscript_functions +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/.tpe.py +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/LICENSE +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/apt-dependencies.txt +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/omniopt_docker +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/omniopt_evaluate +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/omniopt_plot +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/omniopt_share +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/pylint.rc +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/requirements.txt +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/setup.py +0 -0
- {omniopt2-8328.data → omniopt2-8340.data}/data/bin/test_requirements.txt +0 -0
- {omniopt2-8328.dist-info → omniopt2-8340.dist-info}/WHEEL +0 -0
- {omniopt2-8328.dist-info → omniopt2-8340.dist-info}/licenses/LICENSE +0 -0
- {omniopt2-8328.dist-info → omniopt2-8340.dist-info}/top_level.txt +0 -0
.omniopt.py
CHANGED
|
@@ -804,6 +804,7 @@ class ConfigLoader:
|
|
|
804
804
|
gridsearch: bool
|
|
805
805
|
auto_exclude_defective_hosts: bool
|
|
806
806
|
debug: bool
|
|
807
|
+
debug_stack_trace_regex: Optional[str]
|
|
807
808
|
num_restarts: int
|
|
808
809
|
raw_samples: int
|
|
809
810
|
show_generate_time_table: bool
|
|
@@ -991,6 +992,8 @@ class ConfigLoader:
|
|
|
991
992
|
debug.add_argument('--prettyprint', help='Shows stdout and stderr in a pretty printed format', action='store_true', default=False)
|
|
992
993
|
debug.add_argument('--runtime_debug', help='Logs which functions use most of the time', action='store_true', default=False)
|
|
993
994
|
debug.add_argument('--debug_stack_regex', help='Only print debug messages if call stack matches any regex', type=str, default='')
|
|
995
|
+
debug.add_argument('--debug_stack_trace_regex', help='Show compact call stack with arrows if any function in stack matches regex', type=str, default=None)
|
|
996
|
+
|
|
994
997
|
debug.add_argument('--show_func_name', help='Show func name before each execution and when it is done', action='store_true', default=False)
|
|
995
998
|
|
|
996
999
|
def load_config(self: Any, config_path: str, file_format: str) -> dict:
|
|
@@ -2130,25 +2133,25 @@ def try_saving_to_db() -> None:
|
|
|
2130
2133
|
except Exception as e:
|
|
2131
2134
|
print_debug(f"Failed trying to save sqlite3-DB: {e}")
|
|
2132
2135
|
|
|
2133
|
-
def merge_with_job_infos(
|
|
2136
|
+
def merge_with_job_infos(df: pd.DataFrame) -> pd.DataFrame:
|
|
2134
2137
|
job_infos_path = os.path.join(get_current_run_folder(), "job_infos.csv")
|
|
2135
2138
|
if not os.path.exists(job_infos_path):
|
|
2136
|
-
return
|
|
2139
|
+
return df
|
|
2137
2140
|
|
|
2138
2141
|
job_df = pd.read_csv(job_infos_path)
|
|
2139
2142
|
|
|
2140
|
-
if 'trial_index' not in
|
|
2143
|
+
if 'trial_index' not in df.columns or 'trial_index' not in job_df.columns:
|
|
2141
2144
|
raise ValueError("Both DataFrames must contain a 'trial_index' column.")
|
|
2142
2145
|
|
|
2143
|
-
job_df_filtered = job_df[job_df['trial_index'].isin(
|
|
2146
|
+
job_df_filtered = job_df[job_df['trial_index'].isin(df['trial_index'])]
|
|
2144
2147
|
|
|
2145
|
-
new_cols = [col for col in job_df_filtered.columns if col != 'trial_index' and col not in
|
|
2148
|
+
new_cols = [col for col in job_df_filtered.columns if col != 'trial_index' and col not in df.columns]
|
|
2146
2149
|
|
|
2147
2150
|
job_df_reduced = job_df_filtered[['trial_index'] + new_cols]
|
|
2148
2151
|
|
|
2149
|
-
merged = pd.merge(
|
|
2152
|
+
merged = pd.merge(df, job_df_reduced, on='trial_index', how='left')
|
|
2150
2153
|
|
|
2151
|
-
old_cols = [col for col in
|
|
2154
|
+
old_cols = [col for col in df.columns if col != 'trial_index']
|
|
2152
2155
|
|
|
2153
2156
|
new_order = ['trial_index'] + new_cols + old_cols
|
|
2154
2157
|
|
|
@@ -2156,47 +2159,6 @@ def merge_with_job_infos(pd_frame: pd.DataFrame) -> pd.DataFrame:
|
|
|
2156
2159
|
|
|
2157
2160
|
return merged
|
|
2158
2161
|
|
|
2159
|
-
def reindex_trials(df: pd.DataFrame) -> pd.DataFrame:
|
|
2160
|
-
"""
|
|
2161
|
-
Ensure trial_index is sequential and arm_name unique.
|
|
2162
|
-
Keep arm_name unless all parameters except 'order', 'hostname', 'queue_time' match.
|
|
2163
|
-
"""
|
|
2164
|
-
if "trial_index" not in df.columns or "arm_name" not in df.columns:
|
|
2165
|
-
return df
|
|
2166
|
-
|
|
2167
|
-
# Sort by something stable (queue_time if available)
|
|
2168
|
-
sort_cols = ["queue_time"] if "queue_time" in df.columns else df.columns.tolist()
|
|
2169
|
-
df = df.sort_values(by=sort_cols, ignore_index=True)
|
|
2170
|
-
|
|
2171
|
-
# Mapping from "parameter signature" to assigned arm_name
|
|
2172
|
-
seen_signatures = {}
|
|
2173
|
-
new_arm_names = []
|
|
2174
|
-
|
|
2175
|
-
for new_idx, row in df.iterrows():
|
|
2176
|
-
# Create signature without 'order', 'hostname', 'queue_time', 'trial_index', 'arm_name'
|
|
2177
|
-
ignore_cols = {"order", "hostname", "queue_time", "trial_index", "arm_name"}
|
|
2178
|
-
signature = tuple((col, row[col]) for col in df.columns if col not in ignore_cols)
|
|
2179
|
-
|
|
2180
|
-
if signature in seen_signatures:
|
|
2181
|
-
# Collision → make a unique name
|
|
2182
|
-
base_name = seen_signatures[signature]
|
|
2183
|
-
suffix = 1
|
|
2184
|
-
new_name = f"{base_name}_{suffix}"
|
|
2185
|
-
while new_name in new_arm_names:
|
|
2186
|
-
suffix += 1
|
|
2187
|
-
new_name = f"{base_name}_{suffix}"
|
|
2188
|
-
new_arm_names.append(new_name)
|
|
2189
|
-
else:
|
|
2190
|
-
# First occurrence → use new_idx as trial index in name
|
|
2191
|
-
new_name = f"{new_idx}_0"
|
|
2192
|
-
seen_signatures[signature] = f"{new_idx}_0"
|
|
2193
|
-
new_arm_names.append(new_name)
|
|
2194
|
-
|
|
2195
|
-
df.at[new_idx, "trial_index"] = new_idx
|
|
2196
|
-
df.at[new_idx, "arm_name"] = new_name
|
|
2197
|
-
|
|
2198
|
-
return df
|
|
2199
|
-
|
|
2200
2162
|
def save_results_csv() -> Optional[str]:
|
|
2201
2163
|
if args.dryrun:
|
|
2202
2164
|
return None
|
|
@@ -2211,8 +2173,8 @@ def save_results_csv() -> Optional[str]:
|
|
|
2211
2173
|
save_checkpoint()
|
|
2212
2174
|
|
|
2213
2175
|
try:
|
|
2214
|
-
|
|
2215
|
-
write_csv(
|
|
2176
|
+
df = fetch_and_prepare_trials()
|
|
2177
|
+
write_csv(df, pd_csv)
|
|
2216
2178
|
write_json_snapshot(pd_json)
|
|
2217
2179
|
save_experiment_to_file()
|
|
2218
2180
|
|
|
@@ -2234,10 +2196,21 @@ def get_results_paths() -> tuple[str, str]:
|
|
|
2234
2196
|
def fetch_and_prepare_trials() -> pd.DataFrame:
|
|
2235
2197
|
ax_client.experiment.fetch_data()
|
|
2236
2198
|
df = ax_client.get_trials_data_frame()
|
|
2199
|
+
|
|
2200
|
+
#print("========================")
|
|
2201
|
+
#print("BEFORE merge_with_job_infos:")
|
|
2202
|
+
#print(df["generation_node"])
|
|
2237
2203
|
df = merge_with_job_infos(df)
|
|
2238
|
-
|
|
2204
|
+
#print("AFTER merge_with_job_infos:")
|
|
2205
|
+
#print(df["generation_node"])
|
|
2206
|
+
|
|
2207
|
+
return df
|
|
2239
2208
|
|
|
2240
2209
|
def write_csv(df, path: str) -> None:
|
|
2210
|
+
try:
|
|
2211
|
+
df = df.sort_values(by=["trial_index"], kind="stable").reset_index(drop=True)
|
|
2212
|
+
except KeyError:
|
|
2213
|
+
pass
|
|
2241
2214
|
df.to_csv(path, index=False, float_format="%.30f")
|
|
2242
2215
|
|
|
2243
2216
|
def write_json_snapshot(path: str) -> None:
|
|
@@ -5048,8 +5021,6 @@ def end_program(_force: Optional[bool] = False, exit_code: Optional[int] = None)
|
|
|
5048
5021
|
|
|
5049
5022
|
abandon_all_jobs()
|
|
5050
5023
|
|
|
5051
|
-
save_results_csv()
|
|
5052
|
-
|
|
5053
5024
|
if exit_code:
|
|
5054
5025
|
_exit = exit_code
|
|
5055
5026
|
|
|
@@ -7270,11 +7241,9 @@ def finish_previous_jobs(new_msgs: List[str] = []) -> None:
|
|
|
7270
7241
|
|
|
7271
7242
|
print_debug(f"Finishing jobs took {finishing_jobs_runtime} second(s)")
|
|
7272
7243
|
|
|
7273
|
-
save_results_csv()
|
|
7274
|
-
|
|
7275
|
-
save_checkpoint()
|
|
7276
|
-
|
|
7277
7244
|
if this_jobs_finished > 0:
|
|
7245
|
+
save_results_csv()
|
|
7246
|
+
save_checkpoint()
|
|
7278
7247
|
progressbar_description([*new_msgs, f"finished {this_jobs_finished} {'job' if this_jobs_finished == 1 else 'jobs'}"])
|
|
7279
7248
|
|
|
7280
7249
|
JOBS_FINISHED += this_jobs_finished
|
|
@@ -7589,8 +7558,6 @@ def execute_evaluation(_params: list) -> Optional[int]:
|
|
|
7589
7558
|
trial_counter += 1
|
|
7590
7559
|
|
|
7591
7560
|
progressbar_description("started new job")
|
|
7592
|
-
|
|
7593
|
-
save_results_csv()
|
|
7594
7561
|
except submitit.core.utils.FailedJobError as error:
|
|
7595
7562
|
handle_failed_job(error, trial_index, new_job)
|
|
7596
7563
|
trial_counter += 1
|
|
@@ -7881,8 +7848,6 @@ def get_batched_arms(nr_of_jobs_to_get: int) -> list:
|
|
|
7881
7848
|
|
|
7882
7849
|
print_debug(f"get_batched_arms: Finished with {len(batched_arms)} arm(s) after {attempts} attempt(s).")
|
|
7883
7850
|
|
|
7884
|
-
save_results_csv()
|
|
7885
|
-
|
|
7886
7851
|
return batched_arms
|
|
7887
7852
|
|
|
7888
7853
|
def fetch_next_trials(nr_of_jobs_to_get: int, recursion: bool = False) -> Tuple[Dict[int, Any], bool]:
|
|
@@ -7937,8 +7902,6 @@ def generate_trials(n: int, recursion: bool) -> Tuple[Dict[int, Any], bool]:
|
|
|
7937
7902
|
cnt += 1
|
|
7938
7903
|
trials_dict[trial_index] = arm.parameters
|
|
7939
7904
|
|
|
7940
|
-
save_results_csv()
|
|
7941
|
-
|
|
7942
7905
|
return _finalize_generation(trials_dict, cnt, n, start_time)
|
|
7943
7906
|
|
|
7944
7907
|
except Exception as e:
|
|
@@ -8819,10 +8782,6 @@ def execute_trials(
|
|
|
8819
8782
|
index_param_list.append(_args)
|
|
8820
8783
|
i += 1
|
|
8821
8784
|
|
|
8822
|
-
save_results_csv()
|
|
8823
|
-
|
|
8824
|
-
save_results_csv()
|
|
8825
|
-
|
|
8826
8785
|
start_time = time.time()
|
|
8827
8786
|
|
|
8828
8787
|
cnt = 0
|
|
@@ -9654,7 +9613,6 @@ def load_experiment_state() -> None:
|
|
|
9654
9613
|
state_path = get_current_run_folder("experiment_state.json")
|
|
9655
9614
|
|
|
9656
9615
|
if not os.path.exists(state_path):
|
|
9657
|
-
print(f"State file {state_path} does not exist, starting fresh")
|
|
9658
9616
|
return
|
|
9659
9617
|
|
|
9660
9618
|
if args.worker_generator_path:
|
|
@@ -11171,6 +11129,29 @@ def main_outside() -> None:
|
|
|
11171
11129
|
else:
|
|
11172
11130
|
end_program(True)
|
|
11173
11131
|
|
|
11132
|
+
def stack_trace_wrapper(func: Any, regex: Any = None) -> Any:
|
|
11133
|
+
pattern = re.compile(regex) if regex else None
|
|
11134
|
+
|
|
11135
|
+
def wrapped(*args, **kwargs):
|
|
11136
|
+
# nur prüfen ob diese Funktion den Trigger erfüllt
|
|
11137
|
+
if pattern and not pattern.search(func.__name__):
|
|
11138
|
+
return func(*args, **kwargs)
|
|
11139
|
+
|
|
11140
|
+
stack = inspect.stack()
|
|
11141
|
+
chain = []
|
|
11142
|
+
for frame in stack[1:]:
|
|
11143
|
+
fn = frame.function
|
|
11144
|
+
if fn in ("wrapped", "<module>"):
|
|
11145
|
+
continue
|
|
11146
|
+
chain.append(fn)
|
|
11147
|
+
|
|
11148
|
+
if chain:
|
|
11149
|
+
sys.stderr.write(" ⇒ ".join(reversed(chain)) + "\n")
|
|
11150
|
+
|
|
11151
|
+
return func(*args, **kwargs)
|
|
11152
|
+
|
|
11153
|
+
return wrapped
|
|
11154
|
+
|
|
11174
11155
|
def auto_wrap_namespace(namespace: Any) -> Any:
|
|
11175
11156
|
enable_beartype = any(os.getenv(v) for v in ("ENABLE_BEARTYPE", "CI"))
|
|
11176
11157
|
|
|
@@ -11200,6 +11181,9 @@ def auto_wrap_namespace(namespace: Any) -> Any:
|
|
|
11200
11181
|
if args.show_func_name:
|
|
11201
11182
|
wrapped = show_func_name_wrapper(wrapped)
|
|
11202
11183
|
|
|
11184
|
+
if args.debug_stack_trace_regex:
|
|
11185
|
+
wrapped = stack_trace_wrapper(wrapped, args.debug_stack_trace_regex)
|
|
11186
|
+
|
|
11203
11187
|
namespace[name] = wrapped
|
|
11204
11188
|
|
|
11205
11189
|
return namespace
|
omniopt
CHANGED
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
|
|
82
82
|
function end_all_bg_processes {
|
|
83
83
|
for bg_job_id in $(jobs -p | sed -e 's#.*][[:space:]]*+[[:space:]]*##' -e 's#[[:space:]].*##'); do
|
|
84
|
-
kill $bg_job_id 2>/dev/null >/dev/null
|
|
84
|
+
kill "$bg_job_id" 2>/dev/null >/dev/null
|
|
85
85
|
done
|
|
86
86
|
}
|
|
87
87
|
|
|
@@ -110,8 +110,8 @@
|
|
|
110
110
|
|
|
111
111
|
if (command -v sbatch >/dev/null && [[ -n "$SLURM_JOB_ID" ]]) || ! command -v sbatch >/dev/null; then
|
|
112
112
|
already_logging_this_command=1
|
|
113
|
-
exec 1> >(tee -ia $bash_logname)
|
|
114
|
-
exec 2> >(tee -ia $bash_logname >& 2)
|
|
113
|
+
exec 1> >(tee -ia "$bash_logname")
|
|
114
|
+
exec 2> >(tee -ia "$bash_logname" >& 2)
|
|
115
115
|
fi
|
|
116
116
|
else
|
|
117
117
|
echo "uuidgen is not installed. It's recommended you install it." >&2
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
ram_children=0
|
|
125
125
|
|
|
126
126
|
for pid in $(pgrep -P $$); do
|
|
127
|
-
child_ram=$(grep VmRSS /proc/$pid/status 2>/dev/null | awk '{print $2 / 1024}')
|
|
127
|
+
child_ram=$(grep VmRSS "/proc/$pid/status" 2>/dev/null | awk '{print $2 / 1024}')
|
|
128
128
|
ram_children=$(awk -v a="$ram_children" -v b="$child_ram" 'BEGIN {print a + b}')
|
|
129
129
|
done
|
|
130
130
|
|
|
@@ -170,7 +170,7 @@
|
|
|
170
170
|
while true; do
|
|
171
171
|
date_str=$(date +"%Y-%m-%d %H:%M:%S")
|
|
172
172
|
echo -e "\n\n$date_str -> $(show_ram)\n\n" >&2
|
|
173
|
-
sleep $n
|
|
173
|
+
sleep "$n"
|
|
174
174
|
done
|
|
175
175
|
}
|
|
176
176
|
|
|
@@ -400,7 +400,7 @@
|
|
|
400
400
|
fi
|
|
401
401
|
fi
|
|
402
402
|
|
|
403
|
-
exit $CODE
|
|
403
|
+
exit "$CODE"
|
|
404
404
|
}
|
|
405
405
|
|
|
406
406
|
function get_anon_user_id {
|
|
@@ -1188,7 +1188,7 @@ EOF
|
|
|
1188
1188
|
myexit 211
|
|
1189
1189
|
}
|
|
1190
1190
|
|
|
1191
|
-
bash omniopt $*
|
|
1191
|
+
bash omniopt "$*"
|
|
1192
1192
|
exit_code=$?
|
|
1193
1193
|
|
|
1194
1194
|
myexit $exit_code
|
|
@@ -1882,8 +1882,8 @@ EOF
|
|
|
1882
1882
|
tail_log_file
|
|
1883
1883
|
|
|
1884
1884
|
if [[ $already_logging_this_command -eq 0 ]]; then
|
|
1885
|
-
exec 1> >(tee -ia $bash_logname)
|
|
1886
|
-
exec 2> >(tee -ia $bash_logname >& 2)
|
|
1885
|
+
exec 1> >(tee -ia "$bash_logname")
|
|
1886
|
+
exec 2> >(tee -ia "$bash_logname" >& 2)
|
|
1887
1887
|
fi
|
|
1888
1888
|
|
|
1889
1889
|
|
|
@@ -1894,13 +1894,15 @@ EOF
|
|
|
1894
1894
|
fi
|
|
1895
1895
|
|
|
1896
1896
|
exit_code_sed=$(echo "$exit_code_lines" | sed -e 's#Exit-Code:*[[:space:]]*##i' -e 's#,.*##')
|
|
1897
|
-
|
|
1897
|
+
exit_code_sed_sed=$?
|
|
1898
|
+
if [ $exit_code_sed_sed -ne 0 ] || [ -z "$exit_code_sed" ]; then
|
|
1898
1899
|
echo "WARN: sed failed or no data after sed."
|
|
1899
1900
|
exit_code_sed=""
|
|
1900
1901
|
fi
|
|
1901
1902
|
|
|
1902
1903
|
exit_code_tail=$(echo "$exit_code_sed" | tail -n1)
|
|
1903
|
-
|
|
1904
|
+
exit_code_tail_tail=$?
|
|
1905
|
+
if [ $exit_code_tail_tail -ne 0 ] || [ -z "$exit_code_tail" ]; then
|
|
1904
1906
|
echo "WARN: tail failed or no data after tail."
|
|
1905
1907
|
exit_code_tail=""
|
|
1906
1908
|
fi
|
|
@@ -804,6 +804,7 @@ class ConfigLoader:
|
|
|
804
804
|
gridsearch: bool
|
|
805
805
|
auto_exclude_defective_hosts: bool
|
|
806
806
|
debug: bool
|
|
807
|
+
debug_stack_trace_regex: Optional[str]
|
|
807
808
|
num_restarts: int
|
|
808
809
|
raw_samples: int
|
|
809
810
|
show_generate_time_table: bool
|
|
@@ -991,6 +992,8 @@ class ConfigLoader:
|
|
|
991
992
|
debug.add_argument('--prettyprint', help='Shows stdout and stderr in a pretty printed format', action='store_true', default=False)
|
|
992
993
|
debug.add_argument('--runtime_debug', help='Logs which functions use most of the time', action='store_true', default=False)
|
|
993
994
|
debug.add_argument('--debug_stack_regex', help='Only print debug messages if call stack matches any regex', type=str, default='')
|
|
995
|
+
debug.add_argument('--debug_stack_trace_regex', help='Show compact call stack with arrows if any function in stack matches regex', type=str, default=None)
|
|
996
|
+
|
|
994
997
|
debug.add_argument('--show_func_name', help='Show func name before each execution and when it is done', action='store_true', default=False)
|
|
995
998
|
|
|
996
999
|
def load_config(self: Any, config_path: str, file_format: str) -> dict:
|
|
@@ -2130,25 +2133,25 @@ def try_saving_to_db() -> None:
|
|
|
2130
2133
|
except Exception as e:
|
|
2131
2134
|
print_debug(f"Failed trying to save sqlite3-DB: {e}")
|
|
2132
2135
|
|
|
2133
|
-
def merge_with_job_infos(
|
|
2136
|
+
def merge_with_job_infos(df: pd.DataFrame) -> pd.DataFrame:
|
|
2134
2137
|
job_infos_path = os.path.join(get_current_run_folder(), "job_infos.csv")
|
|
2135
2138
|
if not os.path.exists(job_infos_path):
|
|
2136
|
-
return
|
|
2139
|
+
return df
|
|
2137
2140
|
|
|
2138
2141
|
job_df = pd.read_csv(job_infos_path)
|
|
2139
2142
|
|
|
2140
|
-
if 'trial_index' not in
|
|
2143
|
+
if 'trial_index' not in df.columns or 'trial_index' not in job_df.columns:
|
|
2141
2144
|
raise ValueError("Both DataFrames must contain a 'trial_index' column.")
|
|
2142
2145
|
|
|
2143
|
-
job_df_filtered = job_df[job_df['trial_index'].isin(
|
|
2146
|
+
job_df_filtered = job_df[job_df['trial_index'].isin(df['trial_index'])]
|
|
2144
2147
|
|
|
2145
|
-
new_cols = [col for col in job_df_filtered.columns if col != 'trial_index' and col not in
|
|
2148
|
+
new_cols = [col for col in job_df_filtered.columns if col != 'trial_index' and col not in df.columns]
|
|
2146
2149
|
|
|
2147
2150
|
job_df_reduced = job_df_filtered[['trial_index'] + new_cols]
|
|
2148
2151
|
|
|
2149
|
-
merged = pd.merge(
|
|
2152
|
+
merged = pd.merge(df, job_df_reduced, on='trial_index', how='left')
|
|
2150
2153
|
|
|
2151
|
-
old_cols = [col for col in
|
|
2154
|
+
old_cols = [col for col in df.columns if col != 'trial_index']
|
|
2152
2155
|
|
|
2153
2156
|
new_order = ['trial_index'] + new_cols + old_cols
|
|
2154
2157
|
|
|
@@ -2156,47 +2159,6 @@ def merge_with_job_infos(pd_frame: pd.DataFrame) -> pd.DataFrame:
|
|
|
2156
2159
|
|
|
2157
2160
|
return merged
|
|
2158
2161
|
|
|
2159
|
-
def reindex_trials(df: pd.DataFrame) -> pd.DataFrame:
|
|
2160
|
-
"""
|
|
2161
|
-
Ensure trial_index is sequential and arm_name unique.
|
|
2162
|
-
Keep arm_name unless all parameters except 'order', 'hostname', 'queue_time' match.
|
|
2163
|
-
"""
|
|
2164
|
-
if "trial_index" not in df.columns or "arm_name" not in df.columns:
|
|
2165
|
-
return df
|
|
2166
|
-
|
|
2167
|
-
# Sort by something stable (queue_time if available)
|
|
2168
|
-
sort_cols = ["queue_time"] if "queue_time" in df.columns else df.columns.tolist()
|
|
2169
|
-
df = df.sort_values(by=sort_cols, ignore_index=True)
|
|
2170
|
-
|
|
2171
|
-
# Mapping from "parameter signature" to assigned arm_name
|
|
2172
|
-
seen_signatures = {}
|
|
2173
|
-
new_arm_names = []
|
|
2174
|
-
|
|
2175
|
-
for new_idx, row in df.iterrows():
|
|
2176
|
-
# Create signature without 'order', 'hostname', 'queue_time', 'trial_index', 'arm_name'
|
|
2177
|
-
ignore_cols = {"order", "hostname", "queue_time", "trial_index", "arm_name"}
|
|
2178
|
-
signature = tuple((col, row[col]) for col in df.columns if col not in ignore_cols)
|
|
2179
|
-
|
|
2180
|
-
if signature in seen_signatures:
|
|
2181
|
-
# Collision → make a unique name
|
|
2182
|
-
base_name = seen_signatures[signature]
|
|
2183
|
-
suffix = 1
|
|
2184
|
-
new_name = f"{base_name}_{suffix}"
|
|
2185
|
-
while new_name in new_arm_names:
|
|
2186
|
-
suffix += 1
|
|
2187
|
-
new_name = f"{base_name}_{suffix}"
|
|
2188
|
-
new_arm_names.append(new_name)
|
|
2189
|
-
else:
|
|
2190
|
-
# First occurrence → use new_idx as trial index in name
|
|
2191
|
-
new_name = f"{new_idx}_0"
|
|
2192
|
-
seen_signatures[signature] = f"{new_idx}_0"
|
|
2193
|
-
new_arm_names.append(new_name)
|
|
2194
|
-
|
|
2195
|
-
df.at[new_idx, "trial_index"] = new_idx
|
|
2196
|
-
df.at[new_idx, "arm_name"] = new_name
|
|
2197
|
-
|
|
2198
|
-
return df
|
|
2199
|
-
|
|
2200
2162
|
def save_results_csv() -> Optional[str]:
|
|
2201
2163
|
if args.dryrun:
|
|
2202
2164
|
return None
|
|
@@ -2211,8 +2173,8 @@ def save_results_csv() -> Optional[str]:
|
|
|
2211
2173
|
save_checkpoint()
|
|
2212
2174
|
|
|
2213
2175
|
try:
|
|
2214
|
-
|
|
2215
|
-
write_csv(
|
|
2176
|
+
df = fetch_and_prepare_trials()
|
|
2177
|
+
write_csv(df, pd_csv)
|
|
2216
2178
|
write_json_snapshot(pd_json)
|
|
2217
2179
|
save_experiment_to_file()
|
|
2218
2180
|
|
|
@@ -2234,10 +2196,21 @@ def get_results_paths() -> tuple[str, str]:
|
|
|
2234
2196
|
def fetch_and_prepare_trials() -> pd.DataFrame:
|
|
2235
2197
|
ax_client.experiment.fetch_data()
|
|
2236
2198
|
df = ax_client.get_trials_data_frame()
|
|
2199
|
+
|
|
2200
|
+
#print("========================")
|
|
2201
|
+
#print("BEFORE merge_with_job_infos:")
|
|
2202
|
+
#print(df["generation_node"])
|
|
2237
2203
|
df = merge_with_job_infos(df)
|
|
2238
|
-
|
|
2204
|
+
#print("AFTER merge_with_job_infos:")
|
|
2205
|
+
#print(df["generation_node"])
|
|
2206
|
+
|
|
2207
|
+
return df
|
|
2239
2208
|
|
|
2240
2209
|
def write_csv(df, path: str) -> None:
|
|
2210
|
+
try:
|
|
2211
|
+
df = df.sort_values(by=["trial_index"], kind="stable").reset_index(drop=True)
|
|
2212
|
+
except KeyError:
|
|
2213
|
+
pass
|
|
2241
2214
|
df.to_csv(path, index=False, float_format="%.30f")
|
|
2242
2215
|
|
|
2243
2216
|
def write_json_snapshot(path: str) -> None:
|
|
@@ -5048,8 +5021,6 @@ def end_program(_force: Optional[bool] = False, exit_code: Optional[int] = None)
|
|
|
5048
5021
|
|
|
5049
5022
|
abandon_all_jobs()
|
|
5050
5023
|
|
|
5051
|
-
save_results_csv()
|
|
5052
|
-
|
|
5053
5024
|
if exit_code:
|
|
5054
5025
|
_exit = exit_code
|
|
5055
5026
|
|
|
@@ -7270,11 +7241,9 @@ def finish_previous_jobs(new_msgs: List[str] = []) -> None:
|
|
|
7270
7241
|
|
|
7271
7242
|
print_debug(f"Finishing jobs took {finishing_jobs_runtime} second(s)")
|
|
7272
7243
|
|
|
7273
|
-
save_results_csv()
|
|
7274
|
-
|
|
7275
|
-
save_checkpoint()
|
|
7276
|
-
|
|
7277
7244
|
if this_jobs_finished > 0:
|
|
7245
|
+
save_results_csv()
|
|
7246
|
+
save_checkpoint()
|
|
7278
7247
|
progressbar_description([*new_msgs, f"finished {this_jobs_finished} {'job' if this_jobs_finished == 1 else 'jobs'}"])
|
|
7279
7248
|
|
|
7280
7249
|
JOBS_FINISHED += this_jobs_finished
|
|
@@ -7589,8 +7558,6 @@ def execute_evaluation(_params: list) -> Optional[int]:
|
|
|
7589
7558
|
trial_counter += 1
|
|
7590
7559
|
|
|
7591
7560
|
progressbar_description("started new job")
|
|
7592
|
-
|
|
7593
|
-
save_results_csv()
|
|
7594
7561
|
except submitit.core.utils.FailedJobError as error:
|
|
7595
7562
|
handle_failed_job(error, trial_index, new_job)
|
|
7596
7563
|
trial_counter += 1
|
|
@@ -7881,8 +7848,6 @@ def get_batched_arms(nr_of_jobs_to_get: int) -> list:
|
|
|
7881
7848
|
|
|
7882
7849
|
print_debug(f"get_batched_arms: Finished with {len(batched_arms)} arm(s) after {attempts} attempt(s).")
|
|
7883
7850
|
|
|
7884
|
-
save_results_csv()
|
|
7885
|
-
|
|
7886
7851
|
return batched_arms
|
|
7887
7852
|
|
|
7888
7853
|
def fetch_next_trials(nr_of_jobs_to_get: int, recursion: bool = False) -> Tuple[Dict[int, Any], bool]:
|
|
@@ -7937,8 +7902,6 @@ def generate_trials(n: int, recursion: bool) -> Tuple[Dict[int, Any], bool]:
|
|
|
7937
7902
|
cnt += 1
|
|
7938
7903
|
trials_dict[trial_index] = arm.parameters
|
|
7939
7904
|
|
|
7940
|
-
save_results_csv()
|
|
7941
|
-
|
|
7942
7905
|
return _finalize_generation(trials_dict, cnt, n, start_time)
|
|
7943
7906
|
|
|
7944
7907
|
except Exception as e:
|
|
@@ -8819,10 +8782,6 @@ def execute_trials(
|
|
|
8819
8782
|
index_param_list.append(_args)
|
|
8820
8783
|
i += 1
|
|
8821
8784
|
|
|
8822
|
-
save_results_csv()
|
|
8823
|
-
|
|
8824
|
-
save_results_csv()
|
|
8825
|
-
|
|
8826
8785
|
start_time = time.time()
|
|
8827
8786
|
|
|
8828
8787
|
cnt = 0
|
|
@@ -9654,7 +9613,6 @@ def load_experiment_state() -> None:
|
|
|
9654
9613
|
state_path = get_current_run_folder("experiment_state.json")
|
|
9655
9614
|
|
|
9656
9615
|
if not os.path.exists(state_path):
|
|
9657
|
-
print(f"State file {state_path} does not exist, starting fresh")
|
|
9658
9616
|
return
|
|
9659
9617
|
|
|
9660
9618
|
if args.worker_generator_path:
|
|
@@ -11171,6 +11129,29 @@ def main_outside() -> None:
|
|
|
11171
11129
|
else:
|
|
11172
11130
|
end_program(True)
|
|
11173
11131
|
|
|
11132
|
+
def stack_trace_wrapper(func: Any, regex: Any = None) -> Any:
|
|
11133
|
+
pattern = re.compile(regex) if regex else None
|
|
11134
|
+
|
|
11135
|
+
def wrapped(*args, **kwargs):
|
|
11136
|
+
# nur prüfen ob diese Funktion den Trigger erfüllt
|
|
11137
|
+
if pattern and not pattern.search(func.__name__):
|
|
11138
|
+
return func(*args, **kwargs)
|
|
11139
|
+
|
|
11140
|
+
stack = inspect.stack()
|
|
11141
|
+
chain = []
|
|
11142
|
+
for frame in stack[1:]:
|
|
11143
|
+
fn = frame.function
|
|
11144
|
+
if fn in ("wrapped", "<module>"):
|
|
11145
|
+
continue
|
|
11146
|
+
chain.append(fn)
|
|
11147
|
+
|
|
11148
|
+
if chain:
|
|
11149
|
+
sys.stderr.write(" ⇒ ".join(reversed(chain)) + "\n")
|
|
11150
|
+
|
|
11151
|
+
return func(*args, **kwargs)
|
|
11152
|
+
|
|
11153
|
+
return wrapped
|
|
11154
|
+
|
|
11174
11155
|
def auto_wrap_namespace(namespace: Any) -> Any:
|
|
11175
11156
|
enable_beartype = any(os.getenv(v) for v in ("ENABLE_BEARTYPE", "CI"))
|
|
11176
11157
|
|
|
@@ -11200,6 +11181,9 @@ def auto_wrap_namespace(namespace: Any) -> Any:
|
|
|
11200
11181
|
if args.show_func_name:
|
|
11201
11182
|
wrapped = show_func_name_wrapper(wrapped)
|
|
11202
11183
|
|
|
11184
|
+
if args.debug_stack_trace_regex:
|
|
11185
|
+
wrapped = stack_trace_wrapper(wrapped, args.debug_stack_trace_regex)
|
|
11186
|
+
|
|
11203
11187
|
namespace[name] = wrapped
|
|
11204
11188
|
|
|
11205
11189
|
return namespace
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
|
|
82
82
|
function end_all_bg_processes {
|
|
83
83
|
for bg_job_id in $(jobs -p | sed -e 's#.*][[:space:]]*+[[:space:]]*##' -e 's#[[:space:]].*##'); do
|
|
84
|
-
kill $bg_job_id 2>/dev/null >/dev/null
|
|
84
|
+
kill "$bg_job_id" 2>/dev/null >/dev/null
|
|
85
85
|
done
|
|
86
86
|
}
|
|
87
87
|
|
|
@@ -110,8 +110,8 @@
|
|
|
110
110
|
|
|
111
111
|
if (command -v sbatch >/dev/null && [[ -n "$SLURM_JOB_ID" ]]) || ! command -v sbatch >/dev/null; then
|
|
112
112
|
already_logging_this_command=1
|
|
113
|
-
exec 1> >(tee -ia $bash_logname)
|
|
114
|
-
exec 2> >(tee -ia $bash_logname >& 2)
|
|
113
|
+
exec 1> >(tee -ia "$bash_logname")
|
|
114
|
+
exec 2> >(tee -ia "$bash_logname" >& 2)
|
|
115
115
|
fi
|
|
116
116
|
else
|
|
117
117
|
echo "uuidgen is not installed. It's recommended you install it." >&2
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
ram_children=0
|
|
125
125
|
|
|
126
126
|
for pid in $(pgrep -P $$); do
|
|
127
|
-
child_ram=$(grep VmRSS /proc/$pid/status 2>/dev/null | awk '{print $2 / 1024}')
|
|
127
|
+
child_ram=$(grep VmRSS "/proc/$pid/status" 2>/dev/null | awk '{print $2 / 1024}')
|
|
128
128
|
ram_children=$(awk -v a="$ram_children" -v b="$child_ram" 'BEGIN {print a + b}')
|
|
129
129
|
done
|
|
130
130
|
|
|
@@ -170,7 +170,7 @@
|
|
|
170
170
|
while true; do
|
|
171
171
|
date_str=$(date +"%Y-%m-%d %H:%M:%S")
|
|
172
172
|
echo -e "\n\n$date_str -> $(show_ram)\n\n" >&2
|
|
173
|
-
sleep $n
|
|
173
|
+
sleep "$n"
|
|
174
174
|
done
|
|
175
175
|
}
|
|
176
176
|
|
|
@@ -400,7 +400,7 @@
|
|
|
400
400
|
fi
|
|
401
401
|
fi
|
|
402
402
|
|
|
403
|
-
exit $CODE
|
|
403
|
+
exit "$CODE"
|
|
404
404
|
}
|
|
405
405
|
|
|
406
406
|
function get_anon_user_id {
|
|
@@ -1188,7 +1188,7 @@ EOF
|
|
|
1188
1188
|
myexit 211
|
|
1189
1189
|
}
|
|
1190
1190
|
|
|
1191
|
-
bash omniopt $*
|
|
1191
|
+
bash omniopt "$*"
|
|
1192
1192
|
exit_code=$?
|
|
1193
1193
|
|
|
1194
1194
|
myexit $exit_code
|
|
@@ -1882,8 +1882,8 @@ EOF
|
|
|
1882
1882
|
tail_log_file
|
|
1883
1883
|
|
|
1884
1884
|
if [[ $already_logging_this_command -eq 0 ]]; then
|
|
1885
|
-
exec 1> >(tee -ia $bash_logname)
|
|
1886
|
-
exec 2> >(tee -ia $bash_logname >& 2)
|
|
1885
|
+
exec 1> >(tee -ia "$bash_logname")
|
|
1886
|
+
exec 2> >(tee -ia "$bash_logname" >& 2)
|
|
1887
1887
|
fi
|
|
1888
1888
|
|
|
1889
1889
|
|
|
@@ -1894,13 +1894,15 @@ EOF
|
|
|
1894
1894
|
fi
|
|
1895
1895
|
|
|
1896
1896
|
exit_code_sed=$(echo "$exit_code_lines" | sed -e 's#Exit-Code:*[[:space:]]*##i' -e 's#,.*##')
|
|
1897
|
-
|
|
1897
|
+
exit_code_sed_sed=$?
|
|
1898
|
+
if [ $exit_code_sed_sed -ne 0 ] || [ -z "$exit_code_sed" ]; then
|
|
1898
1899
|
echo "WARN: sed failed or no data after sed."
|
|
1899
1900
|
exit_code_sed=""
|
|
1900
1901
|
fi
|
|
1901
1902
|
|
|
1902
1903
|
exit_code_tail=$(echo "$exit_code_sed" | tail -n1)
|
|
1903
|
-
|
|
1904
|
+
exit_code_tail_tail=$?
|
|
1905
|
+
if [ $exit_code_tail_tail -ne 0 ] || [ -z "$exit_code_tail" ]; then
|
|
1904
1906
|
echo "WARN: tail failed or no data after tail."
|
|
1905
1907
|
exit_code_tail=""
|
|
1906
1908
|
fi
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
.general.sh,sha256=uyGMN8xNToQ0v50KoiYxm6jRmgf0orroOaodM_Nuq30,2107
|
|
4
4
|
.gitignore,sha256=GmSD6dE4AqN4_fhQUdAzydst60s3w3ePYxetTr3Et7c,3776
|
|
5
5
|
.helpers.py,sha256=posn69_5fnlCqU-jRTFaED0LoeC2uuQe6r9NuqvfHm0,31456
|
|
6
|
-
.omniopt.py,sha256=
|
|
6
|
+
.omniopt.py,sha256=x3P9kQE4AaARkcdxdNLxH9cR2lRwrmJhysaPSUUlLTQ,437114
|
|
7
7
|
.omniopt_plot_cpu_ram_usage.py,sha256=DbOAmdrbcZtsMnHJgHfeRngjtv6zX5J0axyua_dYezc,3932
|
|
8
8
|
.omniopt_plot_general.py,sha256=3iy-bPef8I5rTB3KRz-TuleMdgKDmVZ6c8LuNQhNwu0,6810
|
|
9
9
|
.omniopt_plot_gpu_usage.py,sha256=ojxVicwSoiyl7f3c-6lLuT2EpyPcSJKEcbp75LgDY2k,5107
|
|
@@ -21,51 +21,51 @@ LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
|
21
21
|
MANIFEST.in,sha256=L3QBXyL1TtyWxbAPsfjZdCfpeBrRuI5MSgdnvwdQ22Q,24
|
|
22
22
|
README.md,sha256=WJxay4TRM8wfK_k5C01SlizLUHgKqlMwa_PQwAxj-As,3221
|
|
23
23
|
apt-dependencies.txt,sha256=X5tBB8ZLW9XaFtRh8B7C2pIkSoxNNawqioDr0QZAtuM,149
|
|
24
|
-
omniopt,sha256=
|
|
24
|
+
omniopt,sha256=oRSHQZXeV-KGHaRD1elNmHWhRWMyrzD3GCGNia2El18,50978
|
|
25
25
|
omniopt_docker,sha256=XyEGZ71l-tUlAYUluVF39fGO3NLDRa8UyrwxmAsXWNI,3542
|
|
26
26
|
omniopt_evaluate,sha256=9oBh0_ikCuIz_aJQZrN0j39NDiIDYoSvEFmSVIoFjJE,23842
|
|
27
27
|
omniopt_plot,sha256=ze6Dz2k0w5jyUnfatAA7dk59nzQjKC_G36tDvJGWsfA,13696
|
|
28
28
|
omniopt_share,sha256=2KZcTjN_7vcxNjb4sLLiWgUc38pl2-6-Qwmgq6_nTb0,13856
|
|
29
|
-
pyproject.toml,sha256=
|
|
29
|
+
pyproject.toml,sha256=BRV02UKzM06tFSPDAtDdQkClOw4Lcj-GXX1dkNQ8VWQ,397
|
|
30
30
|
requirements.txt,sha256=-dJa3VXI74qUD39-aF6whZV6RTN7Dt7KE3o43PnFHqA,299
|
|
31
31
|
setup.cfg,sha256=HEc8uu6NpfxG5_AVh5SvXOpEFMNKPPPxgMIAH144vT4,38
|
|
32
32
|
test_requirements.txt,sha256=jpyZzAwbWR_qnoRqWvpBB5MUjIX9jVwynX2D-B-r8aA,487
|
|
33
33
|
.tests/pylint.rc,sha256=ZGtZjVgJtK_6tdwgscJneS-LUeDASjSVVz6veCkp9rw,22631
|
|
34
|
-
omniopt2-
|
|
35
|
-
omniopt2-
|
|
36
|
-
omniopt2-
|
|
37
|
-
omniopt2-
|
|
38
|
-
omniopt2-
|
|
39
|
-
omniopt2-
|
|
40
|
-
omniopt2-
|
|
41
|
-
omniopt2-
|
|
42
|
-
omniopt2-
|
|
43
|
-
omniopt2-
|
|
44
|
-
omniopt2-
|
|
45
|
-
omniopt2-
|
|
46
|
-
omniopt2-
|
|
47
|
-
omniopt2-
|
|
48
|
-
omniopt2-
|
|
49
|
-
omniopt2-
|
|
50
|
-
omniopt2-
|
|
51
|
-
omniopt2-
|
|
52
|
-
omniopt2-
|
|
53
|
-
omniopt2-
|
|
54
|
-
omniopt2-
|
|
55
|
-
omniopt2-
|
|
56
|
-
omniopt2-
|
|
57
|
-
omniopt2-
|
|
58
|
-
omniopt2-
|
|
59
|
-
omniopt2-
|
|
60
|
-
omniopt2-
|
|
61
|
-
omniopt2-
|
|
62
|
-
omniopt2-
|
|
63
|
-
omniopt2.egg-info/PKG-INFO,sha256=
|
|
34
|
+
omniopt2-8340.data/data/bin/.colorfunctions.sh,sha256=xxc08V3Fh_0Je20fkJMRO14u9VCSvMyOiMaDfioEyCY,1098
|
|
35
|
+
omniopt2-8340.data/data/bin/.general.sh,sha256=uyGMN8xNToQ0v50KoiYxm6jRmgf0orroOaodM_Nuq30,2107
|
|
36
|
+
omniopt2-8340.data/data/bin/.helpers.py,sha256=posn69_5fnlCqU-jRTFaED0LoeC2uuQe6r9NuqvfHm0,31456
|
|
37
|
+
omniopt2-8340.data/data/bin/.omniopt.py,sha256=x3P9kQE4AaARkcdxdNLxH9cR2lRwrmJhysaPSUUlLTQ,437114
|
|
38
|
+
omniopt2-8340.data/data/bin/.omniopt_plot_cpu_ram_usage.py,sha256=DbOAmdrbcZtsMnHJgHfeRngjtv6zX5J0axyua_dYezc,3932
|
|
39
|
+
omniopt2-8340.data/data/bin/.omniopt_plot_general.py,sha256=3iy-bPef8I5rTB3KRz-TuleMdgKDmVZ6c8LuNQhNwu0,6810
|
|
40
|
+
omniopt2-8340.data/data/bin/.omniopt_plot_gpu_usage.py,sha256=ojxVicwSoiyl7f3c-6lLuT2EpyPcSJKEcbp75LgDY2k,5107
|
|
41
|
+
omniopt2-8340.data/data/bin/.omniopt_plot_kde.py,sha256=uRLWr72TDKvj3AqJ0O0AvkKZ1ok1O1QpXnbfQQdo0nA,6873
|
|
42
|
+
omniopt2-8340.data/data/bin/.omniopt_plot_scatter.py,sha256=b0_CIqgyi6PztaUVJRL9X9XBTaOonh-yDH2hRxMGkH0,8403
|
|
43
|
+
omniopt2-8340.data/data/bin/.omniopt_plot_scatter_generation_method.py,sha256=rgKY_w1E516c9UucVaEvaKd8tCnoUq9xg-RrYSDzYEQ,4289
|
|
44
|
+
omniopt2-8340.data/data/bin/.omniopt_plot_scatter_hex.py,sha256=UKjw40c1eumgEcf0xqB-_SakX5PB6HD3u4VwBxbsgQo,10279
|
|
45
|
+
omniopt2-8340.data/data/bin/.omniopt_plot_time_and_exit_code.py,sha256=WUyl2uI59wsC1eSX_5uJHOrqcF-s5cUDIEu8u3IFMLU,6462
|
|
46
|
+
omniopt2-8340.data/data/bin/.omniopt_plot_trial_index_result.py,sha256=Xlo_dYTQNnxPhYakmgMM58CCcW9gUoXZ3gLap9RScTY,4578
|
|
47
|
+
omniopt2-8340.data/data/bin/.omniopt_plot_worker.py,sha256=VuluQq4W6KRR5RU08dxmDSFk5mbfDRkRJQFwwcLgAGw,4524
|
|
48
|
+
omniopt2-8340.data/data/bin/.random_generator.py,sha256=ezBBUXpez_QaGdpCglMcJ0KZPdQP0XdX5gnLzO1xhwU,2987
|
|
49
|
+
omniopt2-8340.data/data/bin/.shellscript_functions,sha256=9Yo5j3BBLDNVPwe2uNjHbVCbj3H1v1gC5Ju8KvPXfC4,13624
|
|
50
|
+
omniopt2-8340.data/data/bin/.tpe.py,sha256=xxQuTZFQHHobvZuqG8cP2y2ev8ifjlLvex3TOaNWq8w,6754
|
|
51
|
+
omniopt2-8340.data/data/bin/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
52
|
+
omniopt2-8340.data/data/bin/apt-dependencies.txt,sha256=X5tBB8ZLW9XaFtRh8B7C2pIkSoxNNawqioDr0QZAtuM,149
|
|
53
|
+
omniopt2-8340.data/data/bin/omniopt,sha256=oRSHQZXeV-KGHaRD1elNmHWhRWMyrzD3GCGNia2El18,50978
|
|
54
|
+
omniopt2-8340.data/data/bin/omniopt_docker,sha256=XyEGZ71l-tUlAYUluVF39fGO3NLDRa8UyrwxmAsXWNI,3542
|
|
55
|
+
omniopt2-8340.data/data/bin/omniopt_evaluate,sha256=9oBh0_ikCuIz_aJQZrN0j39NDiIDYoSvEFmSVIoFjJE,23842
|
|
56
|
+
omniopt2-8340.data/data/bin/omniopt_plot,sha256=ze6Dz2k0w5jyUnfatAA7dk59nzQjKC_G36tDvJGWsfA,13696
|
|
57
|
+
omniopt2-8340.data/data/bin/omniopt_share,sha256=2KZcTjN_7vcxNjb4sLLiWgUc38pl2-6-Qwmgq6_nTb0,13856
|
|
58
|
+
omniopt2-8340.data/data/bin/pylint.rc,sha256=ZGtZjVgJtK_6tdwgscJneS-LUeDASjSVVz6veCkp9rw,22631
|
|
59
|
+
omniopt2-8340.data/data/bin/requirements.txt,sha256=-dJa3VXI74qUD39-aF6whZV6RTN7Dt7KE3o43PnFHqA,299
|
|
60
|
+
omniopt2-8340.data/data/bin/setup.py,sha256=zg7k4jeHXEdaGWGeB1mPC14fFj-hqz1vNimnU0JcMyk,4632
|
|
61
|
+
omniopt2-8340.data/data/bin/test_requirements.txt,sha256=jpyZzAwbWR_qnoRqWvpBB5MUjIX9jVwynX2D-B-r8aA,487
|
|
62
|
+
omniopt2-8340.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
63
|
+
omniopt2.egg-info/PKG-INFO,sha256=E9R5lynVhc8Ln9cFEPG0PgJDwjaZa_mP6s0zdp_5adQ,5740
|
|
64
64
|
omniopt2.egg-info/SOURCES.txt,sha256=2mSVIhM8Ncyl5_s8ZFBlb6qjRDbTCQmV9FwVVjp5ROE,795
|
|
65
65
|
omniopt2.egg-info/dependency_links.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
66
66
|
omniopt2.egg-info/requires.txt,sha256=aCvaeeNulrw3AspOfG7FYwkso3fOUXeUqioyYvEnyFI,786
|
|
67
67
|
omniopt2.egg-info/top_level.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
68
|
-
omniopt2-
|
|
69
|
-
omniopt2-
|
|
70
|
-
omniopt2-
|
|
71
|
-
omniopt2-
|
|
68
|
+
omniopt2-8340.dist-info/METADATA,sha256=E9R5lynVhc8Ln9cFEPG0PgJDwjaZa_mP6s0zdp_5adQ,5740
|
|
69
|
+
omniopt2-8340.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
70
|
+
omniopt2-8340.dist-info/top_level.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
71
|
+
omniopt2-8340.dist-info/RECORD,,
|
omniopt2.egg-info/PKG-INFO
CHANGED
pyproject.toml
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{omniopt2-8328.data → omniopt2-8340.data}/data/bin/.omniopt_plot_scatter_generation_method.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|