mirror of
https://github.com/vladmandic/automatic
synced 2026-09-05 04:20:44 +02:00
corrections as specified in PR conversation
This commit is contained in:
@@ -11,24 +11,13 @@ from scripts.rocm import rocm_profiles # pylint: disable=no-name-in-module
|
||||
|
||||
|
||||
def _check_rocm() -> bool:
|
||||
try:
|
||||
from modules import shared
|
||||
if getattr(shared.cmd_opts, 'use_rocm', False):
|
||||
return True
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
if installer.torch_info.get('type') == 'rocm':
|
||||
return True
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
import torch
|
||||
if hasattr(torch.version, 'hip') and torch.version.hip is not None:
|
||||
return True
|
||||
except Exception:
|
||||
pass
|
||||
return False
|
||||
from modules import shared
|
||||
if getattr(shared.cmd_opts, 'use_rocm', False):
|
||||
return True
|
||||
if installer.torch_info.get('type') == 'rocm':
|
||||
return True
|
||||
import torch # pylint: disable=import-outside-toplevel
|
||||
return hasattr(torch.version, 'hip') and torch.version.hip is not None
|
||||
|
||||
|
||||
is_rocm = _check_rocm()
|
||||
|
||||
+12
-64
@@ -13,38 +13,35 @@ class Script(scripts_manager.Script):
|
||||
return False
|
||||
|
||||
def ui(self, _is_img2img):
|
||||
from scripts.rocm import rocm_mgr, rocm_vars # pylint: disable=no-name-in-module
|
||||
|
||||
if not shared.cmd_opts.use_rocm and not installer.torch_info.get('type') == 'rocm': # skip ui creation if not rocm
|
||||
with gr.Accordion('ROCm: Advanced Config', open=False, elem_id='rocm_config'):
|
||||
gr.HTML("<p><b>ROCm is not installed.</b> This section is disabled.</p>")
|
||||
return []
|
||||
|
||||
from scripts.rocm import rocm_mgr, rocm_vars # pylint: disable=no-name-in-module
|
||||
|
||||
config = rocm_mgr.load_config()
|
||||
var_names = []
|
||||
components = []
|
||||
|
||||
def _make_component(name, meta, cfg):
|
||||
val = cfg.get(name, meta["default"])
|
||||
if meta["widget"] == "checkbox":
|
||||
widget = meta["widget"]
|
||||
if widget == "checkbox":
|
||||
dtype_tag = meta.get("dtype")
|
||||
label = f"[{dtype_tag}] {meta['desc']}" if dtype_tag else meta["desc"]
|
||||
return gr.Checkbox(label=label, value=(val == "1"), elem_id=f"rocm_var_{name.lower()}")
|
||||
elif meta["widget"] == "dropdown":
|
||||
if widget == "dropdown":
|
||||
choices = rocm_mgr._dropdown_choices(meta["options"])
|
||||
display = rocm_mgr._dropdown_display(val, meta["options"])
|
||||
return gr.Dropdown(label=meta["desc"], choices=choices, value=display, elem_id=f"rocm_var_{name.lower()}")
|
||||
else: # textbox
|
||||
return gr.Textbox(label=meta["desc"], value=rocm_mgr._expand_venv(val), lines=1)
|
||||
return gr.Textbox(label=meta["desc"], value=rocm_mgr._expand_venv(val), lines=1)
|
||||
|
||||
def _info_html():
|
||||
d = rocm_mgr.info()
|
||||
ts = "<style>#rocm_info_table table{width:100%;border-collapse:collapse;font-size:12px} #rocm_info_table td,#rocm_info_table th{padding:2px 8px;border-bottom:1px solid var(--sd-panel-border-color)} #rocm_info_table th{text-align:left;color:var(--sd-muted-color);font-weight:normal} #rocm_info_table td:first-child{color:var(--sd-muted-color);width:38%}</style>"
|
||||
rows = []
|
||||
def section(title):
|
||||
rows.append(f"<tr><th colspan='2' style='padding-top:6px;color:var(--highlight-color)'>{title}</th></tr>")
|
||||
rows.append(f"<tr><th colspan='2' style='padding-top:6px;text-align:left;color:var(--sd-main-accent-color)'>{title}</th></tr>")
|
||||
def row(k, v):
|
||||
rows.append(f"<tr><td>{k}</td><td>{v}</td></tr>")
|
||||
rows.append(f"<tr><td style='color:var(--sd-muted-color);width:38%;padding:2px 8px;border-bottom:1px solid var(--sd-panel-border-color)'>{k}</td><td style='padding:2px 8px;border-bottom:1px solid var(--sd-panel-border-color)'>{v}</td></tr>")
|
||||
section("ROCm / HIP")
|
||||
for k, v in d.get("rocm", {}).items():
|
||||
row(k, v)
|
||||
@@ -59,66 +56,17 @@ class Script(scripts_manager.Script):
|
||||
row("path", udb.get("path", ""))
|
||||
for fname, finfo in udb.get("files", {}).items():
|
||||
row(fname, finfo)
|
||||
return ts + f"<table>{''.join(rows)}</table>"
|
||||
return f"<table style='width:100%;border-collapse:collapse'>{''.join(rows)}</table>"
|
||||
|
||||
with gr.Accordion('ROCm: Advanced Config', open=False, elem_id='rocm_config'):
|
||||
gr.HTML("""<style>
|
||||
#rocm_btn_apply button { background: var(--button-primary-background-fill) !important; color: var(--button-primary-text-color) !important; border-color: var(--button-primary-border-color) !important; }
|
||||
#rocm_btn_apply button:hover { background: var(--button-primary-background-fill-hover) !important; border-color: var(--button-primary-border-color) !important; }
|
||||
#rocm_btn_delete button { color: var(--color-error) !important; border-color: var(--color-error) !important; background: transparent !important; }
|
||||
#rocm_btn_delete button:hover { background: color-mix(in srgb, var(--color-error) 12%, transparent) !important; }
|
||||
|
||||
/* Strip all block/group backgrounds and borders inside rocm_config */
|
||||
#rocm_config .block,
|
||||
#rocm_config .form,
|
||||
#rocm_config .gradio-group {
|
||||
background: transparent !important;
|
||||
box-shadow: none !important;
|
||||
border: none !important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
gap: 0 !important;
|
||||
}
|
||||
#rocm_config fieldset { border: none !important; padding: 0 !important; margin: 0 !important; box-shadow: none !important; background: transparent !important; }
|
||||
/* No horizontal overflow on the container */
|
||||
#rocm_config { overflow-x: hidden !important; }
|
||||
/* Smaller text for dense solver checkbox lists */
|
||||
#rocm_config .gradio-checkbox label { font-size: 11px !important; line-height: 1.4 !important; }
|
||||
|
||||
/* CSS-only tooltips — script tags are sanitized by Gradio */
|
||||
#rocm_btn_info, #rocm_btn_apply, #rocm_btn_reset, #rocm_btn_clear, #rocm_btn_delete,
|
||||
#rocm_btn_rdna2, #rocm_btn_rdna3, #rocm_btn_rdna4 { position: relative !important; overflow: visible !important; }
|
||||
#rocm_btn_info::after { content: "Reload DB and device version info"; }
|
||||
#rocm_btn_apply::after { content: "Save and apply current settings to runtime"; }
|
||||
#rocm_btn_reset::after { content: "Reset all settings to built-in defaults"; }
|
||||
#rocm_btn_clear::after { content: "Remove all MIOpen/HIP vars from runtime env"; }
|
||||
#rocm_btn_delete::after { content: "Delete saved config + wipe MIOpen user DB cache"; }
|
||||
#rocm_btn_rdna2::after { content: "Apply RDNA2 (RX 6000 series) solver profile"; }
|
||||
#rocm_btn_rdna3::after { content: "Apply RDNA3 (RX 7000 series) solver profile"; }
|
||||
#rocm_btn_rdna4::after { content: "Apply RDNA4 (RX 9000 series) solver profile"; }
|
||||
#rocm_btn_info::after, #rocm_btn_apply::after, #rocm_btn_reset::after,
|
||||
#rocm_btn_clear::after, #rocm_btn_delete::after,
|
||||
#rocm_btn_rdna2::after, #rocm_btn_rdna3::after, #rocm_btn_rdna4::after {
|
||||
display: block; position: absolute; top: calc(100% + 4px); left: 0;
|
||||
background: var(--background-fill-secondary, #2a2a2a);
|
||||
color: var(--body-text-color, #ddd);
|
||||
border: 1px solid var(--border-color-primary, #555);
|
||||
padding: 3px 8px; border-radius: 4px; font-size: 11px;
|
||||
white-space: nowrap; pointer-events: none;
|
||||
opacity: 0; transition: opacity 0.15s; z-index: 999;
|
||||
}
|
||||
#rocm_btn_info:hover::after, #rocm_btn_apply:hover::after, #rocm_btn_reset:hover::after,
|
||||
#rocm_btn_clear:hover::after, #rocm_btn_delete:hover::after,
|
||||
#rocm_btn_rdna2:hover::after, #rocm_btn_rdna3:hover::after, #rocm_btn_rdna4:hover::after { opacity: 1; }
|
||||
</style>""")
|
||||
with gr.Row():
|
||||
gr.HTML("<p>Advanced configuration for ROCm users.</p><br><p>Set your database and solver selections based on GPU profile or individually.</p><br><p>Enable cuDNN in Backend Settings to activate MIOpen.</p>")
|
||||
with gr.Row():
|
||||
btn_info = gr.Button("Refresh Info", variant="primary", elem_id="rocm_btn_info", size="sm")
|
||||
btn_apply = gr.Button("Apply", elem_id="rocm_btn_apply", size="sm")
|
||||
btn_apply = gr.Button("Apply", variant="primary", elem_id="rocm_btn_apply", size="sm")
|
||||
btn_reset = gr.Button("Defaults", elem_id="rocm_btn_reset", size="sm")
|
||||
btn_clear = gr.Button("Clear vEnv", elem_id="rocm_btn_clear", size="sm")
|
||||
btn_delete = gr.Button("Delete UserDb", elem_id="rocm_btn_delete", size="sm")
|
||||
btn_clear = gr.Button("Clear Run Vars", elem_id="rocm_btn_clear", size="sm")
|
||||
btn_delete = gr.Button("Delete UserDb", variant="stop", elem_id="rocm_btn_delete", size="sm")
|
||||
with gr.Row():
|
||||
btn_rdna2 = gr.Button("RDNA2 (RX 6000)", elem_id="rocm_btn_rdna2")
|
||||
btn_rdna3 = gr.Button("RDNA3 (RX 7000)", elem_id="rocm_btn_rdna3")
|
||||
|
||||
Reference in New Issue
Block a user