euler-eval 2.1.0__tar.gz → 2.2.0__tar.gz
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.
- {euler_eval-2.1.0 → euler_eval-2.2.0}/PKG-INFO +1 -1
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/evaluate.py +51 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval.egg-info/PKG-INFO +1 -1
- {euler_eval-2.1.0 → euler_eval-2.2.0}/pyproject.toml +1 -1
- {euler_eval-2.1.0 → euler_eval-2.2.0}/README.md +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/__init__.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/cli.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/data.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/__init__.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/absrel.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/daniel_error.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/depth_binned_error.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/depth_edge_f1.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/depth_standard.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/fid_kid.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/gpu_depth_batch.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/gpu_image_batch.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/high_freq_energy.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/lpips_metric.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/normal_consistency.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/psnr.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/rgb_edge_f1.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/rgb_lpips.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/rgb_psnr_ssim.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/rho_a.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/rmse.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/scale_invariant_log.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/ssim.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/tail_errors.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/utils.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/sanity_checker.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/utils/hierarchy_parser.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval.egg-info/SOURCES.txt +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval.egg-info/dependency_links.txt +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval.egg-info/entry_points.txt +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval.egg-info/requires.txt +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval.egg-info/top_level.txt +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/init_cache.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/setup.cfg +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_alignment.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_cli_device.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_config.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_data.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_depth_alignment_output.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_depth_standard.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_evaluate_helpers.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_init_cache.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_integration.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_meta_output.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_rgb_fid_output.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_rho_a.py +0 -0
- {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_save_results.py +0 -0
|
@@ -310,6 +310,55 @@ def _identity_collate(batch):
|
|
|
310
310
|
return batch[0]
|
|
311
311
|
|
|
312
312
|
|
|
313
|
+
_sharing_strategy_set = False
|
|
314
|
+
_fd_limit_raised = False
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
def _ensure_file_system_sharing() -> None:
|
|
318
|
+
"""Switch torch multiprocessing to the ``file_system`` sharing strategy.
|
|
319
|
+
|
|
320
|
+
The default ``file_descriptor`` strategy hands tensor storage between
|
|
321
|
+
workers and the main process via file descriptors; long DataLoader
|
|
322
|
+
runs accumulate FDs and eventually trip ``EMFILE`` ("Too many open
|
|
323
|
+
files") mid-iteration. ``file_system`` uses ``/dev/shm`` file-backed
|
|
324
|
+
storage instead, sidestepping the FD cap. Idempotent.
|
|
325
|
+
"""
|
|
326
|
+
global _sharing_strategy_set
|
|
327
|
+
if _sharing_strategy_set:
|
|
328
|
+
return
|
|
329
|
+
try:
|
|
330
|
+
import torch.multiprocessing as torch_mp
|
|
331
|
+
|
|
332
|
+
torch_mp.set_sharing_strategy("file_system")
|
|
333
|
+
except (RuntimeError, AttributeError, ValueError):
|
|
334
|
+
pass
|
|
335
|
+
_sharing_strategy_set = True
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
def _raise_fd_soft_limit() -> None:
|
|
339
|
+
"""Raise ``RLIMIT_NOFILE`` soft cap to the hard cap.
|
|
340
|
+
|
|
341
|
+
Belt-and-suspenders against ``EMFILE`` for environments where the
|
|
342
|
+
``file_system`` sharing strategy is unavailable (e.g. ``/dev/shm``
|
|
343
|
+
locked down) or still insufficient under long runs. The hard cap is
|
|
344
|
+
typically much higher than the default soft cap (e.g. 65536 vs 1024)
|
|
345
|
+
and raising only within that envelope needs no privileges. Idempotent
|
|
346
|
+
and best-effort: platforms without ``resource`` silently no-op.
|
|
347
|
+
"""
|
|
348
|
+
global _fd_limit_raised
|
|
349
|
+
if _fd_limit_raised:
|
|
350
|
+
return
|
|
351
|
+
try:
|
|
352
|
+
import resource
|
|
353
|
+
|
|
354
|
+
soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
|
|
355
|
+
if soft < hard:
|
|
356
|
+
resource.setrlimit(resource.RLIMIT_NOFILE, (hard, hard))
|
|
357
|
+
except (ImportError, ValueError, OSError):
|
|
358
|
+
pass
|
|
359
|
+
_fd_limit_raised = True
|
|
360
|
+
|
|
361
|
+
|
|
313
362
|
def _prefetched_iter(
|
|
314
363
|
dataset,
|
|
315
364
|
num_workers: int,
|
|
@@ -332,6 +381,8 @@ def _prefetched_iter(
|
|
|
332
381
|
yield i, dataset[i]
|
|
333
382
|
return
|
|
334
383
|
|
|
384
|
+
_raise_fd_soft_limit()
|
|
385
|
+
_ensure_file_system_sharing()
|
|
335
386
|
indices = list(range(skip, total))
|
|
336
387
|
subset = Subset(dataset, indices)
|
|
337
388
|
loader = DataLoader(
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|