huanx commited on
Commit
0566d23
·
verified ·
1 Parent(s): 1273cb1

Avoid upstream tile-mode divide-by-zero on small inputs

Browse files
Files changed (1) hide show
  1. app/runtime.py +13 -3
app/runtime.py CHANGED
@@ -145,7 +145,11 @@ class RealCuganRuntime:
145
  started = time.perf_counter()
146
  try:
147
  model = self._load_model(scale, variant)
148
- tile_candidates = self._candidate_tile_modes(tile_mode)
 
 
 
 
149
  cache_candidates = self._candidate_cache_modes(cache_mode)
150
  last_exc: Exception | None = None
151
  used_tile = tile_mode
@@ -336,9 +340,15 @@ class RealCuganRuntime:
336
  return digest.hexdigest()
337
 
338
  @staticmethod
339
- def _candidate_tile_modes(tile_mode: int) -> list[int]:
 
 
 
 
340
  ordered: list[int] = []
341
- for value in [tile_mode, 5, 4, 3, 2, 1, 0]:
 
 
342
  if value not in ordered:
343
  ordered.append(value)
344
  return ordered
 
145
  started = time.perf_counter()
146
  try:
147
  model = self._load_model(scale, variant)
148
+ tile_candidates = self._candidate_tile_modes(
149
+ tile_mode,
150
+ width=prepared.width,
151
+ height=prepared.height,
152
+ )
153
  cache_candidates = self._candidate_cache_modes(cache_mode)
154
  last_exc: Exception | None = None
155
  used_tile = tile_mode
 
340
  return digest.hexdigest()
341
 
342
  @staticmethod
343
+ def _candidate_tile_modes(tile_mode: int, *, width: int, height: int) -> list[int]:
344
+ short_edge = min(width, height)
345
+ safe_tile_mode = tile_mode
346
+ if tile_mode >= 2 and short_edge < 128:
347
+ safe_tile_mode = 1
348
  ordered: list[int] = []
349
+ for value in [safe_tile_mode, 5, 4, 3, 2, 1, 0]:
350
+ if value >= 2 and short_edge < 128:
351
+ continue
352
  if value not in ordered:
353
  ordered.append(value)
354
  return ordered